Автор с Хабра дообучил 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
Автор исследования на Хабре опубликовал вторую часть проекта «ИИ-Стоматолог»: детектор патологий на панорамных рентгенограммах зубов перешёл с 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). Без слепой проверки рентгенологами нельзя сказать, пропущенная это патология или ложное срабатывание. Есть и системная ошибка: нумерация зубов по
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.