Я безумно люблю самообразовываться по разным темам, это один из моих способов расширять кругозор. К тому же, у меня канал про модели.
Однажды подруга мне сказала, что ей не нравятся фотографии, которые ей снимают окружающие. Я подумал, что это вообще распостраненная проблема и наверное скилл снимать лучше среднего может мне пригодиться. Я пошел и прочитал книжку, которую до сих пор всем советую: Модель. Проблемы позирования. Надо бы кстати перечитать.
После прочтения перестаешь сомневаться, что с твоими фотками что-то не так и учишься делать неплохие снимки, а потом еще и отделять неприятие человеком своей внешности от качества съемки. Книга- фундаментальная база всех лайфхаков съемки от инстаграм-блогерш.
В рамках того же паттерна еще с 2020 года я был подписан на Start Career in DS, как хороший источник материалов вокруг дс и базы, которую могут спросить на собеседованиях/можно посоветовать чуть менее опытным коллегам или студентам. Канал- это скорее источник постоянного планомерного прикладного образования нарезанного мелкими кусочками. Как раз то, что нужно на старте. Качаться сюда -> Start Career in DS
Однажды подруга мне сказала, что ей не нравятся фотографии, которые ей снимают окружающие. Я подумал, что это вообще распостраненная проблема и наверное скилл снимать лучше среднего может мне пригодиться. Я пошел и прочитал книжку, которую до сих пор всем советую: Модель. Проблемы позирования. Надо бы кстати перечитать.
После прочтения перестаешь сомневаться, что с твоими фотками что-то не так и учишься делать неплохие снимки, а потом еще и отделять неприятие человеком своей внешности от качества съемки. Книга- фундаментальная база всех лайфхаков съемки от инстаграм-блогерш.
В рамках того же паттерна еще с 2020 года я был подписан на Start Career in DS, как хороший источник материалов вокруг дс и базы, которую могут спросить на собеседованиях/можно посоветовать чуть менее опытным коллегам или студентам. Канал- это скорее источник постоянного планомерного прикладного образования нарезанного мелкими кусочками. Как раз то, что нужно на старте. Качаться сюда -> Start Career in DS
Литрес
Модель. Проблемы позирования — Уильям Мортенсен | Литрес
…В книге «Модель» Мортенсен делится своим богатейшим опытом создания портрета и работы с моделями. Сейчас уже появилось достаточно много литературы, посвященной этой теме. Однако книга Мортенсена сто…
🔥18🌭1
#UBC
10 место:
Пример хорошего не кагглерского решения. Примерно так же задачка бы и решалась в продакшне.
Подтянули 5 внешних датасетов + тесовый сет, которому просто выдали самый частотный класс как таргеты. Самое забавное, что для двух из внешних датасетов авторы просто нащелкали скриншотов привьюшек с сайта.Ну не платить же капиталистам из мира науки, ей богу
Предобработка тоже довольно стандартная:
Для того, чтобы увеличить схожесть WSI и TMA у последних белый фон заменили на черный.
Маски для WSI-трейна порезали на тайлы и подогнали к размерам thumbnails. Потом отсротировали тайлы по заполненности масок и взяли топ 16 для обучения.
Для TMA, которые в дефиците сделали чуть иначе: Resize -> случайный даунскейлинг и возвращение к изначальному размеру -> flip/rotation -> Channel shuffle/Gaussian Blur/Imagenet Normalization
Валидация:
Обычный StratKFold с 5 фолдами. Стратифицировали по TMA/WSI и целевому классу.
Модель:
Обучили MaxViT Tiny FPN(это такой efficientnet в мире VIT, где добавили больше Conv слоев, чтобы работало быстрее и скейлилось хорошо)
На бекбоне EfficientNetV2 конечно же.
Как оптимизатор AdamW, CosineScheduler и AMPстало быть, включаем FP16 , чтобы 15 эпох проходили как можно быстрее.
Постобработка:
Для тест тайма использовали 3xTTA (Test time augmentation. Учим модель на аугментациях, а потом в тестайме одну картинку несколько раз прогоняем через модель с разными аугами и усредняем результаты).
И того 10 место и решение на 10% хуже по BalancedAccuracy, чем у top1.
10 место:
Пример хорошего не кагглерского решения. Примерно так же задачка бы и решалась в продакшне.
Подтянули 5 внешних датасетов + тесовый сет, которому просто выдали самый частотный класс как таргеты. Самое забавное, что для двух из внешних датасетов авторы просто нащелкали скриншотов привьюшек с сайта.
Предобработка тоже довольно стандартная:
Для того, чтобы увеличить схожесть WSI и TMA у последних белый фон заменили на черный.
Маски для WSI-трейна порезали на тайлы и подогнали к размерам thumbnails. Потом отсротировали тайлы по заполненности масок и взяли топ 16 для обучения.
Для TMA, которые в дефиците сделали чуть иначе: Resize -> случайный даунскейлинг и возвращение к изначальному размеру -> flip/rotation -> Channel shuffle/Gaussian Blur/Imagenet Normalization
Валидация:
Обычный StratKFold с 5 фолдами. Стратифицировали по TMA/WSI и целевому классу.
Модель:
Обучили MaxViT Tiny FPN
На бекбоне EfficientNetV2 конечно же.
Как оптимизатор AdamW, CosineScheduler и AMP
Постобработка:
Для тест тайма использовали 3xTTA (Test time augmentation. Учим модель на аугментациях, а потом в тестайме одну картинку несколько раз прогоняем через модель с разными аугами и усредняем результаты).
И того 10 место и решение на 10% хуже по BalancedAccuracy, чем у top1.
🔥14❤5👍5 3
#UBC
9 место
Тут авторы совем не использовали внешних данных, но использовали интересную схема тренировки.
Препроцессинг:
Для начала, решили сделать отдельный if для определния wsi/tma в рантайме и не сильно полагаться на авторскую разметку. Просто они не знали, что для ускорения можно использовать простой советскийpolars
Если классифицированнваякартинка WSI- уменьшаем ее в 3 раза. Нарезаем на тайлы.
Во время тренировки фильтруем тайлы:
Используем все тайлы, если отношение фона/изображения больше 0.5
Если 0.65, то первые 50 тайлов.
Если 0.75, то первые 20 тайлов
Тренировка:
Далее идут три этапа тренировки:
Этап 1: Обычная тренировка, учим классы из трейна через BCE, верим в лучшее.
Этап 2: С помощью модельки с первого этапа генерируем что?Псевдолейблы! . Если такой лейбл выше 0.3, то округляем до единицы, иначе до нуля. И нашу сетку с первого этапа тренируем с нуля с лоссом: BCE(labels) + 0.3 * BCE(🤍️ )
Этап 3: Берем веса с этапа 2 и используем🤍️ для тренировки с уменьшеным lr. Теперь учимся на BCE(labels) + 0.15 * BCE(🤍️ )
Для меня выглядит как костыльный вариант LabelSmoothing/OnlineLabelSmoothing, но ведь работает же.
Модель: Работали с бекбонами efficientnetb4 и efficientnet_v2s для maxvit_tiny.
Про отпимизатор не пишут
В комменты призываются все эксперты в современном компьютерном зрении, которые смогу объяснить, насколько распостранены такие нелобовые методы тренировки
9 место
Тут авторы совем не использовали внешних данных, но использовали интересную схема тренировки.
Препроцессинг:
Для начала, решили сделать отдельный if для определния wsi/tma в рантайме и не сильно полагаться на авторскую разметку. Просто они не знали, что для ускорения можно использовать простой советский
Если классифицированнваякартинка WSI- уменьшаем ее в 3 раза. Нарезаем на тайлы.
Во время тренировки фильтруем тайлы:
Используем все тайлы, если отношение фона/изображения больше 0.5
Если 0.65, то первые 50 тайлов.
Если 0.75, то первые 20 тайлов
Тренировка:
Далее идут три этапа тренировки:
Этап 1: Обычная тренировка, учим классы из трейна через BCE, верим в лучшее.
Этап 2: С помощью модельки с первого этапа генерируем что?
Этап 3: Берем веса с этапа 2 и используем
Для меня выглядит как костыльный вариант LabelSmoothing/OnlineLabelSmoothing, но ведь работает же.
Модель: Работали с бекбонами efficientnetb4 и efficientnet_v2s для maxvit_tiny.
В комменты призываются все эксперты в современном компьютерном зрении, которые смогу объяснить, насколько распостранены такие нелобовые методы тренировки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3 3👍2🌭2
#UBC
Восьмое место: История как мощный китайский почти мастер нафармил последнюю медальку на грандмастера
TMA и WSI процессим совсем раздельно.
Начнем с TMA:
0. Берем внешний датасет TMA. В нем своя разметка на живые/мертвые патчи. Трейн соревы используем для валидации.
1. Для TMA в датасете соревы есть маски, так что гоняем только на патчах, которые затронули маску.
2. Тренируем аркфейс на патчах с мертвыми и здоровыми клетками из внешнего датасета, чтобы уметь выбрасывать возможные аутлаеры.
3. Тренируем в лоб на фичах экстрактора 'тяжелый' ансамбль для классификации на основе EffNet и ConvNext.
Во время инференса:
1. Ищем аркфейсом ближайший семпл из своего внешнего трейна и проставляем тот же класс.
2. Если близкий по косайну семпл не нашелся или предсказался мертвым- предсказываем 'тяжелым стаком' из EffNet в разршении 1280 и ConvNext в 1024.
Таким образом аркфейс покрывал 60% TMA в тесте и оставшиеся 40% уже прогонялись через тяжелые модельки. Учитывая размер данных- мощная экономия времени и как следствие возможность применять стак из 4 моделей для TMA.
Для WSI:
1. Берем фичэкстрактор arcface из части с TMA и извлекаем им фичи
2. Предсказываем класс 'другое' и если класс имеет большую вероятность- выносим его в отдельный список.
3. С помощью DFTD-MIL сгенерируем из нашей кучи 'других' WSI еще немного синтетических WSI.
4. На всем этом объеме учим DFTD-MIL.
Во время инференса:
1. Даунскейлим WSI до разрешения в 768
2. Извлекаем фичи фичэкстрактором для TMA из WSI-картинки
3. К фичам применяем DFTD-MIL и извлекаем фичи ансамблем EffNet и ConvNext
4. Предсказываем по ним DFTD-MIL головой
Про оптимизатор/валидацию новоиспеченный грандмастер не пишет, потому что с получения статуса такие вещи становятся очевидны.
Восьмое место: История как мощный китайский почти мастер нафармил последнюю медальку на грандмастера
TMA и WSI процессим совсем раздельно.
Начнем с TMA:
0. Берем внешний датасет TMA. В нем своя разметка на живые/мертвые патчи. Трейн соревы используем для валидации.
1. Для TMA в датасете соревы есть маски, так что гоняем только на патчах, которые затронули маску.
2. Тренируем аркфейс на патчах с мертвыми и здоровыми клетками из внешнего датасета, чтобы уметь выбрасывать возможные аутлаеры.
3. Тренируем в лоб на фичах экстрактора 'тяжелый' ансамбль для классификации на основе EffNet и ConvNext.
Во время инференса:
1. Ищем аркфейсом ближайший семпл из своего внешнего трейна и проставляем тот же класс.
2. Если близкий по косайну семпл не нашелся или предсказался мертвым- предсказываем 'тяжелым стаком' из EffNet в разршении 1280 и ConvNext в 1024.
Таким образом аркфейс покрывал 60% TMA в тесте и оставшиеся 40% уже прогонялись через тяжелые модельки. Учитывая размер данных- мощная экономия времени и как следствие возможность применять стак из 4 моделей для TMA.
Для WSI:
1. Берем фичэкстрактор arcface из части с TMA и извлекаем им фичи
2. Предсказываем класс 'другое' и если класс имеет большую вероятность- выносим его в отдельный список.
3. С помощью DFTD-MIL сгенерируем из нашей кучи 'других' WSI еще немного синтетических WSI.
4. На всем этом объеме учим DFTD-MIL.
Во время инференса:
1. Даунскейлим WSI до разрешения в 768
2. Извлекаем фичи фичэкстрактором для TMA из WSI-картинки
3. К фичам применяем DFTD-MIL и извлекаем фичи ансамблем EffNet и ConvNext
4. Предсказываем по ним DFTD-MIL головой
Про оптимизатор/валидацию новоиспеченный грандмастер не пишет, потому что с получения статуса такие вещи становятся очевидны.
👍11🔥3❤2
Автор прошлого решения, Forcewithme уже попадал пару раз в мои разборы, но тут он добрался до грандмастера. У него довольно личная история:
Он три года подряд плотно решал каггл и мечтал о заветной золотой плашке. Шутка ли: 5 золотых, 13 серебряных и 4 бронзы. И вот остался его последни семестр, работа уже найдена, есть куча медалей, но сологолда нет. Уже пора семью заводить, работать работу и ездить на Volkswagen Golf, время прошло и он не успел. Но попытка за попыткой соло взять золото не удавалось:
Соло бронза в GoDaddy
Соло бронза в знаменитом по одному киприоту PetFinder
Соло серебро в ImageMatching с шейкдауном на 46 место с 20
Соло серебро Google Contrails
И вот наконец это соло золото!
Он три года подряд плотно решал каггл и мечтал о заветной золотой плашке. Шутка ли: 5 золотых, 13 серебряных и 4 бронзы. И вот остался его последни семестр, работа уже найдена, есть куча медалей, но сологолда нет. Уже пора семью заводить, работать работу и ездить на Volkswagen Golf, время прошло и он не успел. Но попытка за попыткой соло взять золото не удавалось:
Соло бронза в GoDaddy
Соло бронза в знаменитом по одному киприоту PetFinder
Соло серебро в ImageMatching с шейкдауном на 46 место с 20
Соло серебро Google Contrails
И вот наконец это соло золото!
Kaggle
ForcewithMe
Goal of ~~life~~ student year: **Kaggle Grandmaster**
Achieved GrandMaster on 2024.01.05.
In the following life: **Family**, **Career**, **Competition**.
-----------------------
Goal of competitions in 2024:
1. prize for any competition 🏆✔
2. a gold in…
Achieved GrandMaster on 2024.01.05.
In the following life: **Family**, **Career**, **Competition**.
-----------------------
Goal of competitions in 2024:
1. prize for any competition 🏆✔
2. a gold in…
🏆20👍11
Что вообще за MIL?
Это такой сетап задачи, когда у вас объект такой большой, что с ним неудобно работать. Можно конечно зарескейлить, но раки они бывают такие маленькие, что без лупы не разглядишь. Поэтому WSI картинки такие огромные. Мы ее режем на патчи и может так оказаться, что только на одном патче у нас рак, а все остальные здоровые. А лейбл у нас выдан конечно на всю картинку.
Для таких штук обычно извлекают сначала признаки каким-то одним экстрактором, а потом уже для этих фичей применяют аггрегацию.
Например можно просто взять MaxPooling и результат пихать в МЛП-классификатор. А можно пойти хитрее и применять attantion например. Вот в DFTD-MIL развивают этот подход и придумывают свой способ считать умную аггрегацию по картинкам.
Это не канал с обзорами статей, честно честно!
Это такой сетап задачи, когда у вас объект такой большой, что с ним неудобно работать. Можно конечно зарескейлить, но раки они бывают такие маленькие, что без лупы не разглядишь. Поэтому WSI картинки такие огромные. Мы ее режем на патчи и может так оказаться, что только на одном патче у нас рак, а все остальные здоровые. А лейбл у нас выдан конечно на всю картинку.
Для таких штук обычно извлекают сначала признаки каким-то одним экстрактором, а потом уже для этих фичей применяют аггрегацию.
Например можно просто взять MaxPooling и результат пихать в МЛП-классификатор. А можно пойти хитрее и применять attantion например. Вот в DFTD-MIL развивают этот подход и придумывают свой способ считать умную аггрегацию по картинкам.
❤12🔥2👍1😁1
#UBC
Шестое место: мы просто победили
Сначала не хотел брать этих ребят в разбор, но потом подумал, что стоит показывать не только Wunderwaffe.
Парни вспомнили хорошую статью по классификации снимков. Парни ее применили. Парни получили 3 место на паблике и 6 на прайвете.
1. Нарезаем картинки на патчи. Берем из них 1000 патчей. Если патчей не хватает- дублируем случайные до тех пор, пока не наберется тысяча.
2. Используем веса модели из статьи в разрешении 1000x768
3. Для MIL используем модельку из другой статьи. Запомните этот Chowder, мы о нем еще вспомним в грядущем посте. Если посмотреть картинки в статье, там даже на наши данные все похоже!
4. Ансамблим 7 разных обобщающих моделей из прошлого этапа и детектируем 'other' по средней энтропии (-sum(p*log(p))
5. Подбираем для other порог отсечения
Что могло бы улучшить, но как-то было лень заводить:
Можно было патчи выбирать не случайно, а с помощью небольшого (всего 5 млн параметров) трансформера
Картинка не является высказыванием, просто я искал 'Simple solution' и кекнул с результата
Шестое место: мы просто победили
Сначала не хотел брать этих ребят в разбор, но потом подумал, что стоит показывать не только Wunderwaffe.
Парни вспомнили хорошую статью по классификации снимков. Парни ее применили. Парни получили 3 место на паблике и 6 на прайвете.
1. Нарезаем картинки на патчи. Берем из них 1000 патчей. Если патчей не хватает- дублируем случайные до тех пор, пока не наберется тысяча.
2. Используем веса модели из статьи в разрешении 1000x768
3. Для MIL используем модельку из другой статьи. Запомните этот Chowder, мы о нем еще вспомним в грядущем посте. Если посмотреть картинки в статье, там даже на наши данные все похоже!
4. Ансамблим 7 разных обобщающих моделей из прошлого этапа и детектируем 'other' по средней энтропии (-sum(p*log(p))
5. Подбираем для other порог отсечения
Что могло бы улучшить, но как-то было лень заводить:
Можно было патчи выбирать не случайно, а с помощью небольшого (всего 5 млн параметров) трансформера
👍11😁4
#UBC 🚀
Место 5 🥳
Пайплайн этой модели оптимизирован для быстрой обработки крупных изображений. И совсем без MIL фреймворка. Пайплайн из двух больших кусков:
Глобальная сегментационная модель для предвыбора тайлов в WSI
1. Модель классификации тайлов (только для трейна) 🎨
2. Модель сегментации тайлов (только для трейна) 🖌️
3. Модель сегментации тайлов (для инференса) 🧩
Модель первая - это классификационная модель тайла с глобальным лейблом всей картинки. Основана на ConvNeXt. Обучена на порезанных на кусочки изображениях размером 1536x1536. Претренирована на внешних датасетах с лейблом 'other' для типов рака, которых нет в сореве.
Модель вторая - сегментирует раковые образования по маскам соревнования. Бекбон SEResNeXt и тренируется на данных соревнования.
Модель третья - более сложная. Генерирует лейблы следующим образом:
1. Первой моделью генерируем метки для всего тайла.
2. Прогоняет все изображения через вторую модель, сохраняя сгенерированные маски.
3. Блендит результаты двух моделей попиксельно для каждого тайла попиксельно: 0.5 * model1 + 0.5 * model2. Для классификации используется вероятность, вытянутая обратно в размерность маски для тайла. Пример такой маски на картинке
Для тренировки используется SEResNeXt101, обученный на сегментацию как UNet. Эта модель выбирает тайлы для классификации.
Глобальная классификационная модель для тайлов:
1. Берется случайный кроп 1536x1536.
2. Тренируется модель на глобальном таргете по всей картинке. Используется как базовая модель. Если уверенность ниже 0.3, тайл помечается как 'other', если выше 0.6 - используется предсказанный лейбл.
3. Тренируется модель уже на этих псевдолейблах, используя ConvNext.
Теперь обе глобальные модели используются для инференса:
0. Предсказывается хитмап сегментационной моделью для WSI. Выбираются топ-5 тайлов по уверенности.
1. Предсказываются эти 5 тайлов(или один ресайз TMA картинки) глобальной моделью классификации с TTA с помощью StainNorm для глобальной нормализации.
И вот вы уже на 5 месте! Поздравляем! 🎉
Что можно себе забрать:
1. Используйте StainNorm для работы со снимками с профессионального оборудования
2. Псевдолейблинг как способ сделат дешевый псевдоэттеншн для около-MIL задач.
Место 5 🥳
Пайплайн этой модели оптимизирован для быстрой обработки крупных изображений. И совсем без MIL фреймворка. Пайплайн из двух больших кусков:
Глобальная сегментационная модель для предвыбора тайлов в WSI
1. Модель классификации тайлов (только для трейна) 🎨
2. Модель сегментации тайлов (только для трейна) 🖌️
3. Модель сегментации тайлов (для инференса) 🧩
Модель первая - это классификационная модель тайла с глобальным лейблом всей картинки. Основана на ConvNeXt. Обучена на порезанных на кусочки изображениях размером 1536x1536. Претренирована на внешних датасетах с лейблом 'other' для типов рака, которых нет в сореве.
Модель вторая - сегментирует раковые образования по маскам соревнования. Бекбон SEResNeXt и тренируется на данных соревнования.
Модель третья - более сложная. Генерирует лейблы следующим образом:
1. Первой моделью генерируем метки для всего тайла.
2. Прогоняет все изображения через вторую модель, сохраняя сгенерированные маски.
3. Блендит результаты двух моделей попиксельно для каждого тайла попиксельно: 0.5 * model1 + 0.5 * model2. Для классификации используется вероятность, вытянутая обратно в размерность маски для тайла. Пример такой маски на картинке
Для тренировки используется SEResNeXt101, обученный на сегментацию как UNet. Эта модель выбирает тайлы для классификации.
Глобальная классификационная модель для тайлов:
1. Берется случайный кроп 1536x1536.
2. Тренируется модель на глобальном таргете по всей картинке. Используется как базовая модель. Если уверенность ниже 0.3, тайл помечается как 'other', если выше 0.6 - используется предсказанный лейбл.
3. Тренируется модель уже на этих псевдолейблах, используя ConvNext.
Теперь обе глобальные модели используются для инференса:
0. Предсказывается хитмап сегментационной моделью для WSI. Выбираются топ-5 тайлов по уверенности.
1. Предсказываются эти 5 тайлов
И вот вы уже на 5 месте! Поздравляем! 🎉
Что можно себе забрать:
1. Используйте StainNorm для работы со снимками с профессионального оборудования
2. Псевдолейблинг как способ сделат дешевый псевдоэттеншн для около-MIL задач.
Kaggle
UBC Ovarian Cancer Subtype Classification and Outlier Detection (UBC-OCEAN)
Navigating Ovarian Cancer: Unveiling Common Histotypes and Unearthing Rare Variants
❤7👍4
Завтра расскажу про новую сореву
Telegram
(sci)Berloga Всех Наук и Технологий
🚀 @SBERLOGACOMPETE webinar on data science:
👨🔬 Dmitrii Rudenko "Introduction to the Kaggle competition 'HMS - Harmful Brain Activity Classification'"
⌚️Friday, 2 Febraury, 20.00 (Moscow time)
Add to Google Calendar. (The talk will be in English). Announcement…
👨🔬 Dmitrii Rudenko "Introduction to the Kaggle competition 'HMS - Harmful Brain Activity Classification'"
⌚️Friday, 2 Febraury, 20.00 (Moscow time)
Add to Google Calendar. (The talk will be in English). Announcement…
🔥19❤1
#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 часов на извлечение фичей из всех изображений и еще час на тренировку.
Еще дает глубокие размышления о переобучении модели и вывод, что сходство данных одного пациента приводит к ограниченной генерализации. Модель, кажется, более склонна к выучиванию конкретных срезов и снимков, вместо того чтобы обобщать глобальные закономерности. Критериям решения о оверфите, к сожалению, не делится.
3 место: Немецкий Любитель Хайка
Игры с данными:
Интересно подошел к разметке внешних датасетов: когда лейблы в датасетах не метчились идеально на лейблы соревнования (например в одном из внешних источниокв данных таргеты HGSC и LGSC были объеденены в один класс), он доразмечал данные своим претрейном.
Пайплайн:
Автор вложил значительные усилия в отладку пайплайна обработки полных изображений, нарезку и филтр пустых тайлов. В итоге выбрал pyvips как библиотеку для работы и ошибся. Мы с Сережей тоже много времени убили на то, чтобы заставить модели работать на полных картинках при учете ресурсов Kaggle на инференс. Это настолько было душно, что Сережа родил бенчмарк для загрузки png картинок и работы с ними и начал тестить на скорость разные либы для аугментации. К сожалению мы как-то не подумали, что можно ГУГЛИТЬ и не нашли Chowder и вообще MIL подходы. Может сидели бы сейчас довольные на охоте.
Модель:
Вдохновленный статьей, фокусирующейся не столько на SOTA в данной области, сколько на сравнении методов. Автор выбрал Lunit-DINO претрейн в качестве базовых весов. Удивительно, что веса были специально обучены на медицинских снимках. Он использует FP16 для ускоренного извлечения признаков. Вместо подхода MIL, предпочел CLAM. Кстати очень забавная статья: ее писали арабы из Mahmood Lab, так что все картинки и схемы справа налево 🕌. Основное отличие- для аггрегации признаков извлеченных из картинок используем модельку на основе эттеншна, а не GRU.
P.s.
Редкое явление, но автор дает обзор своего сетапа: домашний компьютер с GTX 4090. 6 часов на извлечение фичей из всех изображений и еще час на тренировку.
Еще дает глубокие размышления о переобучении модели и вывод, что сходство данных одного пациента приводит к ограниченной генерализации. Модель, кажется, более склонна к выучиванию конкретных срезов и снимков, вместо того чтобы обобщать глобальные закономерности. Критериям решения о оверфите, к сожалению, не делится.
Kaggle
UBC Ovarian Cancer Subtype Classification and Outlier Detection (UBC-OCEAN)
Navigating Ovarian Cancer: Unveiling Common Histotypes and Unearthing Rare Variants
👍8🔥3❤2
Кагл теперь будет вознаграждать за лучшие райтапы.
Смотрите на тренд:
1. Сначала стали давать мерч за топ-50 лучших описаний. Прописали нужные параграфы для каждого райтапа и основные вехи, но это повлияло скорее на количество, чем качество райтапов. Обычно описаний было меньше 50, так что шанс залутать майку был 100%. К сожалению это создало неприятную ситуацию, когда райтапы сделаны для того, чтобы получить фиксированный мерч и особой ценности не несут.
2. Затем сами организаторы стали давать дополнительные призы за writeup. Это уже увеличило качество описаний и их объем. Но качество райтапа все же корелированно с местом на ЛБ, так что получаем из 20-30 топовых мест примерно пятидесятипроцентную конверсию в хорошие описания. Кстати, денег нам в итоге дали именно по этой программе
3. Теперь еще и Kaggle стал выдавать грант на год за лучшие описания.
Выглядит так, будто Alphabet наконец понял, зачем они купили Kaggle себе и толкают его в комьюнити-образовательную платформу. К этому еще и все более плотная интеграция колаба и каггла подталкивает. За 8 лет с момента покупки очень многое изменилось.
Смотрите на тренд:
1. Сначала стали давать мерч за топ-50 лучших описаний. Прописали нужные параграфы для каждого райтапа и основные вехи, но это повлияло скорее на количество, чем качество райтапов. Обычно описаний было меньше 50, так что шанс залутать майку был 100%. К сожалению это создало неприятную ситуацию, когда райтапы сделаны для того, чтобы получить фиксированный мерч и особой ценности не несут.
2. Затем сами организаторы стали давать дополнительные призы за writeup. Это уже увеличило качество описаний и их объем. Но качество райтапа все же корелированно с местом на ЛБ, так что получаем из 20-30 топовых мест примерно пятидесятипроцентную конверсию в хорошие описания. Кстати, денег нам в итоге дали именно по этой программе
3. Теперь еще и Kaggle стал выдавать грант на год за лучшие описания.
Выглядит так, будто Alphabet наконец понял, зачем они купили Kaggle себе и толкают его в комьюнити-образовательную платформу. К этому еще и все более плотная интеграция колаба и каггла подталкивает. За 8 лет с момента покупки очень многое изменилось.
Kaggle
[Winners' Announcement] Celebrating the Best Solution Write-up Authors of 2023! | Kaggle
🔥12❤2👍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 были неправильно предобработаны и их ресайз не соответствует ресайзу прочих. На прикрепленной картинке например видно, что размер красных кровяных телец на них другой, нежели в большинстве снимков. Это было довольно важно, потому что эти сломаные картинки почти все относились к одному классу и тем самым вносили шум в модель.
Первое место, дело престижа (часть первая)
Занял его стартап, который делают авторы уже несколько раз упомянутого Chowder. Собственно цель стартапа- анализ WSI снимков.
Хайлайты:
1. Своя foundation model для клеточных снимков- Phikon. (Статья). Берем ее на заметку, чтобы решать WSI-соревы, которых в последнее время стало много. Это такой VIT-transformer, который уже видел огромную кучу снимков.
2. Chowder- как MIL пайплайн. Вышел в 2020 году, все еще не хуже более свежих DTFD-MIL и TransMIL. Еще и ансемблируется сам с собой хорошо.
3. Вложились в быстродействие. Сережа написал хороший пост с разбором того, как именно: там и Ray, и кастомные тулы на С и даже немного классического CV. Подписывайтесь на его канал уже.
Меня очень вдохновляет история с кастомной тулой на C. В какой-то момент я даже сел похожую писать
Данные:
Не использовали внешние данные.
Все большие картинки обрезали по thumbnails: выделяли трешхолдом яркости не пустые регионы и уже по координатам вычисляли, какой патч надо вырезать с полной картинки для модели.
Затем для TMA делали ресайз, чтобы размер клеток соответствовал размеру WSI. Во время анализа выяснили, что 38 WSI были неправильно предобработаны и их ресайз не соответствует ресайзу прочих. На прикрепленной картинке например видно, что размер красных кровяных телец на них другой, нежели в большинстве снимков. Это было довольно важно, потому что эти сломаные картинки почти все относились к одному классу и тем самым вносили шум в модель.
👍9🔥3❤2
#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. Анализируйте даже картиночные данные. Вот тут кластеризация помогла найти ошибку предобработки организаторов и дала немножко скора
Первое место, дело престижа (часть вторая)
Модели:
Для демонстрации превосходства своего пайплайна на 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 лучших по внутренней валидации моделей.
Для того, чтобы фильтровать выбросы, которые были в тесте, но которых не было в трейне использовали трешхолд по энтропии
Трюки для инференса:
Натренировали маленький 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
Картинки: 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
Кстати о репостах:
Собрал из ретроспективы по Open Problems пост на хабр. Поддержите заливом лайков, пожалуйста🔝
Собрал из ретроспективы по Open Problems пост на хабр. Поддержите заливом лайков, пожалуйста
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как машинлернеры мерили экспрессию генов от воздействия лекарств
Привет! Меня зовут Дима и я веду канал про соревновательный МЛ . Недавно мы выиграли приз в довольно престижном соревновании и я сделал обзор всех лучших решений Хочу вам рассказать о Open Problems,...
👍11🔥6❤5👏1
Вы же помните, что этот канал создан, как карго-культ pola.rs?
Так вот, к поларсу пришла Nvidia и предложила им дать своих инженеров, чтобы они впиливали RAPIDS в polars.
Ставлю на то, что команда рапидс будет отставать, но это все равно мощный шаг к признанию полярных медведей.
Думайте. Подписаться.
Так вот, к поларсу пришла Nvidia и предложила им дать своих инженеров, чтобы они впиливали RAPIDS в polars.
Ставлю на то, что команда рапидс будет отставать, но это все равно мощный шаг к признанию полярных медведей.
Думайте. Подписаться.
pola.rs
Accelerating Polars DataFrames
DataFrames for the new era
👍15❤2