Автор с Хабра дообучил YOLOv8l на рентгенах зубов и довёл mAP50 до 0,642

Автор исследования на Хабре обучил YOLOv8l на панорамных рентгенах зубов за 29,3 минуты на одной NVIDIA A100 80GB. На валидации DENTEX (144 снимка) mAP50 составил 0,642, а mAP50-95 — 0,408. Прирост дали чистка датасета от цветных фото, дедупликация и поклассовые пороги уверенности вместо единого 0,50. Ретинированные зубы модель находит почти безошибочно (AP50 0,961), периапикальные очаги — заметно хуже (AP50 0,516). • Равномерный Model Soup снизил mAP50 с 0,642 до 0,634, поэтому его отвергли • Мульти-скейл TTA уронил precision по глубокому кариесу с 60,5% до 25,9% • Метрики получены только на DENTEX; для российских клиник нужна своя выборка

AI-обработка оригинала Habr AI; редакция Hamidun News
Автор с Хабра дообучил YOLOv8l на рентгенах зубов и довёл mAP50 до 0,642
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Ключевой факт #1Равномерный Model Soup снизил mAP50 с 0,642 до 0,634, поэтому его отвергли
Ключевой факт #2Мульти-скейл TTA уронил precision по глубокому кариесу с 60,5% до 25,9%
Ключевой факт #3Метрики получены только на DENTEX; для российских клиник нужна своя выборка

Автор исследования на Хабре опубликовал вторую часть проекта «ИИ-Стоматолог»: детектор патологий на панорамных рентгенограммах зубов перешёл с YOLO26n на YOLOv8l (209 слоёв, 43,6 млн параметров, 165,4 GFLOPs). Финальное двухстадийное обучение в разрешении 1280×1280 заняло на одной NVIDIA A100 80GB PCIe 29,3 минуты. На валидационной выборке DENTEX Challenge (144 снимка, 709 объектов) модель показала mAP50 0,642 и mAP50-95 0,408. Работа ценна не рекордом, а честным разбором того, что сработало, а что нет.

Чистка данных и защита валидации от утечек

В первой части прототип тестировали на четырёх классах, но выяснилось, что в обучающий архив попали цветные фотографии полости рта. Они вызывали срабатывания вне целевого распределения. Промежуточный запуск на девяти классах (с пломбами, коронками, имплантами) показал mAP50 0,511, а AP50 по периапикальным очагам — всего 0,069: пломбы и запломбированные каналы составляли свыше 65% всех меток, а очагов было лишь 1 584. Реставрации убрали и оставили четыре класса: Caries, Deep Caries, Impacted и Periapical Lesion.

Выборка Clean_Dental_v3 собрана из DENTEX (2585×1353), Tufts Dental Database (1 000 снимков) и репозитория Loki_Dental (13 932 файла). Валидация состоит только из DENTEX: по регламенту один снимок соответствует одному пациенту, поэтому пересечений между train и val нет. Внешние базы шли исключительно в обучение. Дедупликация по dHash убрала 33 дубликата, а фильтр пропорций и цветовых каналов отсеял 1 571 изображение.

Исправлены и две ошибки сборщика. Раньше крупные рамки Loki_Dental автоматически превращались в Deep Caries по площади (2 463 объекта), хотя глубина кариеса определяется близостью к пульпарной камере, а не площадью. Теперь Deep Caries — это 565 разметок DENTEX, а весь кариес Loki остаётся в классе Caries (3 556 объектов). Кроме того, чтение Loki обрывалось на 6 118-м файле из 13 932 из-за лимита в 1 200 снимков, и 56% архива терялось. Новый двухпроходный отбор нашёл 2 379 кандидатов с периапикальными очагами и кистами. Редкие классы дублировали в обучающем списке: в 3 раза для снимков DENTEX с Deep Caries и Periapical Lesion, в 2 раза для периапикальных снимков Tufts и Loki.

Два этапа обучения и три неудачных трюка

Первый этап стартовал с предобученного yolov8l.pt при всех активных слоях: 25 эпох за 23,9 минуты, остановка по EarlyStopping, лучший результат на 10-й эпохе. Второй этап — 12 эпох за 5,4 минуты с заморозкой первых 10 слоёв бэкбона, lr0=0,0001 и чуть большим весом классификационной потери (1,8 против 1,6). Предварительную отладку на Tesla T4 в Colab потратили около трёх часов. Итог по этапам: mAP50 вырос с 0,609 до 0,642, AP50 по периапикальным очагам — с 0,461 до 0,516. Время на кадр на A100 — 5,8 мс.

Проверили и два «бесплатных» улучшения. Линейное усреднение весов двух этапов (Model Soup 50/50) на T4 при 1024 px давало небольшой плюс, но при 1280 px снизило mAP50 до 0,634. Precision в точке максимального F1 при этом выросла с 69,6% до 75,6%, а время на кадр — до 7,3 мс. В рабочую версию взяли чистый чекпоинт второго этапа. Мульти-скейл TTA в Ultralytics ухудшил результат: precision по Deep Caries упала с 60,5% до 25,9%, по Periapical Lesion — с 39,2% до 20,3%, а время на кадр на T4 выросло с 54,5 до 128 мс. Автор объясняет это прогоном уменьшенной копии (0,83x) и слиянием низкопороговых рамок перед NMS. Эта гипотеза не проверялась отдельно.

Единый порог conf=0,50 заменили поклассовыми по кривым F1-Confidence: Caries 0,23, Deep Caries 0,21, Impacted 0,56, Periapical Lesion 0,26. Для сжатых картинок из интернета пороги выше, для скрининга — ниже.

Где модель ошибается и что мешает клиническому применению

Лучше всех идёт Impacted: F1 0,914, precision 92,3%, recall 90,6%. Хуже — периапикальные очаги: precision 76,4%, но recall лишь 43,3%, то есть больше половины очагов пропускается. Для скрининга это существенно.

На контрольных панорамах модель нашла все размеченные области в одном случае и 5 из 6 в другом, но пропустила кариес на верхнем правом моляре. Она же добавила рамки, которых нет в разметке DENTEX (зубы #48, #36, #25, #26). Без слепой проверки рентгенологами нельзя сказать, пропущенная это патология или ложное срабатывание. Есть и системная ошибка: нумерация зубов по FDI считается по центру рамки относительно линии y=0,52, поэтому кариес верхнего премоляра получил номер #45 вместо #15. Автор планирует заменить формулу отдельной сегментацией 32 зубов.

Практические ограничения автор называет сам. Метрики получены только на DENTEX, а для российских клиник нужна выборка с отечественных ортопантомографов. На сжатых снимках из мессенджеров (650×340–900×600) мелкий кариес находится хуже, поэтому интерфейсу нужно предупреждение о низком разрешении. Для практиков главный вывод: на малом медицинском датасете аккуратная работа с разметкой, изоляция валидации и калибровка порогов дали больше, чем смена архитектуры или приёмы вроде TTA и усреднения весов. Всё обучение уложилось в полчаса на одной карте.

Вопросы и ответы по материалу

Что известно по теме: чистка данных и защита валидации от утечек?

В первой части прототип тестировали на четырёх классах, но выяснилось, что в обучающий архив попали цветные фотографии полости рта. Они вызывали срабатывания вне целевого распределения. Промежуточный запуск на девяти классах (с пломбами, коронками, имплантами) показал mAP50 0,511, а AP50 по периапикальным очагам — всего 0,069: пломбы и запломбированные каналы составляли свыше 65% всех меток, а очагов было лишь 1 584. Реставрации убрали и оставили четыре класса: Caries, Deep Caries, Impacted и Periapical Lesion. Выборка Clean_Dental_v3 собрана из DENTEX (2585×1353), Tufts De

Что известно по теме: два этапа обучения и три неудачных трюка?

Первый этап стартовал с предобученного yolov8l.pt при всех активных слоях: 25 эпох за 23,9 минуты, остановка по EarlyStopping, лучший результат на 10-й эпохе. Второй этап — 12 эпох за 5,4 минуты с заморозкой первых 10 слоёв бэкбона, lr0=0,0001 и чуть большим весом классификационной потери (1,8 против 1,6). Предварительную отладку на Tesla T4 в Colab потратили около трёх часов. Итог по этапам: mAP50 вырос с 0,609 до 0,642, AP50 по периапикальным очагам — с 0,461 до 0,516. Время на кадр на A100 — 5,8 мс. Проверили и два «бесплатных» улучшения. Линейное усреднение весов двух э

Что известно по теме: где модель ошибается и что мешает клиническому применению?

Лучше всех идёт Impacted: F1 0,914, precision 92,3%, recall 90,6%. Хуже — периапикальные очаги: precision 76,4%, но recall лишь 43,3%, то есть больше половины очагов пропускается. Для скрининга это существенно. На контрольных панорамах модель нашла все размеченные области в одном случае и 5 из 6 в другом, но пропустила кариес на верхнем правом моляре. Она же добавила рамки, которых нет в разметке DENTEX (зубы #48, #36, #25, #26). Без слепой проверки рентгенологами нельзя сказать, пропущенная это патология или ложное срабатывание. Есть и системная ошибка: нумерация зубов по

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Единое AI-пространство · Nomad

Протестируйте новые LLM и мультимодальные модели в одном окне

Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.

Открыть Nomad AI →Автономный Nomad Agent
Что вы думаете?
Загружаем комментарии…