эйай ньюз
57.8K subscribers
1.38K photos
727 videos
7 files
1.71K links
Культурно освещаю самые и не самые важные новости из мира AI, и облагораживаю их своим авторитетным профессиональным мнением.

В свободное время работаю как Staff Research Scientist в Meta Generative AI в Швейцарии.

Aвтор: @asanakoy

PR: @kander426
Download Telegram
Попробуем новую рубрику постов. #ликбез (#fundamentals) по не очень новым, но важным алгоритмам.

Сегодня поговорим про body keypoint detection. Задача состоит в том, чтобы по фотографии найти координаты ключевых точек тела человека (зачастую это голова, глаза, нос, центр груди, и все крупные суставы, такие как колени, локти, и т.д.).

Есть две основные группы подходов:
- Top-down.
Это когда сначала каждый отдельный человек на фотографии детектируется специально обученной нейронной стекой, затем кропается, ресайзится и подается в финальную сеть, которая детектирует ключевые точки тела. Как можно заметить, это двухэтапный сценарий, он требует нескольких нейронных сетей и не очень хорошо работает на сценах, где толпятся много людей. Все потому что люди пересекаются, перекрывают друг друга, и не получается аккуратно выделить каждого человека отдельно, не обрезав часть другого. Пример одной из SOTA (ну или почти) моделей такого типа — HRNet.

- Bottom-up. В этом случае на вход сети подается фотография целиком со множеством людей, и не используется детектор для обнаружения отдельных персон. Далее сеть детектирует все возможные ключевые точки всех людей на фотографии, не зависимо от того какой персоне точка принадлежит. По сути получаем множество точек, но не различаем между людьми. Затем найденные ключевые точки кластеризуются, используя либо расстояния между ними либо более изощренные фичи. В результате мы получаем отдельные группы ключевых точек, где каждая из групп отвечает отдельному человеку. Поэтому такой метод и называется bottom-up — мы начинаем работать с более мелкими структурами, такими как ключевые точки, а замет группируем их, чтобы получить отдельные экземпляры людей. В top-down подходах все наоборот: сначала находятся отдельные люди, а затем ключевые точки каждого из них.

Bottom-up работает лучше на сценах с большим скопление людей, но часто страдает в случаях, когда на фото видны люди в разных масштабах (несколько крупных фигур на переднем плане, и много маленьких на фоне), так как в этом случае от нейронной сети требуется так трудно достижимая инвариантность по масштабу. Примеры SOTA bottom-up моделей, которые стараются бороться с проблемой масштаба, — это HigherHRNet и DEKR (Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression).
Image Inpainting: Partial Convolution vs Gated convolution

Продолжая рубрику #fundamentals,
поговорим о конволюциях, используемых в нейронных сетях для инпейнтинга. В модели для инпейнтинга изображений на вход обычно подается поврежденное изображение (с некоторыми замаскированными частями). Однако, мы не хотим, чтобы свёртки полагались на пустые области при вычислении фичей. У этой проблемы есть простое решение (Partial convolution) и более элегантное (Gated convolution).

🔻Partial Convolutions делают свертки зависимыми только от валидных пикселей. Они похожи на обычные свертки, где к каждой выходной feature-map применяется умножение на жесткую маску. Первая маска вычисляется непосредственно из покоцанного изображения или предоставляется пользователем в качестве входных данных. Маски для каждой следующей частичной свертки вычисляются путем нахождения ненулевых элементов в промежуточных feature-мапах.

- Для частичной свертки недопустимые пиксели будут постепенно исчезать в глубоких слоях, постепенно преобразовывая все значения маски в единицы.
- частичная свертка несовместима с дополнительным вводом пользователя. Однако мы хотели бы иметь возможность использовать дополнительные пользовательские инпуты для условной генерации (например, скетч внутри маски).
- Все каналы в каждом слое используют одну и ту же маску, что ограничивает гибкость. По сути, частичную свертку можно рассматривать как необучаемое одноканальное зануление фичей по маске.

🔻Gated convolutions. Вместо жесткой маски, обновляемой с помощью жестких правил, закрытые свертки автоматически учат soft маску из данных. Дополнительная конволюция берет входную feature-map и предсказывает соответствующую soft маску, которая применяется к выходу оригинальной свертки.

- Gated convolution может принимать любой дополнительный инпут пользователя (например, маску, эскиз) в качестве входных данных. Все они могут быть склеены с поврежденным изображением и скормлены в сеть.
- Gated convolution динамически учит механизм выбора признаков для каждого канала и каждого пространственного расположения.
- Интересно, что визуализация промежуточных значений предсказанных масок показывает, что gated convolution учится выбирать фичи не только по фону, маске, эскизу, но и с учетом семантической сегментации в некоторых каналах.
- Даже в глубоких слоях gated convolution учится выделять именно маскированные области и информацию о входном скетче в отдельных каналах, что позволяет более качественно генерировать восстановленную картинку.

@ai_newz
Вот вам блог-постик c объяснением Variational Lower Bound или Evidence Lower Bound (ELBO). Никогда не поздно поднимать базу #fundamentals, да и на
ML собесах пригодится.

❱❱ Ссылка

@ai_newz