Deep learning và bài toán Face Recognition

deep-learning
face-indentification
one-shot-learning
triplet-loss

#22

A cho em hỏi thêm là nếu mỗi label chỉ có 1 image thì làm sao để chọn bộ 3 archo,positive,negative vậy?


#23

Nếu label chỉ có một image thì bạn có thể chọn nó làm negative cho các label khác. Điều này vẫn đảm bảo được tính clustering cho triplet.


#24

Thế việc chọn archor và positive là 1 ảnh thì việc tối ưu của triple loss có phải là vô nghĩa k ? Thế thì không khác gì với việc dùm softmax phải không anh?


#25

Không đâu bạn, do bài mình chưa nói rõ về triplet, loss của triplet ngoài là hiệu hai khoảng cách ra thì nó còn thêm một đại lượng margin giữa positive và negativ, nên tác dụng clustering của nó vẫn vậy thôi :smile:


#26

hay lắm pro :slight_smile: Hope to meet you soon to discuss about it :slight_smile:


#27

Hi @Tung_Trinh,

Cảm ơn bài viết của bạn. Bạn đã từng thử finetune facenet cho một datasets khác chưa? Nếu có thì bạn evaluate như thế nào?

  • Vấn đề nữa mình muốn hỏi là Face Recognition này chạy real-time có khả thi không? Vì nó qua khá nhiều step: Face detection, feature extraction, Identify

#28

mình đã thử fine tune nó cho dataset người châu Á rồi, kết quả khá là ổn, còn về tốc độ thì trên máy cpu i7 16 gb ram thì được 3-4 fps thôi, mình chưa thử gpu


#29

Hi @Tung_Trinh, Cảm ơn bài viết rất hay của bạn. Mình hiện tại đang có 1 bộ dataset mặt người Việt Nam, khoảng 1000000 ảnh, 2500 người, trung bình 400 ảnh/ người. Mình muốn fine tune lại mô hình facenet theo bộ data này. Mình muốn hỏi bạn một số thắc mắc:

  1. mình nên dùng hàm loss nào để train mô hình này.
  2. máy tính mình sử dụng ổ SSD, có GPU, core i7, 16Gb ram thì mô hình MTCNN-> facenet ->SVM thì có khả năng được bao nhiêu FPS. số class của mình là khoảng 1000 người.

#30

Mình từng làm thử trên pretrained model vgg-face kết hợp mtcnn, cosin_distance thấy chất lượng kết quả khá ổn, fps khoảng 20. Bạn có thể cho mình xin bộ dataset mặt người vn đc ko?


#31

Nếu có thể bạn chia sẻ dữ liệu cho mọi người cùng nghiên cứu được không. Cám ơn bạn.


#32

Anh em thông cảm, vì bộ dữ liệu này không thuộc về mình mà thuộc về tài sản của công ty mình, nên mình không có quyền publish. @Laitiende : Máy tính của bạn cấu hình tốt không mà được nhiều FPS vậy nhỉ, với lại số lượng người trong file embedding của bạn có nhiều không, mỗi người thì bạn lưu bao nhiêu embedding vậy ?


#34

Sorry bạn, mấy ngày hôm nay mình không vào forum. Máy mình chỉ dùng gtx 1060 6gb, data khoảng hơn 500 sao hollywood và khoảng 30 bạn bè mình, sử dụng mạng vgg-face(base on resnet50) để extract feature ra vector 2048 chiều rồi tính trực tiếp cosin_distance mà không dùng triplet loss. Mỗi người mình lưu khỏng 3-5 embedding, dùng MTCNN để detect mặt, fps đc khoảng 13-15 nếu khung hình có một khuôn mặt, tụt xuống 8-10 nếu có 2, 3 khuôn mặt. Vì data cũ từ năm 2009 nên toàn sao hollywood cũ, khó kiếm video test nên mình chưa thử được nhiều, nhưng với bạn bè mình thì khá chính xác, trừ khi khuôn mặt quá mờ hoặc bị che khuất mới bị sai. Mình làm cái này cũng lâu rồi nên không biết có nhớ chính xác không nữa :smile:


#35

bạn sử dụng phương pháp gì để compare giữa faces đc tìm thấy trong frame với dữ liệu dataset? Còn về câu hỏi bao nhiêu hình là đủ cho 1 dataset của 1 nhân vật theo exp của mình là tầm 20 tấm nói chung là tầm 20-25 tấm gì đấy không nhất thiết cứ đúng 20 tấm ít hơn 1 chút cũng ko sao mà nhiều hơn 1 chút cũng ko ảnh hưởng lắm, nhiều quá thì nó sẽ bị lặp còn ít quá thì nó sẽ bị thiếu. Tạo 1 dataset thì theo mình bạn có thể sử dụng Bing API Của microsoft hoặc detect faces trong video rồi cắt phần chứa face. mình nghiên cứu về cái mảng nhận dạng khuôn mặt khá nhiều có thắc mắc có thể mail cho mình qua địa chỉ boybanlinh95@gmail.com.


#36

bác sử dụng CNN à CNN phải máy GPU kìa CPU với raspi chạy muốn gãy luôn


#37

Mình cũng đang tìm hiểu về mạng FaceNet này và thấy trong paper có đề cập đến Face Verification và có một số thức mắc:

  • Liệu FaceNet có thể biết được 2 faces nằm ngoài dataset của cùng 1 người hay 2 người khác nhau mà không cần phải qua training lại không?

  • Nếu điều trên khả thi thì có thể áp dụng threshold của tập dataset cho nó không và việc sử dụng model pre-trained trên các tập dataset khác nhau có ảnh hưởng đến kết quả trên không?

Không biết đã có bạn nào đã thử nghiệm việc này có thể giải đáp giúp mình được không? Thank you


#38

Dear anh, Em cũng đang tìm hiểu về thuật toán facenet. Em chỉ có một thắc mắc trong cách phân chia minibatch như sau:

  1. Kích thước minibatch khoảng bao nhiêu thì hợp lý?
  2. Trong một minibatch sẽ có nhiều anchor hay mỗi một minibatch sẽ chỉ có 1 anchor?
  3. Trong một minibatch có qui định bao nhiêu % ảnh của cùng một người để nhãn của anchor là đại diện cho người đó hay ta sẽ lấy minibatch ngẫu nhiên. Nếu lấy minibatch ngẫu nhiên làm sao có thể xác định được nhãn của anchor?
  4. Em hiểu rằng thuật toán này sẽ đưa các ảnh của một người (chiếm đa số) vào minibatch và cộng thêm các bức ảnh người khác làm nhiễu. Từ đó tìm ra embedding vector để xác định đặc trưng của 1 người và phân biệt với những đặc trưng từ người khác bị lẫn vào. Cách hiểu này của em có đúng không ah?

Cảm ơn anh về bài viết rất nhiều.