Mở đầu
Detection Transformer DeTr 2020
Object detection systems based on transformers and bipartite matching loss for direct set prediction
Mục đích của Meta (Facebook) ở DeTr là xây dựng 1 object detection end-to-end trực tiếp (direct way). Tức dựa theo piple của detection mà loại bỏ bớt một số thành phần như Non-maximum suppression (NMS) và anchor generation ( xem lại Yolov2)
Ý tưởng cho thành phần khung mới là tạo 1 set-based global loss (loss tổng thể dựa trên tập hợp) và dự đoán duy nhất thông qua nối lưỡng cực (bipartite matching) bằng 1 transformer encoder-decoder architecture
Với 1 tập nhỏ các đối tượng truy vấn (object queries) cố định, DETR tìm hiểu quan hệ của các đối tượng và bối cảnh toàn cục (global image context) đối với dự đoán đầu cuối (final set of predictions) một cách song song. Ngoài ra, DETR còn có tác dụng trong panoptic segmentation
Mục đích của object detection là dự đoán 1 bounding boxes và phân loại labels cho mỗi object. Các modern detector làm nó theo cách gián tiếp, tức xác định các vấn đề phân loại và hồi quy trên 1 tập lớn các đề xuất (proposal), archor hoặc window center. Cách này bị ảnh hưởng đáng kể bởi các bước hậu xử lí (postprocessing). Để thay thế điều này, ta đề xuất phướng pháp dự đoán tập hợp trực tiếp (direct set prediction). Hướng đi end-to-end này đã thành công trong những cấu trúc phức tạp như machine translation hay speech recognition, nhưng chưa có trong object detection.
Encoder-Decoder architecture based on transformers, phổ biến với sequence prediction. Và cơ chế self- attention miêu tả quan hệ các thành phần trong sequence. Ta hy vọng điều này phù hợp với set prediction (ví dụ như loại bỏ trùng lặp (duplicate predicttions)DETR không yêu cầu bất kì lớp tùy chỉnh (customized layers) nòa, do đó có thể sao chép vào các khung chứa CNN tiêu chuẩn hay transformer class.
Điểm đặc biệt của DETR là bipartite matching loss và transformers với (non-autogressive) parallel decoding
Thuật toán chi tiết
1. Đầu tiên ta nghiên cứu về pipeline hay dùng
- bipartie matching losses cho set prediction
- encoder-decoder architectures based on the transformer, parallel decoding và object detection method
1.1 Set prediction
Chưa có mô hình học sâu nào dự đoán trực tiếp các tập hợp (directly predict sets). Task cơ bản thường là multilabel classification (phân loại nhiều nhãn) mà thường xử lí bằng 1 vs rest, không dùng được cho detection do có cấu trúc giữa các phần tử (các hộp gần giống nhau near-idential boxes)
- khó khăn đầu tiên: tránh near-duplicates (mà không dùng NMS như postprocessing)
-> Cần một suy luận toàn cục (global inference) có liên hệ giữa các thành phần để tránh dư thừa
-> Với constant-size set prediction, dùng dense fully connected networks là đủ nhưng tốn kém. Phương pháp chung là auto-regressive sequence (chuỗi hồi quy tự động) như Recurrent neural network RNN
-> Trong mọi trường hợp, loss function cần bất biến với hoán vị của predictions (permutation-invariance)
-> Hungarian algorithm, để tìm bipartite matching giữa ground-truth và prediction (mỗi target element có 1 unique match)
-> Thay auto-regressive model bằng transformer với parallel decoding
1.2 Transformers and Parallel Decoding
Attention mechanism cũng có thể coi là neural network layer tổng hợp (aggregate) thông tin từ toàn bộ chuỗi đầu vào (input sequence). Với một trong những điểm mạnh là blobal computations và perfect memory, mà làm tốt hơn RNN
Được sử dụng trong auto-regressive bằng theo sau seq2seq model, để tạo tokenization (one by one). Nhưng do chi phí lớn (tỉ lệ thuận output length và hard to batch) -> parallel sequence generation.
Kết hợp transformer và parallel decoding cho trade-off giữa computational cost và khả năng thể hiện global computation cho set prediction
1.3 Object Detection
Ta directly predicting the set of detections với absolute box prediction
Set-based loss -> Bipartite matching loss -> Recurrent detector
2. DETR Model
2 thành phần cần được chú ý là:
- 1 set prediction loss tập trung unique matching giữa predicted và ground truth boxes
- 1 architecture mà predict (trong 1 lượt) 1 set of objects và models liên hệ giữa chung
2.1 Object detection set predicts loss
- Chọn N là fixed-size của set predictions (N > số lượng object trong 1 ảnh).
- 1 trong những khó khăn chính là score predicted objects (class, position, size) với grough truth -> optimal bipartite matching sau đó optimize object-specific (bounding-box) loses.
- Gọi y là gound truth set, y_ = {yi_}Ni=1 là tập N predictions. Ta thêm pad token (no object) để 2 bên bằng size. Để tìm bipartitie matching, ta tìm hoán vị của N phần tử mà :
Matching cost tính cả class predict và similarity của predicted. Mỗi phần tử i của ground truth có thể biểu diễn là yi = (ci,bi) (ci là target class label (có thể = no object token), bi thuộc [0,1]^4 là vector coordinate (4D giống yolov1)). Kết quả index delta(i) là xác xuất class ci (pdelta_(i)(ci)) và predicted box bdelta_(i)Procedure này giống cách gán heuristic assignment rules (match proposal hoặc archor) với ground truth objects. Khác biệt là gán từng cái một (one-to-one) để không trùng lặp
Với delta_ là phép gán tối ưu (optimal assignment) ở bước 1. Thực tế, ta down-weight log-probability khi ci = no-object theo hệ cơ số 10 cho class imbalance (giống Faster R-CNN) (matching cost giữa 1đối tượng bất kì và no-object là 1 hằng số). Ta dùng pdelta_(i)(ci) thay vì log-probabilities để phù hợp Lbox(.,.) (bounding box loss)
Có 3 phần chính:
-> Do là 3 phần nối tiếp nên dễ dàng implement với bất kì CNN backbone hay transformer architecture nào
Tối ưu Architect
Các block/layer trên đã được hoán đổi vị trí và thử qua rất nhiều lần (dataset COCO 2017, backbone Resnet50, test AP và AP50 https://arxiv.org/pdf/2005.12872v3.pdf ) để cho ra cấu trúc đủ và đúng vị trí như trên (thay đổi số lượng/thiếu layer/loss/block thì AP sẽ giảm)
Giống như mở rộng của Faster R-CNN thành Mask R-CNN cho task panoptic segmentation (khoanh vùng toàn cảnh). DETR cũng thêm 1 mask head (binary mask) tại ngay sau decoder output (DETR-R101)Ta train DETR để predict boxes xung quanh "stuff" và "things". Predicting box cần train cần phải >0, vì Hugarian matching tính dựa vào khoảng cách. Ta cũng thêm 1 mask head để predict binary mask cho mỗi predicted boxes, lấy input là output của transformer decoder cho mỗi object và tính multi-head (M heads) attention score của embedding này qua output của encoder -> Sinh ra M attention heatmap cho mỗi object trong 1 small resolution. Để làm final prediction và tăng resolution, FPN-like architect được dùng. Final resolution của mask có stride 4 và mỗi mask được supervised independent bằng DICE/F-1 loss và Focal loss
Appendix
Implement
https://en.wikipedia.org/wiki/Hungarian_algorithm
- Trừ giá trị nhỏ nhất row: với mỗi row, ta trừ giá trị nhỏ nhất cả row (cho tất cả cell trong row)-> Mỗi row sẽ có ít nhất 1 số 0
- Vẽ 1 line (cover mọi ô trên line) qua mọi 1 column đã marked (nếu mọi số 0 đã covered (0*) -> bước shift zeros)
- Tìm 1 số 0 chưa covered (0) và prime nó (0 -> 0'), nếu tất cả số 0 đã được covered thì kết thúc bước "Tìm minimum set of covered entries" ) (*)
- Nếu có 1 số 0 chung row với 1 marked 0* -> cover row đó, bỏ cover column của marked 0 -> (0')
- Ngược lại, nếu 1 số 0 chưa covered không chung hàng với row nào có 0* hoặc 0':
- a) Nếu có 1 số 0 marked, đến bước sau, nếu không thì ngừng lại, trả về kết quả cho "Ngược lại" loop
- b) Tìm 1 0' cho row đang xét (đang ở row 1 có 0*) (nên luôn là 1). Đến bước trước ( a) )
- c) Với mọi số 0 thuộc cái path đã lập ở 2 bước a) và b), biến 0' thành 0* và 0* thành 0 -> có thêm 0*
- Theo thuật toán, ta sẽ có số lines dùng để cover mọi số 0 = số min (số people, số assignments)
Tham khảo
- https://github.com/facebookresearch/detr
- https://arxiv.org/pdf/2211.12860v1.pdf (coDETR)
- https://arxiv.org/pdf/2005.12872v3.pdf
- https://www.kaggle.com/code/julian3833/detr-detection-transformer-train-0-189/notebook
- https://huggingface.co/facebook/detr-resnet-101
- https://en.wikipedia.org/wiki/Hungarian_algorithm
- https://www.youtube.com/watch?v=FQp9HJSg1zs&ab_channel=AustralianMathematicsCurriculumVideos
Nhận xét
Đăng nhận xét