Instance Segmentation là bài toán xác định class label đối với từng pixel của hình ảnh; qua đó, cho phép chúng ta xác định chính xác hình dáng của đối tượng thay vì chỉ xác định được vị trí tương đối tại bounding box như trong Object detection (khác với Semantic Segmentation, Instance Segmentation coi các đối tượng trong cùng một class label là các đối tượng khác nhau). Tương tự như đối với bài toán Phát hiện vật thể (Object Detection), các mô hình trong bài toán Instance Segmentation cũng được chia làm hai loại chính là two-stage model và one-stage model:

– Two-stage model: các mô hình thuộc loại này được thực hiện tuần tự theo 2 bước: detection và segmentation. Bước đầu tiên sẽ sử dụng các mô hình Phát hiện vật thể để xác định bounding box của từng vật thể. Sau đó, đối với từng bouding box sẽ thực hiện segmentation để xác định chính xác hình dáng của vật thể đó. Các mô hình thuộc loại này bao gồm Mask-RCNN, FCIS (Fully convolutional instance-aware semantic segmentation)…

– One-stage model: khác với two-stage model, các mô hình one-stage thực hiện đồng thời detection và segmentation cùng một lúc. Ưu điểm của các mô hình loại này là chúng có tốc độ xử lý nhanh (mặc dù độ chính xác có thể không cao bằng các mô hình two-stage model) do đó chúng thường được sử dụng trong các bài toán xử lý hình ảnh thời gian thực. Các mô hình thuộc loại này bao gồm YOLACT, YOLACT++, INSTA-YOLO …

1. Mask-RCNN

Mask-RCNN là một mô hình two-stage model được đề xuất bởi Kaiming He, Ross Girshick và nhóm nghiên cứu vào năm 2018[1]. Mask-RCNN được xây dựng dựa trên mô hình Faster R-CNN với việc thêm một nhánh (mask brach) để thực hiện việc xác định object mask. Nhánh này được xử lý song song với nhánh của Faster R-CNN (Faster R-CNN có 2 outputs là class label và bounding-box offset còn Mask-RCNN có 3 output là class label, bounding-box offset và object mask). Ở đây, mask branch chính là một Fully Convolutional Networks (FCN) thực hiện semantic segmentation đối với mỗi RoI.

Ưu điểm của Mask-RCNN là có độ chính xác cao (Backbone RestNet-101 R-101-FPN có AP=35.7) nhưng tốc độ xử lý chậm (R-101-FPN có FPS=5), do đó khó đáp ứng yêu cầu xử lý thời gian thực.

2. YOLACT

YOLACT (You Only Look At CoefficienTs) là một mô hình two-stage model được đề xuất bởi Daniel Bolya và nhóm nghiên cứu vào năm 2019[2] nhằm nâng cao tốc độ xử lý hình ảnh để đạt yêu cầu xử lý thời gian thực. YOLACT giải quyết bài toán instance segmentation bằng cách chia thành hai nhánh xử lý 2 task xử lý song song:

– Nhánh 1 (Prototype generation branch): sử dụng FCN để tạo ra một tập gồm k “prototype-masks” cho toàn bộ bức ảnh. Các “prototype-masks” này không phụ thuộc vào bất kỳ một instance nào. Layer cuối của FCN có k channels và mỗi channel tương ứng với một prototype).

– Nhánh 2 (Mask coefficients branch): ngoài việc thực hiện object detection, nhánh này sẽ xác định k ‘mask coefficients’ cho mỗi một anchor. Đối với Object detection model thông thường sẽ có 2 output là class label và bounding box. Tuy nhiên, với YOLACT sẽ có thêm k ‘mask coefficients’. Như vậy mỗi anchor, YOLACT sẽ có output là 4 + c +k với 4 là 4 giá trị bounding box, c là class label và k là k prototype mask.

Mô hình hoạt động của YOLACT với k=4

Bảng so sánh performace của YOLACT với các mô hình khác

Từ bảng trên ta thấy, YOLACT-550 (Backbone RestNet-101 R-101-FPN) đạt tốc độ FPS= 33,5 (gấp 3,9 lần số với Mask R-CNN). Tuy nhiên độ chính xác của YOLACT-550 chỉ đạt AP=29,8 (bằng 83,47% so với Mask R-CNN). Do đó, để nâng cao độ chính xác của mô hình, Daniel Bolya và nhóm nghiên cứu đã đề xuất mô hình YOLACT++ với một số cải tiến như thêm fast mask re-scoring branch (tương tự như Mask scoring R-CNN), thêm Deformable Convolution Networks (DCNs). YOLACT++ có độ chính xác AP=34,1% (cao hơn 4,3% so với YOLACT) và FPS=33,5 (Backbone R-50-FPN).

[1] Mask-RCNN

[2] YOLACT 

[3] YOLACT++ 

Tháng Hai 9, 2022
ITechSeeker