Hình 3.14 Ví dụ kết quả đúng thứ 2
Chương 3: PHƯƠNG PHÁP ĐẾM VẬT THỂ TRONG HÌNH ẢNH
Hình 3.16 Ví dụ kết quả đúng thứ 4
- Một số hình ảnh đếm sai:
Hình 3.18 Ví dụ kết quả sai thứ 2 3.1.5. Đánh giá chi tiết
- Ưu điểm:
o Kết quả tương đối tốt, độ chính xác tương đối o Thời gian xử lý thấp
o Không cần yêu cầu nhiều về phần cứng
o Thuật toán không quá phức tạp, thư viện OpenCV hỗ trợ rất đầy đủ o Chỉ cần xác định trước vùng màu của loại vật thể cần đếm là có thể phát
hiện và đếm được vật thể đó - Nhược điểm:
o Kết quả chưa thật sự chính xác ở những hình khó, bị khuất nhiều o Khoanh vùng sai vị trí, khơng khớp với kích thước quả trứng
o Kết quả thiếu chính xác ở những hình có mật độ vật thể hoặc số lượng vật thể quá cao
Chương 3: PHƯƠNG PHÁP ĐẾM VẬT THỂ TRONG HÌNH ẢNH
Vì những bất cập và khuyết điểm cịn tồn đọng, ảnh hưởng trực tiếp và nghiêm trọng đối với mục đích của đề tài, nên nhóm đã đổi phương pháp xử lý bằng Học máy
3.2. Phương pháp sử dụng Học máy và Neural Networks
GitHub source code: https://github.com/hosituan/kounter-server
3.2.1. Keras RetinaNet
GitHub Source code: https://github.com/fizyr/keras-retinanet 3.2.1.1. Giới thiệu về Keras RetinaNet
“Keras implementation of RetinaNet object detection as described in Focal
Loss for Dense Object Detection by Tsung-Yi Lin, Priya Goyal, Ross
Girshick, Kaiming He and Piotr Dollár.” (Keras RetinaNet, 2021)
Keras RetinaNet là một phương pháp cài đặt một mơ hình phát hiện vật thể dựa theo mạng RetinaNet.
Sử dụng Keras RetinaNet:
Paper SKU-110K CVPR train based model dựa theo Keras Retinanet. Paper SKU-110K CVPR thêm 1 layer mới là Soft-IoU layer để train thêm một lần nữa tăng độ chính xác.
Việc train, predict và convert interface model hoàn toàn dựa vào Keras RetinaNet
3.2.1.2. Giới thiệu mạng Resnet
ResNet (Residual Network) được giới thiệu đến công chúng vào năm 2015 giành được vị trí thứ 1 trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ 3.57%. Khơng những thế nó cịn đứng vị trí đầu tiên trong cuộc thi ILSVRC and COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation.Hiện tại thì có rất nhiều biến thể của kiến trúc ResNet với số lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152,...Với tên là ResNet theo sau là một số chỉ kiến trúc ResNet với số lớp nhất định. (Viblo Asia, 2020)
3.2.1.3. Mục đích của mạng Resnet
Mạng Resnet là một mạng CNN được thiết kế để làm việc với hàng trăm hàng nghìn lớp chập, khi ta xây dựng mạng CNN với nhiều lớp chập sẽ xảy ra hiện tượng Vanishing Gradient. Thông thường, thuật toán sẽ đi từ output layer đến input layer, tính toán gradient của cost function tương ứng cho từng trọng số(weight) của mạng. Gradient Descent sẽ được sau đó sử dụng để cập nhật các parameter. Quá trình này sẽ được lặp lại cho đến khi các tham số của mạng được hội tụ. Cụ thể trong quá trình training, chúng ta sẽ
có 1 tham số epoch (số lần mà training set được duyệt qua một lần và trọng số được cập nhật). Nếu số lượng vịng lặp quá nhỏ thì đơi khi mạng sẽ khơng đưa ra được kết quả tốt, số vịng lặp quá lớn thì thời gian training sẽ lâu. Tuy nhiên trong thực tế, Gradients sẽ có giá trị nhỏ dần khi đi xuống các layer thấp hơn dẫn đến kết quả được cập nhật không làm thay đổi nhiều trọng số của các lớp đó, làm cho chúng khơng hội tụ và mạng sẽ không thu được kết quả tốt. Mạng Resnet ra đời để giải quyết vấn đề này. (Viblo Asia, 2020) 3.2.1.4. Cấu trúc mạng Resnet 50
Hình 3.19 Cấu trúc mạng Resnet
Một mạng Resnet 50 bao gồm:
- Một tích chập với một kernel kích thước 7x7 và 64 kernel khác với một stride có kích thước 2 là 1 layer
- Max Pooling với kích thướng stride là 2 là 1 layer
- Trong phép chập tiếp theo, có một kernel 1x1, 64 theo sau là kernel 3x3, 64 và cuối cùng là một kernel 1x1, 256. Ba lớp này được lặp lại tổng cộng 3 lần, do đó trong bước này có 9 layer
- Tiếp theo là một kernel 1x1, 128 và sau đó là 3x3, 128 cuối cùng là 1x1, 512. Bước này lặp lại 4 lần nên ta có 12 layer
- Sau đó, một kernel 1x1, 256 và hai kernel nữa là 3x3, 256 và 1x1, 1024. Điều này lặp lại 6 lần nên ở bước này có tổng cộng 18 layer
- Sau đó, một kernel 1x1, 512 và hai kernel 3x3, 512 và 1x1, 2048. Điều này lặp lại 3 lần nên ta có 9 layer
- Cuối cùng, thực hiện average pool và kết thúc bằng một layer fully connected chứa 1000 nút. Và cuối cùng là một hàm softmax để có 1 layer
Vậy tổng cộng có: 1 + 9 + 12 + 18 + 9 + 1 = 50 layers Deep Convolution Network
Chương 3: PHƯƠNG PHÁP ĐẾM VẬT THỂ TRONG HÌNH ẢNH
3.2.2. Precise Detection in Densely Packed Scenes – CVPR 2019 paper
“Man-made scenes can be densely packed, containing numerous objects, often identical, positioned in close proximity. We show that precise object detection in such scenes remains a challenging frontier even for state-of-the-art object detectors. We propose a novel, deep-learning based method for precise object detection, designed for such challenging settings. Our contributions include: (1) A layer for estimating the Jaccard index as a detection quality score; (2) a novel EM merging unit, which uses our quality scores to resolve detection overlap ambiguities; finally, (3) an extensive, annotated data set, SKU-110K, representing packed retail environments, released for training and testing under such extreme settings. Detection tests on SKU-110K and counting tests on the CARPK and PUCPR+ show our method to outperform existing state-of-the-art with substantial margins” (PapeWithCode, 2019)
Trích dẫn lời tựa từ bài báo:
“Các hình ảnh chứa các vật thể được đóng gói dày đặc, chừa nhiều đối tượng, thường giống hệt nhau, có vị trí gần nhau. Chúng tơi thấy rằng việc phát hiện đối tượng chính xác trong những cảnh như vậy vẫn là một biên giới đầy thách thức ngay cả đối với các máy dò đối tượng hiện tại. Chúng tôi đề xuất một phương pháp dựa trên học sâu để phát hiện đối tượng chính xác, được đặt ở vị trí dày đặc đầy thách thức như vậy. Những đóng góp của chúng tơi bao gồm:
- (1) Một lớp để ước tính số Jaccard là điểm chất lượng phát hiện
- (2) Đơn vị hợp nhất EM mới, sử dụng điểm chất lượng để giải quyết sự mơ hồ chồng chéo
- (3) Cuối cùng là một tập hợp dữ liệu rộng rãi – SKU110K gồm những hình ảnh hàng hoá bán lẻ đóng gói, được phát hành để đào tạo và thử nghiệm theo các cài đặt trên.
- Các thử nghiệm trên bộ dữ liệu SKU110K và kiểm tra đếm trên Carpk và PUCPR+ cho thấy phương pháp của chúng tôi vượt trội hơn với biên độ đáng kể”
Tác giả: Eran Goldman, Roei Herzig, Aviv Eiesenschtat, Jacob Goldberger, Tal Hassner, Bar-Ilan University, Tel Aviv University, Trax Retail, The Open University of Israel
Liên kết PDF chính thức:
https://openaccess.thecvf.com/content_CVPR_2019/papers/Goldman_Precise_D etection_in_Densely_Packed_Scenes_CVPR_2019_paper.pdf
Source code chính thức: https://github.com/eg4000/SKU110K_CVPR19 3.2.2.1. Mục đích của bài báo
Ở thời điểm hiện tại, những mơ hình học sâu phát hiện vật thể có thể nhanh chóng và đáng tin cậy để phát hiện vật thể trong rất nhiều khung hình thực tế. Bất chấp sự tiến bộ đáng chú ý này, trường hợp phát hiện vật thể trong khung hình dày đặc các vật thể vẫn còn là một thách thức lớn. Nhóm tác giả đã tập trung vào phát hiện vật thể trong các khung hình dày đặc như vậy. Những hình ảnh này thường là kệ hàng hoá, giao thơng, hình ảnh cảnh quang đơ thị,...
Chương 3: PHƯƠNG PHÁP ĐẾM VẬT THỂ TRONG HÌNH ẢNH