AbstractDL
11.5K subscribers
244 photos
16 videos
282 links
Коротко про классные штуки в CV, NLP и AI 🤷‍♂️
By Anton Razzhigaev
Download Telegram
Text2image не стоит на месте!

Нашёл для вас целый набор ноутбуков (colab) для генерации картинок по тексту. Там всё сразу работает, нужно только вписать текст.

раз (VQGAN+CLIP),
два (FFT+CLIP),
три (bigGAN+CLIP)

Как это работает?
1. Берём случайный латентный вектор, генерим по нему картинку.
2. Итеративно оптимизируем вектор так, чтобы CLIP говорил, что картинка похожа на текстовое описание.
3. Не забываем про регуляризацию.
4. Готово :)

P.S. Текст в этом примере: "Overclocked nervous system" (разогнанная нервная система), ноутбук VQGAN+CLIP.
Немножко ошибся в коде и получил такую красоту.

P.S. Кому интересно — это eigenface’ы, базис в пространстве человеческих лиц.
👍1
IBM Project CodeNet: датасет из 14 млн фрагментов кода

IBM представила свой «ImageNet» с программами вместо картинок. Он содержит 14 млн фрагментов кода на 55 языках, решающих 4000 разных задач.

Хотите научить свою нейронку писать код за вас? Скормите ей этот датасет 💁‍♂️

Статья, GitHub
This media is not supported in your browser
VIEW IN TELEGRAM
Facebook research выпустил PyTorchVideo

Это как
torchvision
, только для видео. Тут есть эффективные инструменты для загрузки/обработки данных а также предобученные модели, включая оптимизированные для смартфонов.

GitHub, туториал

P.S. Чтобы получить всю эту радость, надо всего лишь три раза прошептать:
pip install pytorchvideo
🔥Unsupervised Speech Recognition — как распознавать речь совсем без разметки

Это совместная статья от Google и Facebook, где для обучения используются два никак не связанных между собой датасета аудио и текста.

Step-by-step:
1. Заранее учим self-supervised wav2vec выдавать эмбеддинги для аудио (что-то типа берта для звука).
2. Разбиваем аудио на фрагменты и на каждой итерации кластеризуем их эмбеддинги (потом окажется, что один кластер - это одна фонема).
3. Учим GAN по этим кластерам генерировать хоть какой-то текст, пока дискриминатор учится отличать этот текст от реального.
5. Накладываем diversity-loss (максимизируем энтропию генератора).
6. Обнаруживаем, что GAN переводит речь в текст!

В итоге у них лучший результат на unsupervised бенчмарках и почти лучший на supervised.

Статья, GitHub

P.S. Так можно даже инопланетную речь научиться распознавать 👽
CogView: Mastering Text-to-Image Generation via Transformers

Генерация картинок по тексту от Alibaba. Почти то же самое, что и DALL·E (OpenAI), но лучше (new sota), компактнее (4B vs 12B параметров) и стабильнее. Ещё они запустили сайт с демо, но только на китайском 😒

Step-by-step:
1. Заранее учим VQ-VAE автоэнкодить картинки. Их латентное представление будет использоваться как визуальные токены.
2. Токенизируем текстовое описание и конкатенируем к нему визуальные токены (см. схему).
3. Учим трансформер (GPT) последовательно предсказывать эти токены.
4. Декодим визуальные токены в картинку с помощью декодер-части VQ-VAE.

Статья, демо, GitHub (пока пустой)
Вот так выглядит Бог искусственного интеллекта по мнению text2image модели CogView.

P.S. Если, конечно, гугл перевёл мой запрос правильно: «人工智能之神»
This media is not supported in your browser
VIEW IN TELEGRAM
Environments for self-driving tasks

Свежая библиотека для обучения нейронок вождению (и парковке). Тут всё предельно упрощено – надо научить машину ехать как можно быстрее, двигаться по своей полосе и, главное, не врезаться.

Авторы предоставили несколько бэйзлайн решений (в основном RL) и ноутбуки с примерами.

Статья, GitHub, colab.
A Survey of Data Augmentation Approaches for NLP

Аугментировать картинки — изи, но что же делать с текстом? Оказывается, можно много всего делать, и всё это описано в одной статье.

Основные способы аугментации:
1. Token-level: случайные перестановки, замена на синонимы, удаление рандомных и не рандомных слов.
2. Text-level: paraphrasing (GPT-2), backtranslation c помощью предобученных моделей, замена пропущенных слов с помощью masked-LM (см. картинку).
3. (самое интересное) Activation-level: aугментация внутри модели — зашумлять или смешивать эмбеддинги слов и по-всякому двигать внутренние репрезентации текста и этеншны.

Статья
RuBERT-tiny

Сегодня на Huggingface 🤗 появился крошечный берт для русского языка!

Модель весит всего 45 мб и супер-быстро работает на CPU (6ms/предложение), а на тестах не уступает старшим версиям.

Модель, блог

P.S. Английский этот берт тоже понимает
This media is not supported in your browser
VIEW IN TELEGRAM
TextStyleBrush

Facebook AI представили модель для генерации стилизованного текста по единственной референсной картинке.

Выглядит довольно круто. Теперь будет проще подделывать документы, но ни код ни модель пока не опубликовали 🤷‍♂️

Зато опубликовали размеченный датасет из 135К фотографий с разнообразными прикольными шрифтами.

Статья, блог, датасет
Как устроен TextStyleBrush?

Полный фреймворк состоит из 7(!) моделей:

1. Style (image) encoder
2. Content (text) encoder
3. Style mapping model
4. Stylized text generator (StyleGAN2)
5. Pretrained typeface classifier (классификатор шрифтов)
6. Pre-trained OCR (распознавание текста)
7. Discriminator

Модели 1-4 используются для инференса, 5-7 для лоссов.

Обучение здесь вполне типичное для стайл трансфера: учится ган на нескольких лоссах, главные из которых — reconstruction и cycle loss, которые учат модель перегонять текст из одного стиля в другой и обратно.

Также, здесь используются пара дополнительных лоссов на основе моделей 5-6, контролирующих качество сгенерированных текстов на картинке.
Моя кривая диффузионная модель желает вам спокойной ночи 😬
This media is not supported in your browser
VIEW IN TELEGRAM
Alias-Free Generative Adversarial Networks (by NVIDIA)

Несмотря на translation-инвариантность конволюций, генеративные модели этим свойством не обладают, и текстуры «приклеиваются» к определённым пикселям. Например, при движении лица волосы будто бы остаются на месте.

Оказывается, это следствие алиасинга (aliasing) — кривого смешивания дискретных сигналов (в этом виновата теорема Найквиста). NVIDIA предлагает простой трюк, который исправляет этот дефект, делая сеть пространственно и вращательно эквивариантной, что позволяет двигаться по латентному пространству ГАНов более реалистично. Говорят, что это открывает им путь в мультипликацию и редактирование видео.

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

Статья, GitHub, блог
🔥 Сбербанк сделал ru-CLIP

SberDevices выложили в открытый доступ Русско-язычною версию CLIP — модели от OpenAI (тык), которая в начале этого года придала ОГРОМНЫЙ импульс исследованиям на стыке NLP и CV (прям как я люблю).

По-сути, CLIP состоит из двух моделей: image-encoder и text-encoder. Они эмбеддят картинки и тексты в одно пространство, позволяя делать кучу всего интересного, например zero-shot классификацию картинок, поиск изображений по описанию, image captioning и много другой магии (тык, тык).

Для того чтобы прикрутить поддержку русского языка они заменили text-encoder на RuGPT3Small и вставили пару линейных слоёв после обоих энкодеров. Дальше эти хитрюги обучили только эти линейные слои (забавно, но этого хватило).

Блог, GitHub, HuggingFace

P.S. Астрологи объявили неделю CLIP, поэтому ниже будут ещё посты про эту чудо-модель 😉
Что такое CLIP и как он работает?

Почти полгода прошло с тех пор, как OpenAI представила CLIP: Contrastive Language–Image Pre-training. Это было то, чего мы так долго ждали — универсальная модель, которая одинаково классно понимает и картинки и текст, открывая возможности для исследований на стыке CV и NLP.

Если коротко, то эта штука энкодит картинки и их описания в близкие (в идеале — одинаковые) эмбеддинги. Но если копнуть глубже, то эта модель научилась выявлять «open-set visual concepts from natural language» и показывает удивительные способности к генерализации. Она понимает высокие уровни абстракции и неявные связи между ними.

CLIP состоит из двух моделей: image-encoder (ViT или resnet50) и text-encoder (transformer). Для обучения собрали огроменный датасет из 400M картинок с описаниями из интернета. Энкодеры одновременно учатся генерировать эмбеддинги для картинок и описаний, максимизируя косинус между правильными парами из батча и минимизирую между всеми остальными.

Статья, GitHub, блог
CLIP слишком сильно абстрагирует

Было обнаружено, что в мозгу человека есть мульти-модальные нейроны, которые реагируют на одну и ту же абстракцию в разных проявлениях. Такое же свойство было обнаружено и в нейронах CLIP 🤯

Оказалось, что эта модель, подобно человеку, оперирует абстрактными концептами. Кроме того, в пространстве таких концептов действует более-менее линейная алгебра! Например, концепт «копилка» = «игрушка» + «животное» + «деньги».

Но у такой линейной алгебры есть и свой недостаток — adversarial атаки. Особым образом комбинируя концепты можно заставлять модель неправильно интерпретировать увиденное, например, если на собаку приклеить значки доллара, то она распознается как «копилка», а если на яблоке написать «ipod», то оно превратится в Apple Ipod 💁‍♂️

Статья, GitHub, блог

P.S. Такую овергенерализацию кто-то принимает за недостаток, но я считаю, что это очередной шаг в сторону general AI.
Как CLIP понимает эмоции:
😩=👸+🧠+👚
🥰=😊+❤️-🤢
😯=🥳+😱+😁
Darker than Black-Box: Face Reconstruction from Similarity Queries

Препринт моей статьи про privacy уязвимость систем распознавания лиц.

Получилось осуществить атаку в самом тяжёлом сценарии, когда атакуемая модель (ArcFace) — это чёрный ящик, принимающий на вход фотографию и выдающий только одно число — насколько эта фотография похожа на человека с заданным id.

Обнаруженная уязвимость позволяет за несколько тысяч обращений к модели выяснить как выглядит человек всего лишь по его айдишнику.

Атака производится с помощью специально созданных синтетических изображений, которые последовательно посылаются в систему распознавания лиц, а затем, на основе её ответов, они комбинируются в узнаваемое лицо.

P.S. Теперь получается, что к персональным данным нужно относить не только фото человека, но и его id 🤷‍♂️

Статья, GitHub
This media is not supported in your browser
VIEW IN TELEGRAM
Image Super-Resolution via Iterative Refinement (by Google)

Теперь моими любимыми диффузионными моделями занялся и Google, на этот раз для super-resolution (SOTA на CelebA-HQ).

Представленная модель называется «Super-Resolution via Repeated Refinement» (SR3). В её основе лежит UNet-based диффузионная модель (тык) с двумя модификациями:

1. К инпуту всегда конкатенируется bicubic up-sampled low-resolution image. Это нужно для кондишнинга на конкретной картинке, чтобы в высоком разрешении генерировалась именно она.
2. Учится не одна модель, а каскад из 3 юнетов для разных разрешений 64→256→1024. Это улучшает качество генерации и сильно упрощает сложность обучения.

P.S. Теперь можно не играть в MinMax игры Ганов и мучиться с их стабилизацией, ведь есть диффизионные модели с явным лоссом для оптимизации! Надеюсь, что в этом году нас ждёт ещё много крутых работ про них 👀

Статья, блог