Админ трогал траву как не в себя, но наконец добрался рассказать вам про самую поразительную работу за 2024.
Я считаю, что про неё недостаточно говорят, а про решателей шокльной математики (o1/o3) и агентов слишком много. Ваша любимая 400b VLM плохо рисует bounding boxes, а эта 770m шутка делает их отлично хоть на CPU. При этом VLM обучалась на немыслимом количестве данных, а у этой штуки было меньше примеров, чем у CLIP. Да что далеко ходить: у меня друг делает стартап по CV, мы с ним обсуждали эту модель, он её попробовал и перестал обучать свои YOLO детекторы: потому что эта штука просто работает. Причем несмотря на необходимость обнаруживать строительные машины на фотографиях с плохих камер в родной атмосфере слякоти и грязи.
#обзор_статьи
# Florence-2: Advancing a Unified Representation for a Variety of Vision TasksСкачивайте и
играйтесь на HF.
Что если я скажу, что есть модель, которая умеет хорошо делать Zero-Shot детекцию, сегментацию, captioning и OCR? Что при этом её можно промптить, например требуя найти на картинке всех собак или сделать сегментацию объекта внутри ббокса? Вы наверное подумаете, что это новая огромная VLM. Но нет, эта модель размером всего 770M, то есть как большой ViT. Можно запускать хоть на CPU. Более того, её можно дообучать, в том числе легко сделать из неё supervised детектор прикрутив ей свою любимую голову, скажем от DETR.
В Computer Vision у всех комплексы по поводу foundational models. Мы завидуем ребятам из NLP. Стало модно выпускать большие модели и говорить: "теперь у нас тоже фаундейшнл!" Однако что такого foundational, скажем, в Segment Anything? Это просто сегментатор обученный на большом количестве качественной синтетики. В моем понимании foundational это когда ты в свободной форме даешь модели любую задачу и она её решает, как GPT-4o, а не когда тебе нужно определенным образом зампромптить модель, чтобы получить решение задачи сегментации.
Florence-2 это первая модель в CV которую я действительно готов назвать foundational. С одной стороны из-за её широкой полезности, так как она позволяет решать все популярные задачи в CV. Но так же из-за того, каким образом она сделала. Минимум костылей, как вы сейчас увидите.
Перейдем к сути, благо статья простая и благодаря этому очень красивая. Авторы рассуждают последовательно.
Чего мы хотим от универсальной CV модели?
1.
Image-level understanding: понимание высокоуровневой семантики. Например, на картинке кошка или собака? Можно так же сказать, что это способность связать изображение и текстовое описание. Эту задачу отлично решает CLIP.
2.
Region/pixel-level recognition: обнаружение объектов на изображениях и понимание их расположения. С этим отлично справляются supervised классификаторы, детекторы и сегментаторы.
3.
Fine-grained visual-semantic alignment: связь между областями изображения, в том числе совсем маленькими, и текстом. Обнаружение частей изображений которые относятся к фразам, объектам, атрибутам и отношениям. Это способность обнаружить и отличить "нос собаки", "нос собаки слева", "нос рыжей собаки", "коричневый нос собаки" и так далее.
Когда желания определены дело за малым: выбрать данные, функцию ошибки и архитектуру. Через эти компоненты мы по факту формируем оптимизационную задачу.
Авторы решили, что для получения трех компонент понимания изображений нужно много разных аннотаций, которые можно распределить по двум осям:
1.
Spatial hierarchy: аннотации должны включать разные масштабы изображений, чтобы модели требовалось понимание и на уровне изображения, и на уровне пикселей.
2.
Semantic granularity: в текстах (описаниях, промптах, лейблах) должны встречаться разные уровни абстракции, требующие от модели как понимания общих концептов, так и небольших деталей и нюансов.