OBJECT DETECTION: TÌM HIỂU VỀ THUẬT TOÁN R-CNN, FAST R-CNN VÀ FASTER R-CNN

TÌM HIỂU VỀ THUẬT TOÁN R-CNN, FAST R-CNN, FASTER R-CNN và MASK R-CNN

Uniduc JSC - 2020-03-28 23:55:51 | 12599 lượt xem

Mục lục

R-CNN

R-CNN (Region-based Convolutional Neural Networks) là thuật toán detect object, ý tưởng thuật toán này chia làm 2 bước chính. Đầu tiên, sử dụng selective search để đi tìm những bounding-box phù hợp nhất (ROI hay region of interest). Sau đó sử dụng CNN để extract feature từ những bounding-box đó.

Cách R-CNN hoạt động

    - Bước 1: Sử dụng các pre-train về phân loại ảnh, ví dụ VGG hoặc Resnet đã được đào tạo cho bộ ImageNet dataset. Nhiệm vụ phân loại liên quan đến N lớp.

   - Bước 2: Đề xuất các ROI bằng thuật toán selective search (thuật toán này sẽ trả về ~2000 vùng cho mỗi hình ảnh). Các vùng này có thể có chứa đối tượng và chúng có size khác nhau.

    - Bước 3: Các ROI sẽ được chỉnh sửa lại size để phù hợp với mạng CNN

    - Bước 4: Tiếp tục fine-tune CNN trên các vùng được đề xuất cho K + 1 lớp. Một lớp bổ sung này liên quan đến background của hình ảnh (tức không có đối tượng). Trong giai đoạn fine-tune, chúng ta sử dụng learning rate nhỏ và và mini-batch vì hầu hết các proposed region chỉ là background.

    - Bước 5: Với mỗi proposed region, mỗi lần truyền qua CNN sẽ tạo ra một feature vector. Sau đó feature vector này sẽ được sử dụng bởi thuật toán SVM nhị phân đã được đào tạo cho từng lớp. Những positive samples là những proposed region có IoU (intersection over union) >= 0.3, còn lại sẽ là negative samples.

    - Bước 6: Để giảm độ lỗi, R-CNN sử dụng một mô hình regression đã được đào tạo để chỉnh sửa lại bounding box được predict so với bouding box chính xác. 

Bounding Box Regression

Giả sử chúng ta có một predicted bounding-box  (tọa độ tâm, width, height) và corrected bounding-box  , bộ regression sẽ được dùng để tìm hiểu scale-invariant transformation giữa tỉ lệ của 2 điểm tâm và log-scale transformation giữa widths và height. 

Illustration of transformation between predicted and ground truth bounding boxes

Lợi ích rõ ràng của việc sử dụng các transformation là tất cả các hàm điều chỉnh bounding-box  trong đó  có thể nhận giá trị trong khoản  [-∞, +∞]. Mục đích của việc học này là:

Một mô hình hồi quy có thể giải quyết vấn đề bằng cách sử dụng loss function SSE cùng với regularization:

Một số thủ thuật thường gặp trong RCNN

Một số thủ thuật được sử dụng trong RCNN và các mô hình object detection khác:

Non-Maximum Suppression

Một đối tượng có khả năng sẽ có nhiều bounding box được sinh ra. Non-maximum suppression có thể giúp chúng ta loại ra những bouding box của cùng một đối tượng đó. Thuật toán này hoạt động theo các bước, sắp xếp tất cả các bounding-box theo confidence score. Sau đó loại bỏ tất cả các bouding-box có confidence score thấp. Khi còn bất kỳ những bounding-box còn lại, thì hãy lặp lại như sau: Sử dụng tham lam để chọn box có điểm số cao nhất. Bỏ qua các box còn lại có IoU cao (tức > 0.5) với box đã chọn trước đó.

Hard Negative Mining

Chúng ta xem các bounding-box mà không có đối tượng là negative examples. Không phải tất cả các negative examples đều khó xác định. Ví dụ, nếu nó hoàn toàn là background, thì nó được xác định rất dễ dàng, easy negative; nhưng nếu hộp chứa kết cấu kỳ lạ hoặc một phần đối tượng, thì nó có thể khó được nhận ra và đây là những hard negarive

Các hard negative examples dễ bị phân loại sai. Chúng ta có thể tìm thấy rõ ràng những mẫu false positive samples đó trong các vòng huấn luyện và đưa chúng vào dữ liệu huấn luyện để cải thiện trình phân loại.

Một số vấn đề của RCNN

Cùng nhìn lại các bước của RCNN, bạn có thể nhận ra việc train mô hình R-CNN rất tốn kém tài nguyên và rất chậm:

    - Chạy thuật toán selective search để tìm ra ~2000 proposed region cho từng ảnh

    - Generating các CNN feature vector cho từng proposed region (N image * 2000)

    - Toàn bộ quá trình gồm 3 mô hình riêng biệt mà không có nhiều tính toán được chia sẻ. CNN cho image classification và feature extrachtion; SVM để xác định đối tượng; Regression để tính loss cho các bounding-box

Fast R-CNN

Để tăng tốc cho R-CNN, Girshick đã cãi thiện quá trình training bằng cách hợp nhất 3 mô hình độc lập thành một framework được đào tạo chung và tăng khả năng chia sẻ tính toán. Mô hình này gọi là Fast R-CNN. Thay vì extracting CNN feature vectors cho mỗi region proposal, mô hình này tổng hợp chúng thành một CNN forward trên toàn bộ hình ảnh và các region proposals chia sẻ các feature matrix. Sau đó, các feature matrix tương tự sẽ được phân nhánh để sử dụng cho việc classification là bouding-box regression. 

RoI Pooling

Đây là một loại max pooling dùng để chuyển đổi các feature trong projected region của hình ảnh với mọi size (h x w) thành một window với size đã được fix cứng (H x W). Input region sẽ được chia làm H x W grids, xấp xỉ cho mỗi subwindow có kích thước h/H x w/W. Sau đó sử dụng max-pooling cho mỗi grid.

Cách hoạt động của Fast R-CNN

Cách thức hoạt động của Fast R-CNN như sau; nhiều bước giống như trong R-CNN:

    - Bước 1: Sử dụng pre-train CNN về phân loại ảnh

    - Bước 2: Sử dụng thuật toán selective search để sinh ra các region proposals

    - Bước 3: Sau khi pre-train CNN:

                     + Thay thế maxpooling layer cuối cùng của pre-train CNN thành RoI pooling layer.Output của RoI pooling layer là một feature vector của region proposals với length đã được fix. Chia sẽ tính toán CNN có rất nhiều ý nghĩa vì nhiều region proposals của cùng một ảnh có khả năng chồng chéo rất cao

                     + Thay thế fully connected layer cuối và softmax layer cuối cùng (K classes) thành fully connected layer và softmax layer K + 1 classes

    - Bước 4: Model được chia ra làm 2 output layer

                     + Sftmax estimator của K + 1 classes (giống như RCNN và +1 là background), output là một phân phối xác suất rời rạc cho mỗi RoI.

                     + Bouding-box regression

Loss function

Mô hình được tối ưu hóa cho hàm loss được kết hợp từ 2 nhiệm vụ (classification + localization):

Loss function là tổng của classification loss và bouding-box regression loss: 

. Đối với "background" RoI,  bị bỏ qua, được định nghĩa là:

Loss function sẽ là:

Trong đó smooth L1 loss được định nghĩa như sau:

Một số vấn đề của Fast RCNN

Thuật toán Fast R-CNN thực sự nhanh hơn rất nhiều so với RCNN. Tuy nhiên, sự cải thiện không đáng kể vì các proposal region được tạo ra bởi một mô hình khác và điều đó rất tốn kém.

Faster R-CNN

Một giải pháp để tăng tốc thuật toán Fast RCNN là tích hợp thuật toán đề xuất các region vào mô hình CNN. Faster RCNN đang thực hiện chính xác điều này: xây dựng một mô hình duy nhất bao gồm RPN (region proposal network) và Fast RCNN với cái CNN được chia sẻ.

Cách hoạt động của Faster RCNN

    - Bước 1: Sử dụng pre-train CNN về phân loại ảnh

    - Bước 2: Fine-tune RPN (region proposal network) cho nhiệm vụ đề xuất khu vực, được khởi tạo bởi pre-train image classifier. Các positive example có IoU > 0.7, các negative example có IoU < 0.3

                     + Trượt một window nhỏ có kích thước n x n trên toàn bộ CNN feature của hình ảnh

                     + Tại center của mỗi window, chúng ta predict nhiều vùng có scales và ratio khác nhau cùng một lúc. Anchor là một sự kết hợp của sliding window center, cale và ratio. Ví dụ, 3 scales + 3 ratios => k = 9 anchors tại mỗi vị trí trượt.

    - Bước 3: Đào tạo mô hình Fast R-CNN sử dụng các proposals region được sinh ra từ RPN hiện tại

    - Bước 4: Sau đó sử dụng mạng Fast R-CNN để khởi tạo đào tạo RPN. Trong khi giữ các lớp convolution được chia sẻ, chỉ fine-tune các lớp RPN cụ thể. Ở giai đoạn này, RPN và detection network đã chia sẻ các lớp convolution!

    - Bước 5: Cuối cùng, chúng ta sẽ fine-tune các layer riêng biệt của Fast R-CNN.

    - Bước 6: Bước 4-5 có thể được lặp lại để huấn luyện mạng RPN và Fast R-CNN nếu cần.

Loss function

Loss function của Faster R-CNN tương đối giống với Fast R-CNN

Hàm loss của Faster R-CNN là sự kết hợp giữa classification loss và bounding-box regression loss:

Trong đó,  là một hàm log loss của nhiều hơn 2 đối tượng, vì chúng ta có thể dễ dàng chuyển một phân loại nhiều lớp thành phân loại nhị phân.

Mask R-CNN

Mask R-CNN là phiên bản mở rộng của Faster R-CNN ở phân đoạn hình ảnh ở mức pixel. Điểm mấu chốt là tách rời nhiệm vụ classification và mask prediction ở mức pixel. Dựa vào Faster R-CNN, Mask RCNN thêm một nhanh thử 3 để dự đoán mask của đối tượng song song với các nhánh hiện tại. Mask detection là một mạng fully-connected network áp dụng cho mối RoI.

Do pixel-level segmentation yêu cầu căn chỉnh mịn hơn nhiều so với bouding-box, Mark R-CNN cải thiện RoI Pooling layer để RoI có thể được ánh xạ chính xác hơn đến các vùng của ảnh gốc.

RoIAlign

RoIAlign được thiết kế để tìm lỗi sai vị trí gây ra trong RoI pooling. RoIAlign loại bỏ hash quantization, ví dụ, bằng cách sử dụng x / 16 thay vì [x / 16], để các tính năng được trích xuất có thể được căn chỉnh chính xác với các pixel đầu vào. Bilinear interpolation được sử dụng để tính toán các giá trị vị trí dấu phẩy động trong đầu vào.

Loss function

Loss function của Mask R-CNN là sự kết hợp của 3 loss: classification, localization và segmentation mask:  trong đó  và  giống như trong Faster R-CNN

Mark RCNN tạo ra mask có kích thước m x m cho mỗi RoI và mỗi lớp (K classes). Do đó, output có kích thước K⋅m2. Bởi vì mô hình đang cố gắng học một mask cho mỗi lớp, không có sự cạnh tranh giữa các lớp để tạo mask.

Loss mask được định nghĩa là:

Trong đó y_ij là label của cell (i, j),  là giá trị dữ đoán của pixel (i, j) cho mỗi class k.

Tóm tắt 

Ở đây tôi minh họa các thiết kế mô hình của R-CNN, Fast R-CNN, Faster R-CNN và Mask R-CNN. Bạn có thể theo dõi cách một mô hình phát triển sang phiên bản tiếp theo bằng cách so sánh các khác biệt nhỏ.

Chúc bạn thành đạt trong công việc và hạnh phúc trong cuộc sống !

Hotline / Zalo: 0903 666 014

Website: https://uniduc.com/vi

-------------////--------------------------------------------////------------

HUMANOID ROBOT CỦA CÔNG TY UNIDUC SẢN XUẤT PHÁT TRIỂN.

Đăng kí nhận tin mới



Đánh giá bài viết

0%

0 Tổng người đánh giá
5
0%
4
0%
3
0%
2
0%
1
0%
THÔNG TIN LIÊN HỆ

Công ty Cổ phần Uniduc

Địa Chỉ: 22 Đường Số 54, Phường Thảo Điền, Quận 2

Hotline: 086 567 7939 (Phòng Kinh Doanh / HTKT)

Email: [email protected]

Website: https://uniduc.com/vi

 

 
TỔNG QUAN

Công ty Cổ Phần Uniduc chuyên cung cấp các loại robot phục vụ, Agv Robot, hệ thống tự động. Với kinh nghiệm nghiên cứu lâu năm và đội ngũ kỹ sư năng động sáng tạo. Hi vọng Uniduc là điếm đến công nghệ là nơi khách hàng luôn gửi trọn niềm tin. Chúng tôi sẽ luôn luôn phấn đấu cung cấp cho bạn giải pháp, máy móc, dịch vụ tốt nhất.

TIN MỚI
ĐĂNG KÝ NHẬN TIN

Nhận bản tin thường xuyên để cập nhật giá bán và các chương trình khuyến mãi.


©2018 - 2022 Copyright Uniduc., Jsc. Sitemap