Новое соревнование на Kaggle:
Yale/UNC-CH - Geophysical Waveform Inversion
Цель- инвертировать отражения сейсмических волн. Надо по 3D (два направления и время) предсказать карту глубин.
На kaggle только часть датасета в 108 гб, но полный датасет весит 2.2 террабайта. Тут есть нюанс- для каждой уникальной карты глубин есть 500 замеров, чтобы их усреднить и уменьшить шум.
Метрика MAE по 69 колонкам (мультирегрессия)
По сути нам нужно из данных
p(*), t, x, z и (s + eps) вычислить c(*) в заданных точках.
Мои шесть семестров дифуров из универа напряглись, хотя гиперболическое дифференциальное уравнение в частных производных мы кажется отдельно не разбирали
Мне в свое время очень нравилась идея поженить свои знания МЛ и время потраченное на дифуры и уже была хорошая сорева для этого:
Google Brain - Ventilator Pressure Prediction
Там нужно было моделировать давление в легких в зависимости от нагнетаемого объема воздуха, что хорошо описывается дифурами, но в топовых решениях были просто plug-n-play трансформеры😭
Yale/UNC-CH - Geophysical Waveform Inversion
Цель- инвертировать отражения сейсмических волн. Надо по 3D (два направления и время) предсказать карту глубин.
На kaggle только часть датасета в 108 гб, но полный датасет весит 2.2 террабайта. Тут есть нюанс- для каждой уникальной карты глубин есть 500 замеров, чтобы их усреднить и уменьшить шум.
Метрика MAE по 69 колонкам (мультирегрессия)
По сути нам нужно из данных
p(*), t, x, z и (s + eps) вычислить c(*) в заданных точках.
Мои шесть семестров дифуров из универа напряглись, хотя гиперболическое дифференциальное уравнение в частных производных мы кажется отдельно не разбирали
Мне в свое время очень нравилась идея поженить свои знания МЛ и время потраченное на дифуры и уже была хорошая сорева для этого:
Google Brain - Ventilator Pressure Prediction
Там нужно было моделировать давление в легких в зависимости от нагнетаемого объема воздуха, что хорошо описывается дифурами, но в топовых решениях были просто plug-n-play трансформеры
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5❤2
Продолжая тему академичных соревнований:
Forams Classification 2025
Соревнование от CVPR и хорошее место возможно откроет вам выступление на воркшопе CVPR и приглашение на конфу. Но вообще авторы в соревновании ничего не пишут и не обещают по поводу конфы. Я им на всякий случай написал имейл, так что если они вдруг сподобятся ответить- я вам расскажу. В соревновании нет медалек, так что сильной конкуренции и дядек с личными H20 не будет
Данные тоже забавные:
3D сканы окаменелых моллюсков 128x128x128 вокселей и 15 классов. Загвоздка в том, что на каждый класс дано по 15 размеченных семплов, прямо как у мня на парах по классическому CV в свое время.
Данных всего 18424 примеров, так что подавляющая часть вообще не размечена.
Метрика- F1.
План для изи ачивки в академической карьере:
1. Берем команду из 5 человек
2. Смотрим глазами все классы и каждый размечает по 300 примеров (всего уже 1500 примеров)
3. Учим на jpeg-проекциях вокселей от авторов что-нибудь простое, типа Resnet.
4. Проверяем за резнетом и исправляем ошибки для самых уверенных классов
5. Учимся еще раз
6. Проверяем еще раз
7. ...
8. PROFIT!
Forams Classification 2025
Соревнование от CVPR и хорошее место возможно откроет вам выступление на воркшопе CVPR и приглашение на конфу. Но вообще авторы в соревновании ничего не пишут и не обещают по поводу конфы. Я им на всякий случай написал имейл, так что если они вдруг сподобятся ответить- я вам расскажу. В соревновании нет медалек, так что сильной конкуренции и дядек с личными H20 не будет
Данные тоже забавные:
3D сканы окаменелых моллюсков 128x128x128 вокселей и 15 классов. Загвоздка в том, что на каждый класс дано по 15 размеченных семплов, прямо как у мня на парах по классическому CV в свое время.
Данных всего 18424 примеров, так что подавляющая часть вообще не размечена.
Метрика- F1.
План для изи ачивки в академической карьере:
1. Берем команду из 5 человек
2. Смотрим глазами все классы и каждый размечает по 300 примеров (всего уже 1500 примеров)
3. Учим на jpeg-проекциях вокселей от авторов что-нибудь простое, типа Resnet.
4. Проверяем за резнетом и исправляем ошибки для самых уверенных классов
5. Учимся еще раз
6. Проверяем еще раз
7. ...
8. PROFIT!
👍15❤6 3🔥1🤡1
Forwarded from Hacker News
Python's new t-strings (Score: 154+ in 5 hours)
Link: https://readhacker.news/s/6t8rs
Comments: https://readhacker.news/c/6t8rs
Link: https://readhacker.news/s/6t8rs
Comments: https://readhacker.news/c/6t8rs
1🔥5❤4👍2🤡2
Запрети мне псевдолейблить
Продолжая тему академичных соревнований: Forams Classification 2025 Соревнование от CVPR и хорошее место возможно откроет вам выступление на воркшопе CVPR и приглашение на конфу. Но вообще авторы в соревновании ничего не пишут и не обещают по поводу конфы.…
Approved:
Если занять хорошее место на Forams Classification 2025, то позовут выступать на семинаре CVPR.
Если занять хорошее место на Forams Classification 2025, то позовут выступать на семинаре CVPR.
❤13🤡4👍3
Человечество:
Изобретает LLM-driven поиск, чтобы не читать булшит от маркетологов и ллмки переписали все без воды и CEO-оптимизации
Маркетологи:
МЫ СОБРАЛИ ДЛЯ ВАС ПЯТНАДЦАТЬ ТЫСЯЧ ПРОМТОВ КОТОРЫЕ ПОЗВОЛЯТ ВАМ ЛУЧШЕ ИСКАТЬ С ПОМОЩЬЮ AI
Изобретает LLM-driven поиск, чтобы не читать булшит от маркетологов и ллмки переписали все без воды и CEO-оптимизации
Маркетологи:
МЫ СОБРАЛИ ДЛЯ ВАС ПЯТНАДЦАТЬ ТЫСЯЧ ПРОМТОВ КОТОРЫЕ ПОЗВОЛЯТ ВАМ ЛУЧШЕ ИСКАТЬ С ПОМОЩЬЮ AI
🤣51🤡11 4❤2👍2💅1
Forwarded from Hacker News
X X^t can be faster (Score: 150+ in 8 hours)
Link: https://readhacker.news/s/6uANa
Comments: https://readhacker.news/c/6uANa
Link: https://readhacker.news/s/6uANa
Comments: https://readhacker.news/c/6uANa
arXiv.org
$XX^{t}$ Can Be Faster
We present RXTX, a new algorithm for computing the product of matrix by its transpose $XX^{t}$ for $X\in \mathbb{R}^{n\times m}$. RXTX uses $5\%$ fewer multiplications and $5\%$ fewer operations...
🔥12🥱3❤2
Запрети мне псевдолейблить
А вот из ржомб из моей дс-жизни: Раз в пару месяцев ко мне приходит в лс бот из AISender. Это такой провайдер этих всех духовных ботов, заманивающих вас по ссылке в комментах. Но иногда они приходят в лс и предлагают свои «услуги» Обычно такие боты используют…
Ко мне снова пришли миньоны Рустама. В этот раз их видимо переалайнили: боты перестали хоть как-то отвечать на сообщения или как-то видоизменять скрипт. По ощущениям- там 50 разных фраз внутри и бот моделькой выбирает самый правдоподобный ответ. Скукота, но прогресс на лицо. Боты стали еще скучнее и больше похожими на классических спамеров.
А вот блеклист видимо все еще не прикрутили, чтобы токены на меня и других хейтеров не тратить. Удивительно, насколько Рустам читал lean startup, но не понимал что пишут
А вот блеклист видимо все еще не прикрутили, чтобы токены на меня и других хейтеров не тратить. Удивительно, насколько Рустам читал lean startup, но не понимал что пишут
👍8🤡5😁4😐3🥰2
Птичное соревнование закончилось, так что на этой неделе будут разборы птичного соревнования. Удивительно, но оно птичное даже в UMAP эмбедах, как можно увидеть выше
Ну или на следующей...
Ну или на следующей...
😁11🕊5❤2👻1
BirdCLEF+ 2025
Очередная часть ежегодного соревнования от Cornell Lab of Ornithology.
Дано:
– 12 ГБ аудиозаписей птиц, насекомых, рептилий и т. д.
– Источники (около–опенсорс):
1. xeno-canto.org
2. iNaturalist
3. Colombian Sound Archive (CSA) института Гумбольдта в Колумбии
Первые два источника — чистый краудсорс, разметка «грязная»:
1. у части семплов встречаются продолжительные комментарии колубийского натуралиста на испанском;
2. муха залетает в микрофон и гудит 40 секунд из 50 секунд записи вообще-то птицы;
3. мой любимый фейл — запись птицы, где звук обрывается громким «бултых», а дальше — полная тишина на 90 сек. Видимо не все микрофоны пережили сборку датасета
Разметка (для всех семплов):
1. Основной лейбл — целевая живность, которую нужно предсказывать.
2. Вторичный лейбл — какие ещё виды могут быть слышны. Конечно же не гарантирует то, что все виды на записи хотя бы отмечены
3. Координаты
4. Автор записи
5. Оценка качества (только для xeno-canto)
6. Источник данных (одна из трёх библиотек)
Трейн/тест сплит:
Общий пул разбит по записям, но обработан по-разному:
В train — полные аудиофайлы.
В test — нарезки записей по 5 с.
Например, из записей длительностью 30 сек и 20 сек получится 10 тест-семплов:
первые 6 — с основным лейблом первой записи;
остальные 4 — с лейблом второй.
Метрика:
Macro-ROC-AUC — сортировка вероятностей внутри каждого класса и усреднение без учёта частоты встречаемости.
Ну и конечно же ограничения на железо:
90 минут CPU-only
Тут кстати тренд:
2025- 90 min CPU-only
2024- 120 min CPU-only
2023- 120 min CPU-only
2022- 9 hours с доступом к GPU
2021- 9 CPU часов или 3 GPU часа
Как решать будете?
Очередная часть ежегодного соревнования от Cornell Lab of Ornithology.
Дано:
– 12 ГБ аудиозаписей птиц, насекомых, рептилий и т. д.
– Источники (около–опенсорс):
1. xeno-canto.org
2. iNaturalist
3. Colombian Sound Archive (CSA) института Гумбольдта в Колумбии
Первые два источника — чистый краудсорс, разметка «грязная»:
1. у части семплов встречаются продолжительные комментарии колубийского натуралиста на испанском;
2. муха залетает в микрофон и гудит 40 секунд из 50 секунд записи вообще-то птицы;
3. мой любимый фейл — запись птицы, где звук обрывается громким «бултых», а дальше — полная тишина на 90 сек. Видимо не все микрофоны пережили сборку датасета
Разметка (для всех семплов):
1. Основной лейбл — целевая живность, которую нужно предсказывать.
2. Вторичный лейбл — какие ещё виды могут быть слышны. Конечно же не гарантирует то, что все виды на записи хотя бы отмечены
3. Координаты
4. Автор записи
5. Оценка качества (только для xeno-canto)
6. Источник данных (одна из трёх библиотек)
Трейн/тест сплит:
Общий пул разбит по записям, но обработан по-разному:
В train — полные аудиофайлы.
В test — нарезки записей по 5 с.
Например, из записей длительностью 30 сек и 20 сек получится 10 тест-семплов:
первые 6 — с основным лейблом первой записи;
остальные 4 — с лейблом второй.
Метрика:
Macro-ROC-AUC — сортировка вероятностей внутри каждого класса и усреднение без учёта частоты встречаемости.
Ну и конечно же ограничения на железо:
90 минут CPU-only
Тут кстати тренд:
2025- 90 min CPU-only
2024- 120 min CPU-only
2023- 120 min CPU-only
2022- 9 hours с доступом к GPU
2021- 9 CPU часов или 3 GPU часа
Как решать будете?
❤9👍5😁2🤮2
Пятое место #Birdclef2025
Мануальная обработка данных
Это вообще та самая 'секретная техника', которую все ленятся делать. Данные полезно ковырять/слушать смотреть руками
Использовали Silero для того, чтобы найти записи с человеческим голосом, затем слушали их уже своими ушами и вырезали все фрагменты, где слышен человек.
Вообще у Silero есть бот, так что я им пожалуй и озвучу этот раздел поста.
Для классов с низкой частотностью (меньше 30 семплов в трейне) дополнительно послушали все записи и из каждой вычистили участки, где птиц не слышно.
Для трейна брали только первые 30 сек записи, а для низкочастотных 60 сек. Там, где семплов было меньше 20 для класса- апсемплили, чтобы 'разудть' трейн.
Модели
Стакали кучу эффишентнетов. Благо они с легкостью влезали в ограничения по CPU
• 4x tf_efficientnetv2_s
• 3x tf_efficientnetv2_b3
• 4x tf_efficient_b3_ns
• 2x tf_efficient_b0_ns
Но важно что тренировали в три стейджа. В каждом FocalLoss, Adam, Cosine Annealing + warmup
Первый стейдж:
только основной набор данных, только основной таргет
Второй стейдж:
Основной таргет + псевдолейблы, только основные размеченные данные + двухэтапная самодистилляция
Третий стейдж:
Использовали все данные. Для каждого батча брали половину из размеченных данных, половину из неразмеченных. Для основного набора испольовали основные лейблы + псевдолейблы с второго этапа, для неразмеченных- только псевдолейблы
Ну и еще дважды самодистилляция.
Если вы шарите, то объясните плз в комментах почему самодистилл работает и почему его есть смысл больше двух раз делать? Там еще и перфоманс на самодистиллах растет. В комментах есть график того, какие резульатты получаются от уровня дистилла
Мануальная обработка данных
Это вообще та самая 'секретная техника', которую все ленятся делать. Данные полезно ковырять/слушать смотреть руками
Использовали Silero для того, чтобы найти записи с человеческим голосом, затем слушали их уже своими ушами и вырезали все фрагменты, где слышен человек.
Вообще у Silero есть бот, так что я им пожалуй и озвучу этот раздел поста.
Для классов с низкой частотностью (меньше 30 семплов в трейне) дополнительно послушали все записи и из каждой вычистили участки, где птиц не слышно.
Для трейна брали только первые 30 сек записи, а для низкочастотных 60 сек. Там, где семплов было меньше 20 для класса- апсемплили, чтобы 'разудть' трейн.
Модели
Стакали кучу эффишентнетов. Благо они с легкостью влезали в ограничения по CPU
• 4x tf_efficientnetv2_s
• 3x tf_efficientnetv2_b3
• 4x tf_efficient_b3_ns
• 2x tf_efficient_b0_ns
Но важно что тренировали в три стейджа. В каждом FocalLoss, Adam, Cosine Annealing + warmup
Первый стейдж:
только основной набор данных, только основной таргет
Второй стейдж:
Основной таргет + псевдолейблы, только основные размеченные данные + двухэтапная самодистилляция
Третий стейдж:
Использовали все данные. Для каждого батча брали половину из размеченных данных, половину из неразмеченных. Для основного набора испольовали основные лейблы + псевдолейблы с второго этапа, для неразмеченных- только псевдолейблы
Ну и еще дважды самодистилляция.
Если вы шарите, то объясните плз в комментах почему самодистилл работает и почему его есть смысл больше двух раз делать? Там еще и перфоманс на самодистиллах растет. В комментах есть график того, какие резульатты получаются от уровня дистилла
🔥14❤5👍1
4 место в #BirdClef2025
Коротко, но ценно: иногда простота выигрывает.
Поскольку на BirdCLEF нас оценивают именно по AUC, логично оптимизировать его напрямую.
AUC-лосс устойчив к переобучению, но не поддерживает soft labels, как, например, кросс-энтропия.
Что еще работало и не работало:
Semi-supervised learning на неразмеченном датасете:
Сначала обучил 10 моделей EfficientNet на размеченной части.
Сгенерировал «псевдо-лейблы» для неразмеченных данных.
Обучил следующий раунд моделей уже на объединённом наборе.
Отказался от самодистилляции и сложных схем — не заводилось.
Лотерея или мастерство? Автор поднялся с 11 места на 4-е на прайвете! Возможно, дело не только в удаче.
Коротко, но ценно: иногда простота выигрывает.
Поскольку на BirdCLEF нас оценивают именно по AUC, логично оптимизировать его напрямую.
AUC-лосс устойчив к переобучению, но не поддерживает soft labels, как, например, кросс-энтропия.
class SoftAUCLoss(nn.Module):
def __init__(self, margin=1.0, pos_weight=1.0, neg_weight=1.0):
super().__init__()
self.margin = margin
self.pos_weight = pos_weight
self.neg_weight = neg_weight
def forward(self, preds, labels, sample_weights=None):
# Разделяем положительные и отрицательные предсказания
pos_mask = labels > 0.5
neg_mask = labels < 0.5
pos_preds, pos_labels = preds[pos_mask], labels[pos_mask]
neg_preds, neg_labels = preds[neg_mask], labels[neg_mask]
if pos_preds.numel() == 0 or neg_preds.numel() == 0:
return torch.tensor(0., device=preds.device)
# Веса отражают уверенность soft-label
pos_w = self.pos_weight * (pos_labels - 0.5)
neg_w = self.neg_weight * (0.5 - neg_labels)
if sample_weights is not None:
sw = sample_weights.unsqueeze(1).expand_as(labels)
pos_w *= sw[pos_mask]
neg_w *= sw[neg_mask]
# Считаем pairwise-разности и лог-лосс
diff = pos_preds.unsqueeze(1) - neg_preds.unsqueeze(0)
loss_matrix = torch.log1p(torch.exp(-self.margin * diff))
# Усредняем по всем парам с учётом весов
return (loss_matrix * pos_w.unsqueeze(1) * neg_w.unsqueeze(0)).mean()
Что еще работало и не работало:
Semi-supervised learning на неразмеченном датасете:
Сначала обучил 10 моделей EfficientNet на размеченной части.
Сгенерировал «псевдо-лейблы» для неразмеченных данных.
Обучил следующий раунд моделей уже на объединённом наборе.
Отказался от самодистилляции и сложных схем — не заводилось.
Лотерея или мастерство? Автор поднялся с 11 места на 4-е на прайвете! Возможно, дело не только в удаче.
Kaggle
4th place solution | Kaggle
Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.
🔥12🤔3❤1😨1
Forwarded from Small Data Science for Russian Adventurers
#соревнование
Обзор международных соревнований в DS за прошлый год: на каких платформах, что используют победители, какие конкурсы проходят и т.п. Такие отчёты каждый год выходят (но тут ни разу ссылок на них не давал).
https://mlcontests.com/state-of-machine-learning-competitions-2024/
Обзор международных соревнований в DS за прошлый год: на каких платформах, что используют победители, какие конкурсы проходят и т.п. Такие отчёты каждый год выходят (но тут ни разу ссылок на них не давал).
https://mlcontests.com/state-of-machine-learning-competitions-2024/
❤12
У вас каждый день дейли не потому, что дейли эффективны. У вас дейли потому, что в книжке »Scrum. Революционный метод управления проектами. Джефф Сазерленд« написано, что их можно делать чтобы инженеры-механики могли рассказать о своих проблемах и о том, что им не хватает запчастей
Скелетрон вернется с умными мыслями завтра
Скелетрон вернется с умными мыслями завтра
👍13❤10💩5🤡5🤮4😭2😎1
3 место в #BirdClef2025
Данные:
1. Выкорчевали человеческий голос с помощью паблик кернела с каггла.
2. Взяли весь датасет 2025 года и к нему доложили 80% датасета 2023 года, добавив 112 новы классов. Оставшиеся 20% данных 2023 использовали для валидации. Локальная валидация не билась с ЛБ, но такая схема давала лучшую оценку сходимости модели.
3. Дополнительно вытянули еще данных из обоих открытых источнико, Xeno-Canto и INaturalist.
4. Запсевдолейбили всю неразмеченную часть, чтобы еще немного улучшить итоговые модели
Модели:
Обучили зоопарк моделей на двух видах спектрограмм. Вообще почти всегда есть смысл покрутить параметы построения спектрограмм для того, чтобы увеличить разнообразие и не потерять в качестве. Главное одну модель не учить на двух видах.
Список моделей
tf_efficientnet_b0_ns
tf_efficientnetv2_b3
tf_efficientnetv2_s.in21k_ft_in1k
mnasnet_100
spnasnet_100
Интересные приемы для обучения:
1. Семплировали случайные отрезки, а не честную нарезку по 5 сек. Говорят, так лучше училось
2. Добавляли человеческий голос для аугментации. На мой взгляд не сильно вяжется с удалением голоса из изначального датасета, но видимо использовали этот прием чтобы голос 'равномерно' размазать по всему датасету
3. FocalLoss
4. Использовали Model Soup. Это способ 'ужать' в одну модель несколько чекпоинтов. Усредняем веса например 20 resnet c одинаковой архитектурой и обученных на одних данных. Получаем почти ту же стабильность, что и усреднение 20 отдельных предикшнов этих моделей, но со скоростью инференса и весом одного resnet.
Кстати, тут можно обычно докрутить и делать только GreedySoup: пробовать в ансамбль добавлять только те модели, которые делают предикты лучше. Но опять же, тут надо верить в свой CV, а в этом соревновании наверно никто не верил в свой CV.
Для сабмита использовали Post-processing with power adjustment. Идея проста, работает для очень классификации с очень большим числом классов. Берем предикты, из них выбираем n самых 'уверенных' и усиливаем их, занижая скоры для прочих классов.
Данные:
1. Выкорчевали человеческий голос с помощью паблик кернела с каггла.
2. Взяли весь датасет 2025 года и к нему доложили 80% датасета 2023 года, добавив 112 новы классов. Оставшиеся 20% данных 2023 использовали для валидации. Локальная валидация не билась с ЛБ, но такая схема давала лучшую оценку сходимости модели.
3. Дополнительно вытянули еще данных из обоих открытых источнико, Xeno-Canto и INaturalist.
4. Запсевдолейбили всю неразмеченную часть, чтобы еще немного улучшить итоговые модели
Модели:
Обучили зоопарк моделей на двух видах спектрограмм. Вообще почти всегда есть смысл покрутить параметы построения спектрограмм для того, чтобы увеличить разнообразие и не потерять в качестве. Главное одну модель не учить на двух видах.
Список моделей
tf_efficientnet_b0_ns
tf_efficientnetv2_b3
tf_efficientnetv2_s.in21k_ft_in1k
mnasnet_100
spnasnet_100
Интересные приемы для обучения:
1. Семплировали случайные отрезки, а не честную нарезку по 5 сек. Говорят, так лучше училось
2. Добавляли человеческий голос для аугментации. На мой взгляд не сильно вяжется с удалением голоса из изначального датасета, но видимо использовали этот прием чтобы голос 'равномерно' размазать по всему датасету
3. FocalLoss
4. Использовали Model Soup. Это способ 'ужать' в одну модель несколько чекпоинтов. Усредняем веса например 20 resnet c одинаковой архитектурой и обученных на одних данных. Получаем почти ту же стабильность, что и усреднение 20 отдельных предикшнов этих моделей, но со скоростью инференса и весом одного resnet.
Кстати, тут можно обычно докрутить и делать только GreedySoup: пробовать в ансамбль добавлять только те модели, которые делают предикты лучше. Но опять же, тут надо верить в свой CV, а в этом соревновании наверно никто не верил в свой CV.
Для сабмита использовали Post-processing with power adjustment. Идея проста, работает для очень классификации с очень большим числом классов. Берем предикты, из них выбираем n самых 'уверенных' и усиливаем их, занижая скоры для прочих классов.
Kaggle
3rd Place Solution | Kaggle
Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.
❤11🏆7 3