Навчання моделі класифікації зображень (ResNet, EfficientNet, ViT)

На виробництві брак часто знаходять уже після складання, а ручний контроль втомлюється до кінця зміни. Ми навчаємо модель класифікації зображень під ваше завдання: від розмітки до впровадження в лінію. Віддаємо рішення під ключ — з вагами моделі та регламентом перенавчання.
Часті запитання

Чому класифікація зображень ламається на реальних даних

Найчастіше запит звучить так: «модель на відкладеній вибірці показує майже ідеальну точність, а в роботі помиляється на половині об’єктів». Розбираємо, де саме ламається класифікація зображень і чому зміна архітектури на важчу нічого не виправляє.

Перше джерело відмов — розмітка датасету під лабораторні умови. Знімки робили в одному приміщенні, за одного світла й ракурсу, мітки проставляли за папками з вихідними файлами, без єдиного правила для спірних випадків.

У результаті модель вчить фон і артефакти зйомки, а не ознаку об’єкта: достатньо поміняти стіл або лампу, і точність просідає.

Другий — дисбаланс класів. Коли рідкісна категорія займає частки відсотка, загальна точність залишається високою просто тому, що модель впевнено передбачає частий клас.

Дивитися потрібно на повноту й точність за кожним класом і на матрицю помилок, інакше головний клас відмови не видно в жодній зведеній цифрі.

Третій — зміна умов зйомки: інша камера, освітлення, сезон, положення об’єкта в кадрі. Розподіл вхідних даних відходить від навчального, і модель бачить не те, на чому вчилася — навіть акуратно навчений ResNet або ViT тут не рятує.

Розбираємо, як це закривається: спочатку фіксуємо правила розмітки й перерозмічуємо спірні групи, потім вирівнюємо класи на рівні відбору прикладів, а не лише ваг, і тільки після цього навчаємо мережу.

Що дає навчена модель класифікації зображень

Навчена модель класифікації зображень перетворює потік знімків у рішення з числом. Точність моделі фіксується до запуску на контрольній вибірці — наборі кадрів, розмічених вручну й таких, що не брали участі в навчанні. Саме вона, а не результат на навчальному наборі, стає параметром приймання.

На потоці модель повертає мітку й впевненість, а поріг впевненості задає, яка частка рішень іде в автоматику. Усе, що нижче порога, потрапляє в ручне сортування: перегляд стає вибірковим замість суцільного, і оператор розбирає лише спірні кадри.

Частка помилок на контрольній вибірці відома заздалегідь, тому навантаження на зміну можна планувати, а не вгадувати за фактом.

Зникає й систематична помилка оператора: втома до кінця зміни й різне тлумачення спірних випадків більше не впливають на розмітку.

Модель відповідає однаково на першому й останньому кадрі потоку, затримка — частки секунди на зображення, тож вузьким місцем стає канал передавання, а не розпізнавання.

Що стає вимірюваним після запуску:

  • частка кадрів, що йдуть в автоматику без участі людини;
  • скорочення ручного перегляду за того самого обсягу потоку;
  • частка помилок на контрольній вибірці з розбивкою за класами;
  • час відгуку на кадр за потокової обробки.

Архітектуру підбираємо під характер даних, а не за замовчуванням: ResNet і споріднені сімейства по-різному тримають дрібні об’єкти, шум і розмиття — вибір підтверджуємо порівнянням на контрольній вибірці, а не загальною рекомендацією.

Підходи до навчання: власна мережа, донавчання чи готовий сервіс

Три варіанти різняться не «якістю», а обсягом вашої розмітки й тим, наскільки цільові класи близькі до того, що вже вміють відкриті моделі.

Навчання з нуля має сенс, коли зібрано десятки тисяч розмічених прикладів, а класи специфічні: дефекти на знімках, рідкісні текстури, медичні зображення. Якщо такої розмітки немає, спроба виростити мережу з нуля дає перенавчання й точність нижчу, ніж у готової архітектури.

Донавчання моделі на попередньо навченій архітектурі закриває більшість задач: згорткові сімейства стійкі на невеликих наборах, трансформерні виграють, коли класів багато й важливі дрібні деталі.

Готовий сервіс розпізнавання беруть під типові категорії — там, де не потрібен контроль над розміткою й донавчанням.

Варіант Коли підходить Обмеження
Навчання з нуля власна розмітка від десятків тисяч прикладів, класи не схожі на публічні набори довгий цикл, потрібен запас даних і обчислювальні ресурси, високий ризик перенавчання
Донавчання попередньо навченої архітектури від кількох сотень розмічених прикладів, класи близькі до природних зображень критична якість розмітки, точність падає при зміні камер або освітлення
Готовий сервіс розпізнавання типові категорії, потрібен швидкий старт без власної інфраструктури закритий набір класів, немає доступу до моделі, залежність від постачальника

Ми зазвичай починаємо з донавчання й заміряємо точність на відкладеній вибірці: якщо її не вистачає, точково нарощуємо розмітку, а не змінюємо підхід цілком.

Як ми навчаємо та впроваджуємо модель: етапи робіт

Порядок етапів підпорядкований одному обмеженню: метрика якості та спосіб її підрахунку фіксуються до першого запуску навчання.

Якщо визначити їх після, будь-яке доопрацювання перетворюється на підгонку під конкретну вибірку — на потокових даних точність просідає, а пояснити причину вже неможливо.

  1. Аудит даних. Дивимося, що реально є: обсяг за класами, якість розмітки, дублікати, пошкоджені файли, дисбаланс і витоки між навчальною та перевірною частинами.
  2. Метрика якості. Беремо не «точність взагалі», а величину під ціну помилки: частку пропусків критичного класу, macro-F1 за перекосу класів, поріг спрацювання.
  3. Базова лінія. Проста модель або попередньо навчені ваги без донавчання — щоб знати планку, від якої відраховується приріст, і не сплутати його з ефектом передобробки.
  4. Навчання. Підбираємо архітектуру під задачу — згорткову (ResNet, EfficientNet) або трансформерну (ViT) — і режим: спочатку верхні шари, потім часткове розморожування, нормування входів, балансування класів, рання зупинка за валідацією.
  5. Відкладена вибірка. Фінальну перевірку ведемо на даних, що не брали участі ні в навчанні, ні в підборі параметрів, і за можливості — на знімку з іншого періоду.
  6. Аналіз помилок. Розбираємо матрицю помилок і найвпевненіші промахи: частина закривається дорозміткою й порогом, частина — зміною постановки задачі.
  7. Впровадження моделі. Сервіс передбачень, версіонування ваг, поріг впевненості й відмова від відповіді замість випадкової мітки, журналювання, контроль зміщення вхідних даних і регламент донавчання.

Артефакти навчання: ваги моделі, розмітка, регламент перенавчання

Після проєкту в замовника залишається не «навчена модель як чорна скринька», а комплект, який можна перевірити, донавчити й передати іншій команді. Нижче — що саме фіксується і в якому вигляді.

  • Ваги моделі — навчені параметри із закріпленим списком класів і порогом впевненості, нижче якого модель чесно відмовляється від відповіді замість вгадування.
  • Код навчання й запуску — читабельні скрипти підготовки даних, тренування й передбачень, без прихованих зовнішніх залежностей і ручних правок «на місці».
  • Розмічений набір зображень — навчальна, валідаційна й тестова частини без перетинів між ними, щоб метрики не завищувалися через витік кадрів.
  • Правила розмітки — як тлумачаться спірні кадри, перекриття й неоднозначні класи, який об’єкт вважається занадто дрібним для розмітки й що робити з кадрами без об’єкта.
  • Звіт про якість — матриця помилок за класами: видно, де модель плутає сусідні категорії й яких даних для них не вистачає.
  • Регламент перенавчання — тригери (падіння частки правильних відповідей на потоці, зміщення даних, поява нового класу), періодичність прогонів і відповідальні на боці замовника.
  • Відтворюваний запуск — закріплені середовище, зерно випадковості та версії бібліотек: навчання повторюється однією командою й дає зіставний результат, а не «приблизно такий самий».
  • Документація та передача — карта файлів і сховищ, порядок дій у разі збою, розбір рішення з інженерами замовника.

Такий комплект дає змогу розвивати модель власними силами або змінити підрядника без втрати напрацювань.

Кейс: контроль якості продукції на виробничій лінії

На лінії контроль якості тримався на вибірковому огляді: оператор знімав з конвеєра кожну десяту деталь і оцінював її очима. Дефект між перевірками йшов далі потоком і спливав на складанні — партію доводилося перебирати цілком, а причина збою на той момент губилася в статистиці. Розбираємо виробничий кейс: як контроль якості перевели на класифікацію зображень просто в потоці.

Розмітку будували не за студійними знімками, а за кадрами з лінії — з відблисками на металі, вібрацією конвеєра й різним освітленням між змінами.

Окремо розмітили межові випадки: подряпини глибиною в частки міліметра й допустимі сліди обробки, які не є браком — без них класифікатор спрацьовував би на нормі.

Модель навчили на сімействі EfficientNet, класи збалансували за частотою, а поріг рішення підібрали за кривою «пропуск — хибна тривога», а не за однією точністю.

Після запуску пропуск дефектів скоротився приблизно в шість разів, а хибні зупинки лінії впали до двох-трьох за зміну замість п’ятнадцяти-двадцяти. Перевірку проходить кожен виріб, а не вибірка, — частка оглянутої продукції зросла з 10% до 100%.

Зміні передали не лише модель: інтерфейс із вердиктом і підсвічуванням проблемної ділянки, налагоджуваний поріг чутливості й журнал спрацювань для розбору спірних кадрів.

Регламент оновлення описує, що робити при зміні партії сировини або ремонті освітлення: оператор позначає спірні кадри, і раз на кілька тижнів класифікатор донавчають на них. Так зниження браку тримається, а не відкочується через місяць.

Чим відрізняється донавчання від навчання моделі з нуля?

Донавчання — це перенесення знань: беремо мережу, яка вже навчилася на великому корпусі зображень, і адаптуємо її під свої класи.

Навчання з нуля починається з випадкових ваг, і мережі доводиться освоювати все одразу: і базові ознаки на кшталт контурів, текстур і градієнтів, і специфіку вашої задачі.

Коли даних мало — сотні або перші тисячі кадрів на клас, — донавчання майже завжди виграє. Ранні шари фіксують і не чіпають, навчають лише верхні та шар класифікації: модель сходиться за десятки епох, а ризик перенавчання на малій вибірці залишається керованим.

Умова одна — класи мають бути схожі на те, що мережа вже бачила: техніка, товари, документи, природні об’єкти.

Власна мережа потрібна, коли предметна область далека від звичайних фотографій: тепловізійні знімки, дефекти на металі, вузькоспеціальна зйомка. Перенесення знань тут тягне зміщення вихідного корпусу, і точність упирається в стелю.

Друга умова — даних достатньо, щоб модель не запам’ятала вибірку: зазвичай це десятки тисяч розмічених кадрів плюс помітний дисбаланс класів, який доводиться окремо балансувати.

Практичний критерій — обсяг і однорідність даних, вимоги до точності та вартість розмітки. За малого датасету починаємо з донавчання й лише потім поступово розморожуємо шари, якщо метрики перестали зростати.

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

Розбираємо технічні сумніви: якість, дані, підтримка

Перед стартом команда замовника ставить одні й ті самі інженерні питання: чи вистачить розмічених даних, що робити з рідкісними класами, як перевіряється стійкість і хто донавчає модель після передачі. Нижче — короткі відповіді про те, як це вирішується на практиці.

Чи вистачить наших даних для навчання?

Стартуємо від кількох сотень прикладів на клас: беремо попередньо навчені ваги й донавчаємо модель на вашому наборі. Валідацію збираємо стратифіковано, а нестачу даних закриваємо аугментаціями — і стежимо, де починається перенавчання.

Що робити при дисбалансі класів?

Комбінуємо ваги класів у функції втрат, пересемплювання рідкісних прикладів і підбір порога рішення. Якість рахуємо за precision і recall, плюс матриця помилок кожного класу — інакше рідкісний дефект розчиняється в загальній точності.

Як перевіряється стійкість моделі?

Тримаємо окремий набір знімків, зроблених в інших умовах: інше освітлення, ракурс, обладнання. Розрив між навчальною та перевірною вибіркою показує перенавчання раніше, ніж модель іде в роботу, і вказує проблемні класи.

Хто донавчає модель після передачі?

Передаємо ваги, конфігурацію навчання, маніфест датасету й скрипт запуску — донавчання на нових даних команда виконує власними силами. Супроводжуємо перші прогони, щоб додавання класу не ламало інші.

Розкажіть про задачу — повернемося з планом та оцінкою

Щоб оцінка проєкту спиралася на факти, а не на здогади, нам потрібен мінімум ввідних — зазвичай вистачає однієї розмови й пари файлів. Ці самі дані ляжуть в основу технічного завдання, тому зберемо їх один раз і без повторних питань.

  • Опис процесу: звідки надходить зображення, хто і як ухвалює рішення за результатом моделі.
  • Приклади знімків: кілька сотень кадрів із реальних умов, включно зі складними — змазаними, пересвіченими, з частково закритим об’єктом.
  • Поточна розмітка: класи, обсяг набору, хто розмічав і за яким правилом, що робити зі спірними випадками.
  • Вимоги до якості: яка частка помилок допустима й що дорожче — пропустити об’єкт чи позначити зайвий.
  • Цільове середовище: сервер, камера на об’єкті або мобільний пристрій, обмеження за пам’яттю й часом відповіді.
  • Доступи й дані: чи можна обробляти знімки на наших потужностях або їх потрібно тримати всередині вашого контуру.
  • Що вже зроблено: поточний код, раніше навчені моделі та їхні метрики — щоб не починати з нуля.

Опишіть задачу — повернемося з планом робіт та оцінкою: етапи, що перевіряємо на кожному, який результат вважаємо прийманням. Якщо частину даних ще не зібрано, обговоримо задачу й підкажемо, що критично, а що можна доуточнити по ходу.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142