Mở đầu
Thay vì biện pháp xác định keypoint dựa vào model như SIFT và SURF, Superpoint đem lại ý tưởng mới model tự học từ các xác định, phân loại (Supervised) thủ công từ người dùng (human annotator)
Super -> Self-Supervised
Point -> Interest Point
Vì vậy, có thể bỏ bớt công sức xác định lại những object data thường gặp (có thể tìm được từ nguồn data ngoài)
Đồng thời hạn chế tác hại từ dữ liệu không rõ ràng (ill-defined) -> pseudo-ground truth
Vì là tự training (Self-supervised), model không nhất thiết cần sự chỉ dẫn rõ ràng từ người dùng -> Unsupervised learning
Hmmm, vậy là Demi-supervised?
Có thể hiểu nôm na Superpoint là tìm interest point mới qua homographic transform
Mục đích chính: là tạo dataset để train model (modern Deep SLAM Frontend)
Để training Superpoint, ta có 3 bước chính:
- Interest point pre-training
- Interest point Self-labeling
- Joint Training
Interest point pre-training
Ban đầu ta có một Conv network chưa train gì (dạng VGG)
Đầu tiên ta tập trung vào những hình dạng hình học cơ bản với labels có sẵn (gọi là Synthetic Shape data)
Train network qua tập data này, ta có Magicpoint network (Có nhiều loại Magicpoint khác nhau dựa vào các tập Synthetic Shape data khác nhau). Đối với Superpoint algorithm thì ứng với vị trí Base Detector
Để model có được nhận thức chung nhất (generate the pseudo-ground truth). Ta train fully connected layer (FC) với rất nhiều mẫu (hàng triệu hoặc hơn) từ tập Synthetic Shape data => Magicpoint/Base Detector
Interest Point Self-Labeling
Với cách nhìn chung, Magicpoint hoạt động tốt trong tập Synthetic Shape nhưng thiếu đi sự đặc trưng của vật cụ thể (potential interest point locations)
Để giải quyết vấn đề này, ta sử dụng Homographic Adaptation
Thường ta sẽ train với COCO dataset ( hay MS-COCO) tại đây (là input)
Tức là ta biến đổi tùy ý ảnh gốc ( random homography) và sau đó áp dụng MagicPoint detector cho ảnh đã biến đổi sau đó lưu lại vị trí tương ứng ở ảnh gốc (nghịch đảo vị trí keypoint mới về vị trí tương ứng trong ảnh gốc)
Từ đó ta có thêm 1 tập các keypoint trên ảnh gốc (Aggregate Heatmap)
Ta phải làm việc này rất nhiều lần :(, tạo ra 1 bộ dataset mới
Sau đấy ta tối ưu heatmap, đây chính là kết quả quan trọng nhất của Superpoint
Superpoint Architest
Ta sử dụng cấu trúc dạng VGG (xem lại VGG16, VGG19) để giảm chiều ảnh đồng thời kết hợp pooling và non-linear activation
8 Convolution layers (size 64 x4 -> size 128 x4) . Mỗi 2 conv layer là 1 2x2 max pool layer. Mỗi conv layer dùng ReLU làm non-linear activation và BatchNorm normalization (L2)Ta chia class output là kết quả pixel có phải keypoint không (probability of "point-ness"). Ta gọi việc này là sub-pixel convolution hoặc depth to space trong Tensorflow
Điểm đặc biệt là ở đây ta có 1 Encode nhưng 2 Decode (1 cho keypoint detector và 1 cho Description (size WxHxD = 256-D)
Loss function là tổng của keypoint loss và descriptor loss
Joint training
Từ bước 2 Interest Point Self-labeling, ta đã có 1 tập dataset đủ lớn
Ta sử dụng tập dataset này để train một Conv network mới
Từ đó ta mới dùng network mới này để xử lí hình ảnh mà ta cần xử lí
Compare
So sánh với các model khác, Superpoint có phần tỉ lệ đúng cao hơn hoặc tốn ít thời gian hơn
Hầu như các model đều dùng Euclide distance giữa các Descriptors để matching
https://colab.research.google.com/drive/1-cafp2E9b3BmOKNrc5pZNC8WBjXwW_uC?usp=sharing
Nhận xét
Đăng nhận xét