1. Hệ thống giám sát camera
nhận diện khuôn mặt
Báo cáo nghiên cứuQ2 – 2018
Người thực hiện:Triệu MinhTiến
Thời gian: 25/05 ~ 01/06
2. Giới thiệu Topic
• Động cơ: Văn phòng VietnamLab Hà Nội có người lạ vào khi không ai
có mặt, không đảm bảo về mặt security (giấy tờ, trang thiết bị của công
ty)
• Do đó:
• Công ty cần trang bị camera giám sát.
• Nâng cao tính năng giám sát của camera:
• Nhận diện được người của công ty
• Phát hiện người lạ
3. Các giai đoạn nghiên cứu
• Giai đoạn 1: Lấy dữ liệu hình ảnh của camera
• Giai đoạn 2: Huấn luyện model nhận diện nhân viên VietnamLab Hà Nội
• Giai đoạn 3: Xây dựng hệ thống camera giám sát của VietnamLab Hà Nội
4. Các giai đoạn nghiên cứu
• Giai đoạn 1: Lấy dữ liệu hình ảnh của camera
• Giai đoạn 2: Huấn luyện model nhận diện nhân viên VietnamLab Hà Nội
• Giai đoạn 3: Xây dựng hệ thống camera giám sát của VietnamLab Hà Nội
5. Giai đoạn 1: IP Camera
• IP Camera – Internet Protocol
Camera: chỉ những camera cho
phép truy cập trực tiếp thông
qua kết nối mạng
• Có 2 loại IP Camera chính:
• Tập trung (centralized): cần một bộ
NVR
• Phi tập trung (decentralized): không
cần NVR
6. Truy cập IP Camera
• 2 cách chính
• Thông qua Internet
• Thông qua LAN
7. Truy cập thông qua Internet
• Truy cập từ bất cứ đâu thông qua ứng dụng trên smartphone
• Hầu hết các camera đều hỗ trợ cách này
• Nguyên lý hoạt động: P2P
• Mỗi một camera sẽ được cấp một UID, có thiết lập username/password
• Ứng dụng trên smartphone (client) gửi request đến P2P server
• P2P server xác nhận UID và username/password
• P2P server làm trung gian tạo một kết nối trực tiếp giữa IP camera và client
• IP camera truyền dữ liệu (hình ảnh, âm thanh) tới client
• Client gửi tín hiệu âm thanh (và lệnh điều khiển với IP camera hỗ trợ PTZ) theo
chiều ngược lại
8. Truy cập thông qua LAN
• IP camera khi kết nối với router sẽ được cấp một địa chỉ IP trong LAN
• Một số loại camera hỗ trợ việc truy cập và cài đặt thông số qua địa chỉ
IP này
• Để truy cập và xem hình ảnh trực tiếp của camera từ LAN thì camera
phải hỗ trợ một trong các giao thức streaming sau:
• HLS (HTTP Live Streaming): Apple phát triển
• RTSP (Real time streaming protocol): RealNetworks, Netscape and Columbia
University phát triển
• RTMP (Real time messaging protocol): Adobe phát triển
• WebRTC (Web Real time Communication): Google phát triển
9. Thực tế nghiên cứu
• Cần truy cập vào live streaming của IP Camera để nhận diện khuôn mặt
• Cách qua Internet: quá phức tạp
• Cách qua LAN:
• Thử với 4 camera:
• Tàu xuất Việt (siêu rẻ 400K): chất lượng hình ảnh quá tệ, trả hàng ngay lập tức
• Nhật xách tay (Planex QR-220): hỗ trợ thiết lập camera nhưng không hỗ trợ streaming qua
LAN
• Tàu xuất Nhật (SkyGenius): hỗ trợ giao thức RTMP, streaming URL cần khá nhiều tham số
phức tạp, hết hạn theo session nên khó khăn trong việc xây dựng streaming server ở giai
đoạn sau.
• USA xuất Việt (KBVision KX-H30WN): hỗ trợ giao thức RTSP, hỗ trợ chuẩn ONVIF nên bắt
URL streaming dễ dàng thông qua phần mềm ONVIF Device Manager.
• Chọn IP Camera KBVision KX-H30WN
10. Các giai đoạn nghiên cứu
• Giai đoạn 1: Lấy dữ liệu hình ảnh của camera
• Giai đoạn 2: Huấn luyện model nhận diện nhân viên VietnamLab Hà Nội
• Giai đoạn 3: Xây dựng hệ thống camera giám sát của VietnamLab Hà Nội
11. Giai đoạn 2: Huấn luyện model nhận diện khuôn
mặt nhân viên VietnamLab Hà Nội
• Nhận diện khuôn mặt gồm 2 bước chính:
• Bước 1: Phát hiện mặt người trong bức ảnh
• Bước 2: Xác định khuôn mặt đã phát hiện là ai
Ngọc Trinh
12. Bước 1: Phát hiện mặt người trong bức ảnh
• Một số phương pháp nổi bật:
• Haar Cascade
• Histograms of Oriented Gradients (HOG)
• Deep Learning - Convolutional Neural Network
• MTCNN
13. Haar Cascade
• Đưa ra vào 2001
• Haar Features
• Adaboost
• Lựa chọn những feature tốt nhất
• Huấn luyện bộ phân loại mạnh mẽ: tổ hợp tuyến tính của các bộ phân loại yếu hơn
• https://youtu.be/hPCTwxF0qf4
Haar-like Features
14. Histograms of OrientedGradients - HOG
• HOG:thể hiệnsự thayđổi về sự sángtối trong
bức ảnh.
• Tại các nét trên khuônmặt cósự thayđổi sự
sáng tối rõ rệt
• HOG thể hiện được đường nét của khuôn mặt
• Sau khi huấnluyện với nhiều loại khuônmặt, thu
được pattern của khuônmặt
• So sánh pattern với các vùng trong bứcảnh để
phát hiện mặt người
15. Neural Network - Deep Learning
• Neural Network: mô phỏng mạng lưới
neural của con người
• Deep learning:
• Là Neural network
• “Deep”: nhiều layer (nhiều nút mạng)
• Đòi hỏi rất nhiều dữ liệu huấnluyện
• Yêu cầu máy tínhcấu hìnhcao
16. Convolutional Neural Network - CNN
• Neural Network phù hợpvới xử lý ảnh
• Convolution:tríchxuất feature từ ảnhđầuvào
• Phụ thuộc vào ma trận filter
• Cục bộ đối với từng khu vực trong bức ảnh
• Có tính chất tuyến tính
• NonLinearity(ReLU):Output= Max(Zero, Input)
• Tạo ra tính chất phi tuyến tính cho bộ phân loại
• Pooling:giảmkíchthướccủabộ feature,kiểmsoátoverfitting
• FullyConnected:
• Tạo tính chất phi tuyến tính cho bộ phân loại
• Sửdụng feature trích xuất từ các layer trước để phân loại (Softmax)
• Tham khảo:https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
17. MTCNN
• Multi-taskCascadedConvolutionalNetwork
• 3 bước, mỗi bước sử dụngmạngCNN riêng:P-Net, R-Net,O-
Net
• P-Net: Proposalnetwork,dựdoáncácvùng trongbứcảnh có thể là
khuônmặt (trong đó có nhiềuvùngkhôngphảikhuônmặt)
• R-Net: Refinenetwork,sửdụng đầura của P-Net để loạibỏ cácvùng
khôngphảikhuônmặt
• O-Net:Outputnetwork, sửdụng đầura của R-Net để đưa ra kết quả
cuốicùng cùngvới 5 faciallandmark(2 mắt + mũi + 2 khóemiệng)
18. Haar Cascade HOG MTCNN
- Nhanh nhất
- Chỉ hoạt động tốt với frontial
face
- Dễ bị ánh sáng môi trường
ảnh hưởng
- Nhanh thứ nhì
- Không hoạt động tốt khi mặt
bị che lấp nhiều
- Ít bị ảnh hưởng bởi ánh sáng
môi trường ngoài
- Nhanh thứ ba
- Hoạt động tốt ngay cả trong
trường hợp mặt bị thiếu, che
lấp nhiều
- Ít bị ảnh hưởng bởi ánh sáng
môi trường bên ngoài
19. Bước 2: Xác định khuôn mặt đã phát hiện là ai
• Phân biệt khuôn mặt của 2 người khác nhau như thế nào?
• Sử dụng Deep Learning
• FaceNet của Googlegiới thiệu năm2015 cho kết quả rất tốt
• Labeled Faces in the Wild (LFW):99.63%
• Youtube Faces DB: 95.12%
Bích Phương ?
Yua Ariga ?
20. Facenet
• Vectorgồm 128 feature chomỗi khuôn mặt
• Độ khác nhau: khoảngcáchƠ-clít
• Huấn luyện
• Triple loss
• Ảnh (1) của BíchPhươnglàmmốc
• Ảnh (2) củaBích Phương
• Ảnh (3) củaYuaAriga
• Hiệu chỉnh parameter của network sao cho
• Khoảngcáchgiữaảnh(1) và ảnh (2) là nhỏ nhất
• Khoảngcáchgiữaảnh(1) và ảnh (3) là lớn
• Sau khi huấn luyện trên tậpdữ liệu lớn thu
được modelcó khả năng phân biệt ảnh cùng
mộtngười và ảnh của người khác
(3) (1) (2)
(1)
(3)
(2)
(3)
(2)
(1)
21. OpenFace
• Open source – sử dụng FaceNet
• Homepage:
https://cmusatyalab.github.io/openface/
• Github:
https://github.com/cmusatyalab/openface
24. Thực tế nghiêncứu
• Bước 1:Thu thậpảnh chụpcủa cácnhân viênVietnamLab Hà Nội
• 5 thành viên: QuyTC, TienTM, MinhNC, AnhNT3, AnhNT4
• Bước 2: Sử dụng modelMTCNN để cắt mặt của 5 thànhviên trongcác bức ảnh để
tạo bộ dữ liệu huấnluyện
• Bước 3: Sử dụngmodel của FaceNet(với cấu trúc mạngneural là InceptionResNet
v1) được huấnluyện với bộ dữ liệu CASIA-WebFaceđểtạo ra vector128 feature
choảnh khuônmặt của 5 thànhviên.
• Bước 4: Sử dụngbộ dữ liệu 5 thành viên đã đượcvectorhóa để huấnluyện bộ
phân loạiSVM với đầu ra là xác suất của mộtkhuônmặt là 1 trong5 thànhviên
25. Các giai đoạn nghiên cứu
• Giai đoạn 1: Lấy dữ liệu hình ảnh của camera
• Giai đoạn 2: Huấn luyện model nhận diện nhân viên VietnamLab Hà Nội
• Giai đoạn 3: Xây dựng hệ thống camera giám sát của VietnamLab Hà Nội
26. Giai đoạn 3: Xây dựng hệ thống
• Streaming server
• nginx
• flask framework
• gunicorn
• Luồnghoạt động
• Truy cập vào RSTP url của camera đã lấy được ở giai đoạn 1
• Tách lấy từng frame của video stream
• Cho frame qua MTCNN model để phát hiện khuôn mặt người
• Cho khuôn mặt người đã phát hiện qua FaceNet model để tạo ra vector 128 feature
• Cho vector này qua bộ phân loại SVM đã được huấn luyện để tính xác suất mặt người là 1
trong 5 thành viên
• Nếu xác suất của thànhviênnào lớnhơn 0.6 thì nhậnđịnhlà thànhviênđó
• Nếu khôngcóthànhviên nàocó xácsuất lớnhơn 0.6 thì nhậnđịnhlà ngườilạ
• Trả frame sau khi đã phân tích về cho trình duyệt hiển thị
27. Demo
• Một số nhận xét
• Độ trễ so với thực tế khá cao vì tốn thời gian loadmodel vào bộ nhớ
• Có thể khắc phục bằng đa luồng
• Thời gianphântíchmột frame ở mức chấp nhậnđược với độ phân giải 720p
• Độ chính xác chưa tốt vì tập dữ liệu của nhân viênVietnamLabHà Nội chưa đủ lớn (mỗi
người chỉ có khoảng50 bức ảnh)