implement yolo v1
You only look once (YOLO) là một mô hình CNN để detect object mà một ưu điểm nổi trội là nhanh hơn nhiều so với những mô hình cũ. Thậm chí có thể chạy tốt trên những IOT device như raspberry pi. Trong phần này mình hướng dẫn các bạn chi tiết cách cài đặt YOLO v1 trên tập dữ liệu mẫu do mình tự phát sinh. Nắm rõ về YOLO v1 giúp bạn có thể cài đặt các phiên bản cải tiến, đồng thời giúp bạn có thể đọc những tài liệu về Object Detection. Đồng thời cung cấp 25k mẫu dữ liệu cho các bạn dùng để thử nghiệm trong bài toán object detection
Mình cung cấp sẵn file ipython giúp các bạn có thể dễ dàng thử nghiệm với mô tả chi tiết từng bước của thuật toán trên tập dữ liệu mẫu.
Mình dùng tập dataset tự phát sinh để làm ví dụ cho thuật toán YOLO v1. Tập dữ liệu này tương đối nhẹ và dễ nên giúp các bạn dễ dàng huấn luyện mô hình với độ chính xác cao đồng thời giúp mình có thể phân tích một số hạn chế của mô hình
Một trong nhưng ưu điểm mà YOLO đem lại đó là chỉ sử dụng thông tin toàn bộ bức ảnh một lần và dự đoán toàn bộ object box chứa các đối tượng, mô hình được xây dựng theo kiểu end-to-end nên được huấn luyện hoàn toàn bằng gradient descent. Sau đây, mình sẽ trình bày chi tiết về mô hình YOLO
Ảnh được chia thành ma trận ô vuông 7x7, mỗi ô vuông bao gồm một tập các thông tin mà mô hình phải dữ đoán.
Tổng hợp lại, với mỗi ô vuông chúng ta cần dữ đoán các thông tin sau :
Như vậy với mỗi ô vuông chúng ta cần dữ đoán một vector có (nbox+4*nbox+nclass) chiều. Ví dụ, chúng ta cần dự đoán 2 box, và 3 lớp đối với mỗi ô vuông thì chúng sẽ có một ma trận 3 chiều 7x7x13 chứa toàn bộ thông tin cần thiết.
Sau khoảng 100 epochs, các bạn có thể đạt được 0.9 iou trên tập test gồm 5k mẫu dữ liệu.
Nếu bạn có bất kì vấn đề gì, vui lòng liên hệ với mình qua email: pbcquoc@gmail.com