👉 Đọc bài này của Phạm Đình Khánh ← Nói tới Faster R-CNN mà thôi, sau đó là nhắc tới Mask R-CNN và cái này được tích hợp trong Detectron2 của Facebook.
⭐ Hiểu theo cách bình dân: Cơ bản về Object Detection với R-CNN, Fast R-CNN, Faster R-CNN và YOLO - Mì AI
👇 (theo bài của Mì AI + vài thứ thêm vào)
Từ ảnh gốc → tách ra 2k ROI (regions proposal có chứa vật thể) → đưa vào CNN để xác định và tính toán. ← Nhược: dùng selective search để tìm ra 2k ROI + xử lý tới 2k ROI như 2k hình riêng biệt vào trong CNN ← slow (47s/ảnh input)
(Use a single model instead of pipeline like R-CNN)
Xử lý được vụ “xử lý riêng bằng CNN” 2K hình riêng biệt (2K ROI kia) bằng cách chỉ đưa ảnh gốc (và các ROIs này) vào CNN → ra feature map (của hình + các ROIs) → ROI pooling (để đưa các region proposal trong feature map về cùng kích thước do bước feature map ko thể resize được) + xác định ROI (cũng lại dùng selective search) → ….
Weak: Mô hình này nhanh hơn đáng kể cả về huấn luyện và dự đoán, tuy nhiên vẫn cần một tập hợp các region proposal được đề xuất cùng với mỗi hình ảnh đầu vào.
Ngay cái bước dùng selective search để tìm ROI, mấy ông tác giả (mới) này dùng 1 mạng RPN (Region Proposal Network) riêng biệt để tìm ra ROI → còn lại giống Fast R-CNN
Những cải tiến này vừa làm giảm số lượng region proposal vừa tăng tốc hoạt động trong thời gian thử nghiệm mô hình lên gần thời gian thực với hiệu suất tốt nhất. Tốc độ là 5fps trên một GPU.
(cái này đọc ở đây)
- Facebook AI → paperswithcode
- Our approach efficiently detects objects in an image while simultaneously generating a high-quality segmentation mask for each instance.
- The Mask R-CNN framework is built on top of Faster R-CNN
- khi bạn cho một hình ảnh vào ngoài việc trả ra label và bouding box của từng object trong một hình ảnh thì nó sẽ thêm cho chúng ta các object mask.
- Resnet101 để trích xuất thông tin từ hình ảnh đầu vào
- ROI không phải là các bounding box! Những hình minh hoạ nhìn giống nhưng có thể có ROI ko chứa object, chúng chỉ là những vùng interests mà thôi!
Quantization is the process of mapping continuous infinite values to a smaller set of discrete finite values. In the context of simulation and embedded computing, it is about approximating real-world values with a digital representation that introduces limits on the precision and range of a value.
- Comes from the original Fast R-CNN paper.
- Recall ROI is regions extracted from original image (by some methods)
👇 ALL BELOW ARE FROM: 👍 Understanding Region of Interest (RoI Pooling) - Blog by Kemal Erdem
Check lại cái mạng cho từng ROI
→ nên trên cái 16x16 feature map, chúng ta ko thể có aspect (integer) like on the original được mà ta phải dùng quantization
Sau khi có mapped ROI → can apply pooling on it!
Look again the network: after ROI pooling layer, there is a FCs layer with fixed size! ← many different sizes ROI → diff sizes mapped ROIs → be pooled to same sizes (eg. 3x3x512)
Eg (cái ví dụ xét ở trên): 145x200 → 4x6 → 3x3 (again, từ 4x6 sang 3x3 lại phải quantization)
→ The same process is applied to every single RoI from our original image
- RoIAlign Explained | Papers With Code (not read yet)
BELOW ARE FROM 👇: 👍 Understanding Region of Interest - Part 2 (RoI Align) - Blog by Kemal Erdem
Why?? ⇒ bởi vì ở ROI pooling steps, quantization process, we lost a lot of data (and also gain some)
Tới bước này, ko giống ROI pooling thường là chia rùi làm tròn thành 4x6, chúng ta vẫn giữ lại số thập phân!
ROI Align is not using quantization!!!!
Recall: Fast R-CNN applies quantization twice (mapping process + pooling process)
Còn ROI Align, ta chia cái ROI gốc thành 3x3 boxes (3x3 vì bước pooling ta dùng 3x3)
The 3rd method to pool data (article).
The idea of RoIWarp is more or less the same as RoIAlign, the only difference is that RoIWarp is quantizing RoI mapping onto a feature map. ← ❓❓❓
There is only a small improvement when RoIWarp is applied but applying RoIAlign gives us a significant boost in precision!