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

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

#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


[11/14/2018 21:21] Cho em hỏi trong này có ai ntừng làm bài . . .
#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.


[11/15/2018 17:35] Mọi người cho em hỏi với ạ. Em đang tìm . . .
#41

Bạn ơi cho mình hỏi là bạn đã làm những step gì ạ


#42

Mọi người cho mình hỏi là hiện này các sản phẩm trong thực tế đã triển khai về nhận dạng khuôn mặt thì thường dùng mô hình mạng nào: FaceNet, VGG-Face, … hay mạng nào? Thanks


#43

Mình cũng có câu hỏi tương tự như bạn. Mình có đọc qua bình luận về cuộc thi AIVIVN

thì thấy mọi người hay dùng facenet và vgg2. Mình là người mới trong lĩnh vực này. nếu bạn muốn cùng học hỏi thì inbox trao đổi và bắt tay nhé :smiley:


#45

Cho mình một like đi bạn ơi hâm mộ quá!!


#46

cảm ơn anh, em cũng đang tìm cái này


#47

Thực hiện bước normalize cho tập dataset đã chuẩn bị. Cách normalize cũng giống như cách normalize cho CNN bình thường. Các bước train: Đầu vào là tập dataset đã chuẩn bị, CNN có thể là các CNN như inception, mobilenet,… với đầu ra là embbeding vector như đã nói, embedding vector này có thể có 128 chiều hoặc 512 chiều,… tùy ý. T

Anh ơi. cho em hỏi rõ chỗ normalize dataset này ạ

Em thử dùng MobilenetV1 bằng Keras, include_top=False, thì output từ last layer là 7x7x1024. Như vậy output này embedding vector giống anh đã đề cập đúng không ạ. Selection_003