Comments 22
LoFTR выглядит круто. Должно быть хорошо для задач Visual SLAM.
Да не сказать, чтобы Detr или Deformable-Detr прям рвал COCO:
* Table-1 — DETR-DC5-R101 — 10 FPS — 44.9 AP% — 26 May 2020 arxiv.org/pdf/2005.12872.pdf
* Table-1 — two-stage Deformable DETR — 19 FPS — 46.2% AP — 8 Oct 2020 arxiv.org/pdf/2010.04159v4.pdf
* Table-2 — Cascade Mask R-CNN Swin-B — 11 FPS — 51.9% AP — arxiv.org/pdf/2103.14030v1.pdf
* Table-2 — EfficientDet-D6 — 10 FPS — 52.6 AP% — 20 Nov 2019 arxiv.org/pdf/1911.09070.pdf
* Table-11 — YOLOv4-P6 — 30 FPS — 54.5% AP — 16 Nov 2020 arxiv.org/pdf/2011.08036.pdf
Тот же EfficientDet вышел и раньше, и точнее, и быстрее, чем Detr/Deformable DETR.
Новый Swin Transformers для тех моделей где указан FPS, тоже не лучшее, чем EfficientDet. А для самых больших и медленных моделей, где FPS не указан — то превосходит EfficientDet по точности (58.0% AP с Test-time-data-augmentation Multi-scale-inference).
Но в целом тренд есть, статей вышло много (CaiT,PiT,ViViT,ViL,CvT,CrossViT,Swin Transformer,STAM,DPT,DeepViT,CeiT,HVT,ConViT,PVT,CPVT,T2T-ViT) и трансформеры допилят до нужного состояния.
1. Точность по датам выхода алгоритма: paperswithcode.com/sota/object-detection-on-coco
2. Соотношение точности к времени задержки (V100, batch=1, no TensorRT, no TTA):
Есть нюансы, что некоторые модели лучше для очень маленьких или сильно перекрывающихся объектов, какие-то лучше для запуска на смартфонах. Я могу и Scaled-YOLOv4 для этих задач настроить и обучить, но пользователям проще другую модель выбрать.
Как правильно в комментариях заметили, большинству компаний дешевле взять чужую сеть и увеличить точность за счет сбора хорошего датасета, чем за счет улучшения или разработки своей сети, особенно в таких высоко-конкурентных задачах как ImageNet Classification или MS COCO Object detection, где постоянно соревнуются Топ-10 IT компаний мира.
Вот есть датасет COCO, по сути единственный адекватный для использования в бенчмарках для детекции.
Но если посмотреть на него внимательно, то можно увидеть, что качество его разметки далеко неидеальное, независимо от выборок train/test/val — много неразмеченных объектов, много очень спорных аннотаций (например, ладонь человека крупным планом отмечена как «person»).
Всё это приводит к неоднозначности при обучении.
Справедливо ли вообще сравнивать различные архитектуры в таких условиях по метрике mAP?
Все другие попытки придумать датасет и метрику лучше, обычно выглядели как попытка подогнать датасет под свой алгоритм, чтобы выглядеть лучше других.
Минусы:
* MSCOCO датасет — слишком много ошибок, например, много людей в датасете не размечено
* метрика AP — усредняет по классам, т.е. если в датасете из 2х классов одна сеть нашла 100000 из 100000 человек и 0 из 1 сумок, а другая сеть нашла 0 из 100000 человек и 1 из 1 сумок, то у обеих сетей будет одинаковая точность 50%.
Плюсы:
* MSCOCO датасет — неизменен, т.е. новую сеть можно сравнить с сетями созданными 5 лет назад.
* метрика AP — усредняет по Precision-Recall-кривой, т.е. не зависит от подбора confidence_threshold, т.е. можно успешно сравнивать сеть с большими TP и FP и сеть с малыми TP и FP
Спорные моменты:
* MSCOCO датасет — наличие ошибок в обучающем (но не в valid/test) некоторые считают хорошим тестом на возможность сети обходить взаимоисключающие ошибочные метки. Ошибки в реальных датасетах или RL-подходах будут всегда, и сеть должна эффективно их обходить.
* метрика AP — усреднение по классам некоторые считают хорошим тестом на решение проблемы дисбаланса количества объектов разных классов (т.е. сеть может обучаться и на большом количестве изображений одного объекта, и на малом количестве изображений другого объекта)
То что в датасете рука обозначена как человек (в датасете нет отдельного класса рука) — это не ошибка, человек там почти точно есть. Например, если автопилот или производственный робот видя торчащую из-за препятствия руку не среагирует должным образом, то могут быть серьёзные травмы.
В целом, если сравнивать два конкретных стандартных решения Convolutional networks (ResNet50/152) и Visual Transformers (ViT-B/L-32), то:
1. Convolutional networks (ResNet50/152) — дают лучшую точность на маленьких датасетах, за счет лучшей обобщающей способности из-за трансляционной инвариантности и наличия локальных корреляций, которые ты упомянул
2. Visual Transformers (ViT-B/L-32) — дают лучшую точность для больших датасетов (или auto/meta/pseudo-labeling/distillation), за счет рационального использования емкости сети из-за внимания только к нужным деталям
Page 6 — Figure 4: arxiv.org/pdf/2010.11929.pdf
Как я понимаю, проблема даже не в самих алгоритмах, а в качественных датасетах.
Вопрос: у трансформеров есть возможность понять, чему именно они научились и почему приняли то или иное решение (эту возможность нашли у свёрточных сетей) или они такой же чёрный ящик, как более старые варианты сетей (даже многослойный перцептрон не вдруг поймёшь)?
Через визуализацию слоев Attention можно, достаточно много есть на эту тему статей и примеров
Но не всегда отклик адекватен.
А вот за несколько месяцев до этого (28 Nov 2020) незаметно вышла ещё одна статья по mono-depth, тоже с использованием трансформеров — AdaBins arxiv.org/abs/2011.14141, и там результаты на Kitti лучше, но на NYU хуже, чем у Интеловской DPT arxiv.org/abs/2103.13413
Можно посмотреть прикольные примеры работы связки MiDaS+Inpainting: shihmengli.github.io/3D-Photo-Inpainting
После замены MiDaS на DPT, должно быть ещё намного лучше.
Но, например, DPT-monodepth имеет намного лучшую zero-shot точность, чем любой другой алгоритм, и в реальных задачах zero-shot точность важнее, чем точность на конкретном датасете, но нет общепринятого теста для zero-shot, и соответственно нет такого раздела на paperswithcode.
Что меня удивляет — я не вижу хорошей реализации OCR на трансформерах.
Реализации нет, а статья интересная есть — http://arxiv.org/abs/2103.12731
Еще кажется интересная статья в тему про HaloNet — http://arxiv.org/abs/2103.12731
TLDR — путем трюков они добились качества и размера сеток на Imagenet, но ресурсов оно жрет все равно сильно больше.
Супер важная вещь, про которую все забывают в погоне за сенсациями — это стоимость обладания системы. Даже если она показывает лучше результат на 1%, но ее стоит в 10 раз больше ресурсов натренировать, полезно ли это (даже при таком же косте на инференсе и размере)?
Вообще мне кажется, что будущее в:
- использовании гибрида из сверток условно в первой трети сетки
- и какого-то простого способа кормить 2D feature-maps в трансформеры
Тихая революция и новый дикий запад в ComputerVision