hiennguyen9874 / deepstream-face-recognition

Deepstream face detection & recognition
19 stars 9 forks source link

Great repo !! #1

Closed trgkyle closed 1 year ago

trgkyle commented 1 year ago

It's great, but there is a deepstream version of 6.1, can you support version 6.1?

trgkyle commented 1 year ago

Em đang thấy anh dùng model Yolo cho model detect, em thay thế dùng model Facenet có sẵn của Nvidia có được không anh, hay bắt buộc phải dùng Yolo model của anh (Primary Detect) với insight face (Secondary) mới recog được mặt ạ ?, model Yolo anh dùng không chỉ có detect mà có cả landmark ???

hiennguyen9874 commented 1 year ago

Hi bạn, do mô hình detect bao gồm cả bước esimate landmark để align face theo landmark (tham khảo cách align face ở đây) nên bạn không thể sử dụng mô hình facenet của nvidia. Ban có thể thay mô hình detect bằng mô hình retinaface, tuy nhiên khi sử dụng mô hình khác bạn phải custom lại customparser của deepstream tùy theo đầu ra của mô hình retinaface. Mô hình face recogniton chỉ nhận vào ảnh và extract ra feature vector của mặt nên bạn có thể sử dụng mô hình nào cũng được, có thể thay thế bằng các mô hình khác trong link tùy vào yêu cầu tốc độ và độ chính xác.

hiennguyen9874 commented 1 year ago

Mình đang cập nhật lên bản deepstream 6.1, sẽ cập nhật trong thời gian sắp tới.

trgkyle commented 1 year ago

Dạ vâng anh, cho em hỏi thêm em đang chạy repo anh và không sử dụng Faiss, featureVector em truyền đi từ Kafka như phần repo đã config sẵn, em đã lấy featureVector gửi đi để lưu và search thấy rất khó match ? em dùng Milvus Database (bản chất nó search theo thuật toán ANNS ?) liệu em có làm sai ở đâu không ạ ?

trgkyle commented 1 year ago

@hiennguyen9874 có phải models work chưa ổn phải không ạ ?

hiennguyen9874 commented 1 year ago

Mình có test thử mô hình recognition thì thấy hoạt động khá tốt. Ban có thể kiểm tra lại phần lưu vector vào database, mô hình extract feature vector sử dụng cosine distance nên bạn cần sử dụng cosine distance làm metric_type trong milvus, tuy nhiên theo mình mới search được thì milvus chỉ hỗ trợ euclidean distance và inner product (cái này bạn tìm hiểu thêm do mình chưa sài milvus bao giờ) nên bạn cần normalize vector trước khi lưu vào database, bạn có thẻ normalize tại bước customparser của deepstream. Thêm nữa, bạn cũng cần đảm bào vector lưu vào database lấy từ deepstream và vector dùng để search đi qua các bước và các mô hình giống nhau (detect, align face, extract feature), bạn có thể tham khảo triton của nvidia để detect và extract thông qua request từ client. Thanks!

trgkyle commented 1 year ago

Thanks a, em hiểu rồi ạ <3