Yolo face detection Contents 1. GIỚI THIỆU CHUNG 2 1.1 Kiến trúc mạng YOLO 2 1.2 Output của YOLO 4 1.3 Dự báo trên nhiều feature map 6 1.4 Anchor Box 7 1.5 Hàm Loss function 8 1.6 Dự báo bouncing box 9 1.7 Nonmax suppression 10 2. Tìm hiểu CSDL và xử lí dữ liệu 12 3. Training sử dụng Darknet cho mô hình YOLOv3 trên Colab 13 4. Chạy thử trên môi trường Spyder của Anacoda 13
Hanoi University of Science & Technology Face Detection Using YOLO GIỚI THIỆU CHUNG Vài năm trở lại đây, object detection đề tài quan trọng deep learning khả ứng dụng cao, liệu dễ chuẩn bị kết ứng dụng nhiều Các thuật tốn object detection thực tác vụ dường real time, chí nhanh so với người mà độ xác khơng giảm Trong đó, YOLO - You Only Look Once khơng phải thuật tốn tốt thuật tốn nhanh lớp mơ hình object detection Các phiên mơ hình có cải tiến đáng kể sau phiên 1.1 Kiến trúc mạng YOLO YOLOv3 dự đốn bouncing box với kích thước khác Hệ thống trích xuất đặc tính từ kích thước cách sử dụng cấu trúc tương tự mạng kim tự tháp Từ đặc tính sở, thêm vài lớp convolutional Nguyên lý hoạt động mạng nơ ron tích chập (Convolutional Neural Network): Đây mạng nơ ron áp dụng layer Convolutional kết hợp với Maxpooling để giúp trích xuất đặc trưng ảnh tốt Khái niệm bounding box, anchor box: Bounding box khung hình bao quanh vật thể Anchor box khung hình có kích thước xác định trước, có tác dụng dự đốn bounding box 2|Page Hanoi University of Science & Technology Face Detection Using YOLO Feature map: Là khối output mà ta chia thành lưới vng áp dụng tìm kiếm phát vật thể cell Non-max suppression: Phương pháp giúp giảm thiểu nhiều bounding box overlap bounding box có xác suất lớn Kiến trúc YOLO bao gồm: base network mạng convolution làm nhiệm vụ trích xuất đặc trưng Phần phía sau Extra Layers áp dụng để phát vật thể feature map base network Trong YOLOv3 tác giả áp dụng mạng feature extractor darknet-53 Mạng gồm 53 convolutional layers kết nối liên tiếp, layer theo sau batch normalization activation Leaky Relu Để giảm kích thước output sau convolution layer, tác giả down sample filter với kích thước Mẹo có tác dụng giảm thiểu số lượng tham số cho mơ hình 3|Page Hanoi University of Science & Technology Face Detection Using YOLO Hình 1: Các layer mạng darknet-53 Các ảnh đưa vào mơ hình scale để chung kích thước phù hợp với input shape mơ hình sau gom lại thành batch đưa vào huấn luyện Hiện YOLO hỗ trợ đầu vào 416x416 608x608 Mỗi đầu vào có thiết kế layers riêng phù hợp với shape input Sau qua layer convolutional shape giảm dần theo cấp số nhân Cuối ta thu feature map có kích thước tương đối nhỏ để dự báo vật thể ô feature map 4|Page Hanoi University of Science & Technology Face Detection Using YOLO Kích thước feature map phụ thuộc vào đầu vào Đối với input 416x416 feature map có kích thước 13x13, 26x26 52x52 Và input 608x608 tạo feature map 19x19, 38x38, 72x72 1.2 Output YOLO Output mơ hình YOLO véc tơ bao gồm thành phần: Trong xác suất dự báo vật thể xuất bounding box giúp xác định bounding box Trong tọa độ tâm kích thước rộng, dài bounding box véc tơ phân phối xác suất dự báo classes Việc hiểu output quan trọng để cấu hình tham số chuẩn xác huấn luyện model qua open source darknet Như output xác định theo số lượng classes theo công thức (n_class+5) Nếu huấn luyện class bạn có output Trường hợp bạn áp dụng anchors/cell số lượng tham số output là: (n_class+5)×3=6×3=18 5|Page Hanoi University of Science & Technology Face Detection Using YOLO Hình 2: Kiến trúc output model YOLO Hình ảnh gốc feature map kích thước 13x13 Trên cell feature map lựa chọn anchor boxes với kích thước khác Box 1, Box 2, Box cho tâm anchor boxes trùng với cell Khi output YOLO véc tơ concatenate 6|Page Hanoi University of Science & Technology Face Detection Using YOLO bounding boxes Các thuộc tính bounding box mơ tả dịng cuối hình 1.3 Dự báo nhiều feature map YOLOv3 dự báo nhiều feature map Những feature map ban đầu có kích thước nhỏ giúp dự báo object kích thước lớn Những feature map sau có kích thước lớn anchor box giữ cố định kích thước nên giúp dự báo vật thể kích thước nhỏ Hình 3: Các feature maps mạng YOLOv3 với input shape 416x416, output feature maps có kích thước 13x13, 26x26 52x52 Trên cell feature map áp dụng anchor box để dự đoán vật thể Như số lượng anchor box khác mơ hình YOLO (3 featue map x anchor box) Đồng thời feature map hình vng S x S, mơ hình YOLOv3 sinh số lượng anchor box là: S x S x Như số lượng anchor boxes ảnh là: (13×13 + 26×26 + 52×52) × = 10647 (anchor boxes) Đây số lượng lớn nguyên nhân khiến q trình huấn luyện mơ hình YOLO vơ chậm cần dự báo đồng thời nhãn bounding box đồng thời 10647 bounding boxes Một số lưu ý huấn luyện YOLO: Khi huấn luyện YOLO cần phải có RAM dung lượng lớn để save 10647 bounding boxes kiến trúc Không thể thiết lập batch_size lớn mơ hình classification dễ Out of memory Package darknet 7|Page Hanoi University of Science & Technology Face Detection Using YOLO YOLO chia nhỏ batch thành subdivisions cho vừa với RAM Thời gian xử lý step YOLO lâu rất nhiều lần so với mơ hình classification Do nên thiết lập steps giới hạn huấn luyện cho YOLO nhỏ Đối với tác vụ nhận diện classes, 5000 steps thu nghiệm tạm chấp nhận Các mơ hình có nhiều classes tăng số lượng steps theo cấp số nhân tùy bạn 1.4 Anchor Box Để tìm bounding box cho vật thể, YOLO cần anchor box làm sở ước lượng Những anchor box xác định trước bao quanh vật thể cách tương đối xác Sau thuật toán regression bounding box tinh chỉnh lại anchor box để tạo bounding box dự đoán cho vật thể Trong mơ hình YOLO: Mỗi vật thể hình ảnh huấn luyện phân bố anchor box Trong trường hợp có từ anchor boxes trở lên bao quanh vật thể ta xác định anchor box mà có IoU với ground truth bounding box cao Hình 4: Xác định anchor box cho vật thể Từ Cell i ta xác định anchor boxes viền xanh hình Cả anchor boxes giao với bounding box vật thể Tuy nhiên anchor box có đường viền dày màu xanh lựa chọn làm anchor box cho vật thể có IoU so với ground truth bounding box cao Mỗi vật thể hình ảnh huấn luyện phân bố cell feature map mà chứa điểm mid point vật thể Chẳng hạn hình chó hình phân cho 8|Page Hanoi University of Science & Technology Face Detection Using YOLO cell màu đỏ điểm mid point ảnh chó rơi vào cell Từ cell ta xác định anchor boxes bao quanh hình ảnh chó Như xác định vật thể ta cần xác định thành phần gắn liền với (cell, anchor box) Khơng riêng cell anchor box Một số trường hợp vật thể bị trùng mid point, xảy ra, thuật tốn khó xác định class cho chúng Hình 5: Khi vật thể người xe trùng mid point thuộc cell Thuật toán cần thêm lượt tiebreak để định đâu class cho cell 1.5 Hàm Loss function Cũng tương tự SSD, hàm loss function YOLO chia thành phần: Lloc (localization loss) đo lường sai số bounding box Lcls (confidence loss) đo lường sai số phân phối xác suất classes : Hàm indicator có giá trị 0,1 nhằm xác định xem cell có chứa vật thể hay khơng Bằng chứa vật thể không chứa : Cho biết bounding box thứ cell có phải bouding box vật thể dự đoán hay khơng? (xem hình 4) : Điểm tin cậy ô , P(contain object) * IoU (predict bbox, ground truth bbox) : Điểm tự tin dự đoán 9|Page Hanoi University of Science & Technology Face Detection Using YOLO : Tập hợp tất lớp : Xác suất có điều kiện, có hay khơng có chứa đối tượng lớp : Xác suất có điều kiện dự đốn Có thể ban đầu cơng thức khó hiểu với người bắt đầu Chúng ta hiểu đơn giản hóa mục đích chúng: hàm mát bounding box dự báo so với thực tế hàm mát phân phối xác suất Trong tổng mát dự đốn có vật thể cell hay khơng? Và tổng thứ mát phân phối xác suất có vật thể cell Ngồi để điều chỉnh phạt loss function trường hợp dự đoán sai bounding box ta thông qua hệ số điều chỉnh ta muốn giảm nhẹ hàm loss function trường hợp cell không chứa vật thể hệ số điều chỉnh 1.6 Dự báo bouncing box Để dự báo bounding box cho vật thể dựa phép biến đổi từ anchor box cell YOLOv2 vả YOLOv3 dự đốn bounding box cho khơng lệch khỏi vị trí trung tâm nhiều Nếu bounding box dự đốn đặt vào phần hình ảnh, mạng regional proposal network, việc huấn luyện mơ hình trở nên khơng ổn định Cho anchor box có kích thước cell nằm feature map với góc bên trái , mơ hình dự đốn tham số tham số đầu độ lệch (offset) so với góc bên trái cell tham số sau tỷ lệ so với anchor box Và tham số giúp xác định bounding box dự đốn b có tâm kích thước thơng qua hàm sigmoid hàm exponential cơng thức bên dưới: Ngồi tọa độ hiệu chỉnh theo width height ảnh nên ln có giá trị nằm ngưỡng [0, 1] Do áp dụng hàm sigmoid giúp ta giới hạn tọa độ không vượt xa ngưỡng 10 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Hình 6: Công thức ước lượng bounding box từ anchor box Hình chữ nhật nét đứt bên ngồi anchor box có kích thước Tọa độ bounding box xác định dựa đồng thời anchor box cell mà thuộc Điều giúp kiểm sốt vị trí bounding box dự đốn quanh vị trí cell bounding box mà khơng vượt q xa bên ngồi giới hạn Do q trình huấn luyện ổn định nhiều so với YOLO version 1.7 Non-max suppression Do thuật toán YOLO dự báo nhiều bounding box ảnh nên cell có vị trí gần nhau, khả khung hình bị overlap cao Trong trường hợp YOLO cần đến non-max suppression để giảm bớt số lượng khung hình sinh cách đáng kể 11 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Hình 7: non-max suppression Từ bounding box ban đầu bao quanh xe giảm xuống bounding box cuối Các bước non-max suppression: Step 1: Đầu tiên tìm cách giảm bớt số lượng bounding box cách lọc bỏ toàn bounding box có xác suất chứa vật thể nhỏ ngưỡng threshold đó, thường 0.5 Step 2: Đối với bouding box giao nhau, non-max suppression lựa chọn bounding box có xác xuất chứa vật thể lớn Sau tính tốn số giao thoa IoU với bounding box lại Nếu số lớn ngưỡng threshold điều chứng tỏ bounding boxes overlap cao Ta xóa bounding có có xác xuất thấp giữ lại bouding box có xác xuất cao Cuối cùng, ta thu bounding box cho vật thể 12 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Tìm hiểu CSDL xử lí liệu Face Dataset đánh nhãn với công cụ trực tuyến Roboflow roboflow.ai Training Dataset #Face Number of Face 408 Number of Image 408 Test Dataset #Face Number of Face 109 Number of Image 109 YOLOv3 có định dạng annotation “.txt” form sau: 0.781616 0.792040 0.079581 0.105805 0.458258 0.482815 0.048888 0.077585 0.232528 0.336366 0.234242 0.433688 Format Label file Label_ID_1 X_CENTER_NORM Y_CENTER_NORM WIDTH_NORM X_CENTER_NORM Y_CENTER_NORM WIDTH_NORM HEIGHT_NORM Label_ID_2 HEIGHT_NORM Lưu ý tất thuộc tính vị trí tệp nhãn khơng phải giá trị tuyệt đối mà chuẩn hóa X_CENTER_NORM = X_CENTER_ABS/IMAGE_WIDTH Y_CENTER_NORM = Y_CENTER_ABS/IMAGE_HEIGHT WIDTH_NORM = WIDTH_OF_LABEL_ABS/IMAGE_WIDTH HEIGHT_NORM = HEIGHT_OF_LABEL_ABS/IMAGE_HEIGHT Sau xử lí liệu xong, ta có folder hồn chỉnh bao gồm hình ảnh có bàn tay đánh nhãn, annotation định dạng “.txt” YOLO, sẵn sàng cho việc training test Phát class khuôn mặt ảnh với thuật toán YOLOv3 13 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Training sử dụng Darknet cho mơ hình YOLOv3 Colab Chi tiết file trình train sở liệu hiển thị google colab tại: KienTuanAnh_face_yolo3_train - Colaboratory (google.com) Kết chạy validation !./darknet detector map KienTuanAnh_face_dataset/face.data KienTuanAnh_ face_yolov3.cfg /content/drive/MyDrive/backup_weights/backup/KienTuanAn h_face_yolov3_best.weights Chạy thử môi trường Spyder Anacoda Cài đặt Anacoda Spyder Các thư viện cài sẵn gồm OpenCV Numpy 14 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Chạy file với model sau train Colab ta file weights lưu thư mục darknet: KienTuanAnh_face_yolov3_best.weights Test 1: chạy nhận diện chưa có thuật toán NMS (Non Maximum Suppression) %run KienAnhTuan_pretrained_yolo_image.py Test 2: chạy nhận diện có thuật tốn NMS (Non Maximum Suppression) %run KienTuanAnh_face_yolov3_image_nms.py 15 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Test 3: chạy nhận diện với Camera có thuật tốn NMS (Non Maximum Suppression) %run KienTuanAnh_pretrained_yolo_camera_nms.py Nhấn phím Q để Thay mặt nhóm số Em xin chân thành cám ơn thày Em Kiên Email: trungkiendt9@gmail.com 16 | P a g e ... Science & Technology Face Detection Using YOLO Tìm hiểu CSDL xử lí liệu Face Dataset đánh nhãn với công cụ trực tuyến Roboflow roboflow.ai Training Dataset #Face Number of Face 408 Number of Image... 7|Page Hanoi University of Science & Technology Face Detection Using YOLO YOLO chia nhỏ batch thành subdivisions cho vừa với RAM Thời gian xử lý step YOLO lâu rất nhiều lần so với mơ hình classification... định dạng “.txt” YOLO, sẵn sàng cho việc training test Phát class khuôn mặt ảnh với thuật toán YOLOv3 13 | P a g e Hanoi University of Science & Technology Face Detection Using YOLO Training sử