Запрети мне псевдолейблить – Telegram
Запрети мне псевдолейблить
2.76K subscribers
153 photos
3 files
147 links
Канал о пути к Kaggle competitions (теперь уже) GrandMaster и пиве, которым обливаешься в процессе

Последний авторский канал про мл, претендующий на искренность и позволяющий ставить клоунов
Download Telegram
#UBC

3 место: Немецкий Любитель Хайка

Игры с данными:
Интересно подошел к разметке внешних датасетов: когда лейблы в датасетах не метчились идеально на лейблы соревнования (например в одном из внешних источниокв данных таргеты HGSC и LGSC были объеденены в один класс), он доразмечал данные своим претрейном. Мол моделька тренированная на другом датасете говорит, что больше на HGSC похоже, значит такую метку и поставим.
Сегментационные маски тоже использовал для создания псевдоTMA. Если на тайле нет маски, то просто помечал ей класс как Other.

Пайплайн:
Автор вложил значительные усилия в отладку пайплайна обработки полных изображений, нарезку и филтр пустых тайлов. В итоге выбрал pyvips как библиотеку для работы и ошибся. Мы с Сережей тоже много времени убили на то, чтобы заставить модели работать на полных картинках при учете ресурсов Kaggle на инференс. Это настолько было душно, что Сережа родил бенчмарк для загрузки png картинок и работы с ними и начал тестить на скорость разные либы для аугментации. К сожалению мы как-то не подумали, что можно ГУГЛИТЬ и не нашли Chowder и вообще MIL подходы. Может сидели бы сейчас довольные на охоте. На охоте крепкое. Но посты почитайте, там прям хорошее честное и главное актуальное сравнение.

Модель:
Вдохновленный статьей, фокусирующейся не столько на SOTA в данной области, сколько на сравнении методов. Автор выбрал Lunit-DINO претрейн в качестве базовых весов. Удивительно, что веса были специально обучены на медицинских снимках. Он использует FP16 для ускоренного извлечения признаков. Вместо подхода MIL, предпочел CLAM. Кстати очень забавная статья: ее писали арабы из Mahmood Lab, так что все картинки и схемы справа налево 🕌. Основное отличие- для аггрегации признаков извлеченных из картинок используем модельку на основе эттеншна, а не GRU.

P.s.
Редкое явление, но автор дает обзор своего сетапа: домашний компьютер с GTX 4090. 6 часов на извлечение фичей из всех изображений и еще час на тренировку.
Еще дает глубокие размышления о переобучении модели и вывод, что сходство данных одного пациента приводит к ограниченной генерализации. Модель, кажется, более склонна к выучиванию конкретных срезов и снимков, вместо того чтобы обобщать глобальные закономерности. Критериям решения о оверфите, к сожалению, не делится.
👍8🔥32
Кагл теперь будет вознаграждать за лучшие райтапы.

Смотрите на тренд:
1. Сначала стали давать мерч за топ-50 лучших описаний. Прописали нужные параграфы для каждого райтапа и основные вехи, но это повлияло скорее на количество, чем качество райтапов. Обычно описаний было меньше 50, так что шанс залутать майку был 100%. К сожалению это создало неприятную ситуацию, когда райтапы сделаны для того, чтобы получить фиксированный мерч и особой ценности не несут.

2. Затем сами организаторы стали давать дополнительные призы за writeup. Это уже увеличило качество описаний и их объем. Но качество райтапа все же корелированно с местом на ЛБ, так что получаем из 20-30 топовых мест примерно пятидесятипроцентную конверсию в хорошие описания. Кстати, денег нам в итоге дали именно по этой программе

3. Теперь еще и Kaggle стал выдавать грант на год за лучшие описания.

Выглядит так, будто Alphabet наконец понял, зачем они купили Kaggle себе и толкают его в комьюнити-образовательную платформу. К этому еще и все более плотная интеграция колаба и каггла подталкивает. За 8 лет с момента покупки очень многое изменилось.
🔥122👍1😍1
#UBC

Первое место, дело престижа (часть первая)

Занял
его стартап, который делают авторы уже несколько раз упомянутого Chowder. Собственно цель стартапа- анализ WSI снимков.
Кстати, Чаудер- это такой суп густой. Сегодня обязательно приготовлю в честь этих ребят

Хайлайты:
1. Своя foundation model для клеточных снимков- Phikon. (Статья). Берем ее на заметку, чтобы решать WSI-соревы, которых в последнее время стало много. Это такой VIT-transformer, который уже видел огромную кучу снимков.
2. Chowder- как MIL пайплайн. Вышел в 2020 году, все еще не хуже более свежих DTFD-MIL и TransMIL. Еще и ансемблируется сам с собой хорошо.
3. Вложились в быстродействие. Сережа написал хороший пост с разбором того, как именно: там и Ray, и кастомные тулы на С и даже немного классического CV. Подписывайтесь на его канал уже.
Меня очень вдохновляет история с кастомной тулой на C. В какой-то момент я даже сел похожую писать конечно на Rust, но стало лениво загружать в датасеты компилятор и сорсы и ставить его в энве без интернета.

Данные:
Не использовали внешние данные. А оно и не надо, потому что они хостят модель для снимков, которая уже была достаточно претренирована на WSI снимках.
Все большие картинки обрезали по thumbnails: выделяли трешхолдом яркости не пустые регионы и уже по координатам вычисляли, какой патч надо вырезать с полной картинки для модели.
Затем для TMA делали ресайз, чтобы размер клеток соответствовал размеру WSI. Во время анализа выяснили, что 38 WSI были неправильно предобработаны и их ресайз не соответствует ресайзу прочих. На прикрепленной картинке например видно, что размер красных кровяных телец на них другой, нежели в большинстве снимков. Это было довольно важно, потому что эти сломаные картинки почти все относились к одному классу и тем самым вносили шум в модель.
👍9🔥32
#UBC

Первое место, дело престижа (часть вторая)

Модели:
Для демонстрации превосходства своего пайплайна на Chwoder + Phikon (их balanced acc 0.66 против второго места с 0.61), совершенно пижонски не тюнили гиперпараметры, а подобрали их на глаз.
Оптимизатор AdamW (классика для трансформеров в больших задачах), lr=10-e4, weight_decay=10-e3 b тренировка на CE. Никаких вам focal loss.

50 Chowder-моделей в каждом из 5 фолдов с разными инициаллизациями и усреднение. Мало того, они еще и каждый вес трижды рестартили. В итоге получилось 5 x 50 x 3 моделей. Все из них откалбировали на внутренней валидации. Немного помог отбор 65 лучших по внутренней валидации моделей.
Для того, чтобы фильтровать выбросы, которые были в тесте, но которых не было в трейне использовали трешхолд по энтропии H = -sum(p*log(p)), который подобрали по лб

Трюки для инференса:
Натренировали маленький resnet18 определять, является ли картинка TMA или WSI, чтобы в рантайме определять, в какую ветку пайплайна ее отпускать.
Т.к. использовали довольно маленькие патчи (224p), их получалось 10к+ для каждой WSI картинки. Решили семплировать из всех 200 патчей и работать на них. Для TMA проблемы семплирования не было- из-за нормализации размера там и 50 патчей не набиралось.

И классические выводы:
1. Если вы вдруг делаете технологический стартап- заглядывайте на каггл. Вдруг захостят задачу под вас и вы бесплатно заявите о себе
2. Читать статьи по научным задачам- довольно полезно. В этом соревновании в топ-10 есть минимум 3 команды, которые просто нагуглили Chowder, завели его и попробовали.
3. Для будущих соревнований по снимкам попробуйте Phikon, а если там еще и что-то похожее на MIL, то конечно Chowder. Парни не зря стараются, они для нас делают
4. Анализируйте даже картиночные данные. Вот тут кластеризация помогла найти ошибку предобработки организаторов и дала немножко скора
7🔥3
Пока собираюсь с силами, чтобы разобрать Enefit пошерю вам красивое
5
Forwarded from 🗞 Виз Ньюз (Nikita Rokotyan)
This media is not supported in your browser
VIEW IN TELEGRAM
📖 Коллекция иллюстраций об устройстве нейросетей начиная аж с 1943 года. Есть на что посмотреть.

Картинки: https://philippschmitt.com/blueprints-for-intelligence/

Эссе: https://philippschmitt.com/blueprints-for-intelligence/introduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Вас остановила полиция репостов за неуказание источника. С вас штраф: поцелуйчик. Впредь будьте аккуратнее
6💋5
Forwarded from Competitive Data Science | channel Chat
Справедливо! Уточнил источники :)
👍52😁2
Вы же помните, что этот канал создан, как карго-культ pola.rs?
Так вот, к поларсу пришла Nvidia и предложила им дать своих инженеров, чтобы они впиливали RAPIDS в polars.

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

Думайте. Подписаться.
👍152
Снимок экрана 2024-04-09 в 15.57.02.png
66.1 KB
HMS- Harmful Brain Activity Classification закончился и значит в ближайшем будущем будем разбирать топовые решения из него. Соревнование оказалось дико конкурентным, 2800+ команд. Нам удалось залезть в top 2%, но всегда же интересно, что там придумали гении из золота?

Разбор enefit кстати отменяется: там скучно и нас удалили с ЛБ по неизвестным причинам. Скорее всего кернел умер от ошибки в kaggl forecasting API.
👍176🥰3🎉1
#HMS

HMS - Harmful Brain Activity Classification

Последнее время решал медицину. 

Данные:
Уважаемые люди из Harvard Medical School (на секундочку лидер рейтингов лучших ресерчерских медицинских школ) собрали нам датасет ЭЭГ и кардиограмм своих пациентов и даже разметили их.



У данных есть иерархическая структура:

Для одного и того же пациента могут быть записаны несколько ЭЭГ произвольной длины. 

Из этих ЭЭГ могут быть выбраны участки по 50 секунд, из которых разметчиков попросили оценить центральные 10 секунд. Разметчиков для одного такого семпла обычно более одного (может быть больше двадцати)

Каждый такой семпл разметчиков попросили отнести к одному из 6 классов:

1. Судороги (SZ)
2. Генерализованные эпилептические разряды (LPD)
3. Латеризованные эпилептические разряды (GPD)
4. Латерализованнная ритмическая дельта-активность (LRDA)
5. Генерализованная ритмическая дельта-активность (GRDA)
6. Прочее

Как метрику выбрали KL-div. В силу того, что по разным семплам могло пройтись несколько разметчиков, голоса разметчиков нормировали на число проверяющих и именно это великолепие стали рассматривать как вероятности, которые нам надо учить. 

По ощущениям- там еще и качество разметчиков страдало. Там, где перекрестной проверки больше поведение сильно отличалось от участков с малой перекрестностью. Это прямо на ЭЭГ видно- идут пару минут с 1-3 голосами и преобладает класс other по-русски назовем его "я не знаю", а за ним сразу идет уверенное SZ от 16 из 17 размечающих. Странное совпадение, но пока организаторы не признались- не правда.

В этот раз хочу пройтись по большему числу топовых решений, потому что сил в сореву было какое-то невыносимое количество потрачено.

Как решать будете?

Думайте. Подписаться
👍177👎1
#HMS
Разберем 15 топовых мест еще и потому, что в сореве ровно столько золота

Аккуратно, на картинке ошибка. Там не 10 мин, а 10 сек спектрограммы

15 место:
Использовали три бекбона, которые мерджили в одну мегамодель. Обязательно попорбую в следующий раз, судя по всему это крайне продуктивный для каггла подход

Первая модель:
Вариация на тему Wavenet1D (Первая дополнительная картинка)
Добавили в активации еще и Mish.
Выражается как f(x) = x * tang(softplus(x))
Статью пока не читал, но судя по графикам она еще и не монотонная. Как учится в активациях немонотонность стоит обдумать. Пишите в комментах, почему это вообще может быть полезно.

Вторая модель: построена на Short Term Furier Transform
Брали фурье трансформ и рестакали его из чередования в конкатенации. Почему-то работало, сами не знают почему.

Третьяя модель: стандартная сетка для вижна, которую не сильно измывались. Даже не описывают конкретную модель. Подозреваю там был стак из кучи бекбонов.

Кстати в этой сореве FP16 ломал зачастую сетки и тренировка часто либо деградировала, либо вообще скатывалась в Nanы. Получается запретили включать FP16.
👍84🔥3😁1
Для обучения всего этого зоопарка использовали набор доменных аугментаций:
1. Флипы электродов правых и левых долей
2. Флипы электродов передних и задних долей
3. CropCat. Примерная идея на картинке. В принципе засчитываем за угаданный MixUp в комментах, только не с весами, а по времени.
4. Шум на входной сигнал

Из данных использовали только семплы, в которых больше 10 голосов. И никакого псевдолейблинга :(
🔥7👍2
#HMS
Пост коротких идей из минорых мест

14 место:
1. Использовали двухстадийное обучение (это все использовали).. В соревновании быстро заметили, что обучаться надо сначала на всех данных, а потом файнтюнить модель семплах, на которые посмотрели много экспертов, потому что в паблик/прайвет тесте были именно такие семплы. Но эти парни решили, что вместо того, чтобы выкидывать низкокачественные семплы на втором этапе, их можно запсевдолейблить той же моделью с первого этапа и уже с меньшим весом чем у нормальных данных файнтюниться еще и на этих псевдолейблах, а не только на высококачественных.
2. Прочитали все дискашены и нашли в них статью одного из авторов соревнования. Там нашли похожее на соревание исследование, где автор использовал довольно специфичную модель валидации. Краткая суть: один из авторов соревнования использовал разнородных по обученности экспертов и некоторые из них не были до конца обучены на работу с ЭЭГ, поэтому значимо чаще предсказывали 'я не знаю', что отправлялось в Other. При этом они могли попадать в 'высосокачественные семплы' и портить распределение. Поэтому они разбили трейн как в статье и выкинули семплы, от которых должен был исходить шум. А еще тут работало простое советское 'домножать вероятность класса Other на констатнту'. Читайте статьи авторов соревы, они может и не специально, но подсказывают дизайном вам правильные решения
3. Использовали вместо STFT short-time Fourier transform другое преобразование сырых ээг: CWT continuous wavelet transform
4. Ну и дальше как все использовали сетки для CV: resntet/effnet/etc

12 место:
1. Заранее поняли, что надо учиться на высококачественных семплах, и использовали семплы низкого качества только для псевдолейблинга
2. Использовали случаный шум к оффсету на этапе TTA, что давало примерно ~0.01. Это много, между 12 и 18 местом примерно такой разрыв. Т.е. это то, что явно мешало на медальку
3. Использовали для стакинга hill climbing. Как-нибудь про нее отдельно напишу, тоже важная техника для сорев
🔥9👍64
#HMS
Пост коротких идей из минорых мест 2

11 место:
1. Использовали как инпут зоопарк модальностей:
STFT
MFCC Mel-frequency cepstral coefficients
LFCC linear-frequency cepstrum coefficients
RMS
2. Усредняли KL-div loss по всем классам и лоссы по каждому классу индивидуально. Т.е. считали 6 One-Versus-Other лоссов дополнительно и все вместе усредняли
3. Стакнули на OOF модель второго уровня, которая давала буст 0.01 относительно простого усреднения. Всего было 16 базовых архитектур, каждая по 5 фолдов. Думайте, подписаться

10 место:
1. Взял все 19 каналов и просто нарисовал их амплитуду
2. Приправил картинками спектрограмм для вязкости
3. Добавил туда визуализацию STFT и других преобразований чтобы обои точно отклеивались
4. Пожарил 20 моделей на своей гпу
5. Сказал "оххх, золото мое золото"

Нет вы просто зайдите по ссылке и посмотрите на его картинку входную, я не шучу.
Образ мышления грандмастеров сводит иногда с ума, но я кажется улавливаю. Следует ли из деепричастия причастие- вопрос открытый
😁11👍32🔥1
#HMS

9 место:
1.
Использовали двух и трехмодальные системы. На вход сырой ЭЭГ, ванильные спектрограммы от каггла и спектрограммы Криса Дейота (о его решении следующий пост).
2. Учили мультихед, который предсказывал конкретную запись и предсказывали, будет ли в этой записи Nan. Это скорее такой auxiliary loss, чтобы модель лучше генерализовывала данные и училась понимать саму доменную область, чем улучшала понимание задачи. Подробнее можно тут почитать: тык
3. Чтобы стакнуть свою кучу моделей использовали L-BFGS-B, а там 150 моделей было примерно.
4. Использовали аугментацию таргетов. Интуиция такая: раз у нас есть 15 разметчиков с одним мнением, то может нам в качестве аугментации использовать только часть из них?
Ситуация с таргетом не должна поменяться критически, но разнообразие это для модели внесет. Был вектор таргета
[1, 0, 0, 0, 14]
Мы можем «забыть одного размечающего» и из него получить
[0, 0, 0, 0, 14] и [1, 0, 0, 0, 13]
Делали так только для семплов, у которых число голосов было больше 10. У меня к сжоалению этот трюк не завелся
5. Использовали веса семплов равные числу голосов размечающих. Когда 3 человека говорят, что это судороги, это в тре раза надежнее, чем один человек.
8👍2