Интересное что-то
546 subscribers
2.77K photos
253 videos
140 files
4.57K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from DevFM
Behavior Driven Development

BDD — методология разработки "через поведение". Серия статей по BDD позволит достаточно глубоко разобраться в теме.

Для ознакомления с BDD можно прочесть первую статью. Во второй статье автор рассказывает про Gherkin Language — язык описания сценариев поведения. Далее в цикле статья с примерами написания сценариев и рекомендациями по написанию подобных сценариев.

У автора есть также более прикладная статья — применение BDD на питоне, где можно посмотреть практические аспекты.

А закончить стоит примером настоящего проекта, где применяется BDD. Ребята уже давно разрабатывают консольный task manager (пример BDD тестов). Код несложный, можно достаточно быстро разобраться что к чему.
#python
#python #quant
Интересная статья и изыскания на Python кванта, не знавшего про Spark
#dl #nlp
Как сделать суммаризацию в диалогах и запихнуть в @summarization_bot
Forwarded from Kirill Gelvan
Для интересующихся: моделька на HF с инструкциями по запуску
Под капотом задача абстрактивной суммаризации, а именно модель mBart дообученная на суммаризацию диалогов в чатах (датасет SamSum который мы перевели на русский язык при помощи GoogleTranslateAPI)
Forwarded from MarksRemarks (Mark Baushenko)
Так получилось, что я занял первое место 🥇 в квалификации Vk Cup 2022 (почти ничего не делая 🤔) и пару человек попросили выложить решение. Так вот оно.

🎁🎁🎁🎁🎁
Please open Telegram to view this post
VIEW IN TELEGRAM
#qa
Кое-что из этого нужно не только тестировщикам
Дорожная карта навыков тестировщика, которая сделает из зёлёного джуна матёрого сеньора (ну или хотя бы мидла).
Forwarded from DLStories
Open-Vocabulary Semantic Segmentation with Mask-Adapted CLIP

В Meta придумали, как использовать CLIP для решения задачи open-vocabulary semantic segmentation. Если совсем честно, то у них получился не прям “open-open”-vocabulary, но идея все равно хорошая.

Вот как она работает:
Берем MaskFormer — это сеть для задачи обычной сегментации на С классов. Работает она так: для каждой входной картинки MaskFormer выдает N пар (mask, class). Mask — бинарная маска одного из объектов на входной картинке. Class — вектор длины С — распределение вероятностей по классам для объекта, для которого построена маска.

Теперь немного модифицируем выход MaskFormer и обучающий датасет. Смотрите, берем датасет для сегментации, например, COCO-Staff. В нем для каждой картинки есть набор пар (mask, class). Для каждой такой пары берем текстовое название сlass и прогоняем его через текстовый энкодер CLIP. В итоге получаем, что в нашем датасете для каждой картинки теперь есть набор пар (mask, emb). Тут emb — CLIP-эмбеддинг названия класса, которому принадлежит объект с маской mask.

Ну и будем теперь учить MaskFormer для входной картинки выдавать не пару (mask, class), а (mask, emb). Т.е. наша модель учится не классифицировать найденный объект на один из С классов, а выдавать для него CLIP-like эмбеддинг, который содержит информацию о том, что это за объект. И когда на вход модели приходит новая картинка, мы берем MaskFormer и получаем наборы (mask, emb). Потом сравниваем emb с эмбеддингами CLIP’а для разных названий классов (‘стул’, ‘человек’, …) и выдаем в качестве класса объекта тот, который ближе всего к эмбеддингу emb.

Тут становится понятно, в каком месте модель не слишком “open”-vocabulary. В датасете COCO размечены конечное количество классов (а именно, 171). Ну и не приходится ожидать, что модель, которая училась находить бинарные маски для людей-собак-кошек, вдруг начнет выдавать отдельные маски для носа-глаз-рук-ног.
Но потенциально модель может выдать эмбеддинг emb с произвольным смыслом, это да.

Ну и последнее замечание: описанной выше модели авторам показалось мало. Поэтому они предложили добавить второй способ получения классов для mask:
Как мы сказали, MaskFormer выдает пары (mask, emb). Мы можем взять mask, вырезать кусок картинки, которому соответствует эта mask и подать этот кусок картинки на вход CLIP. CLIP выдаст эмбеддинг этой картинки, который мы так же сможем сравнить с эмбеддингами для разных названий классов (‘стул’, ‘человек’, …), и таким образом получить нужный класс объекта для нашей маски. Правда, в таким виде алгоритм работает не очень хорошо: CLIP все же не был обучен под такой вид картинок. Поэтому в Meta собрали небольшой датасет “кусок картинки — класс” и дообучили на нем CLIP. Как именно собирали датасет и дообучали, читайте в оригинальной статье.

Ну и итоговое предсказание модели сегментации авторы получают, усредняя emb из MaskFormer и эмбеддинг из CLIP, полученный на основе mask. Работает это все хорошо, бьет предыдущие open-vocabulary нейронки по метрике mIoU.

Ссылки:
Страница проекта
Статья
Код на GitHub
Изначально инфу про статью нашла в канале эйай ньюз
Forwarded from DLStories
This media is not supported in your browser
VIEW IN TELEGRAM
На сайте работы, ктстаи, обнаружена отличная гифка с иллюстраницей устройства модели. Тут верхний flow — первый способ получения эмбеддингов классов (emb из MaskFormer), нижний flow — второй способ получения эмбеддингов классов (вырезаем куски картинки, соотв. mask, подаем в CLIP)