Скільки зображень у класі достатньо для навчання CNN


12

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


Визначте "розумний"? Ваша мета досягти точності, яку можна було б використовувати у виробничій системі? Ваша мета якась інша річ? Існує кілька варіантів підготовки до напівпідготовки та напівпідготовки, які можуть заощадити зусилля, тож ви могли б уточнити, чи є ваша проблема в маркуванні зображень або просто пошуку будь-якого зображення. Нарешті, наскільки чистими та простими є цільові зображення? Зображення, де виправлені освітлення та пози, буде легше тренуватись, ніж фотографії з "реального світу" з надітими кросівками.
Ніл Слейтер

Так, це буде використовуватися у виробництві. Я зараз не знаю, скільки буде занять, оскільки я не знаю, скільки різних типів кросівок є в бібліотеці зображень. Моя найкраща здогадка була б на порядку 50-100, але чим кращий опис кросівок, тим менше класів (напр. Air-jordan vs. air-jordan-ultrafit). На жаль, бібліотека зображень - це суміш кросівок та кросівок, поставлених як нерухомі предмети з білим фоном.
Feynman27

Відповіді:


2

З Як мало прикладів тренувань занадто мало при навчанні нейронної мережі? на резюме:

Це дійсно залежить від вашого набору даних та мережевої архітектури. Я прочитав (2) одним із головних правил - це кілька тисяч зразків на клас, щоб нейронна мережа почала працювати дуже добре. На практиці люди намагаються бачити.


Хороший спосіб приблизно оцінити, якою мірою може бути корисно мати більше зразків тренувань - побудувати графік продуктивності нейронної мережі залежно від розміру навчального набору, наприклад з (1):

введіть тут опис зображення



0

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

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

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

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

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

Також для кожного класу потрібно спробувати отримати однакову кількість зображень, інакше набори даних можуть перекоситися (більше одного виду).

Також я пропоную, якщо ви використовуєте TensorFlow , прочитайте докладніше про класифікатор зображень GOOGLE INCEPTION . Це вже навчений класифікатор у базі даних зображень google, і ви можете використовувати його для своїх зображень, таким чином вимоги до кількості зображень різко знижуються.


Я вже провів швидкий тест, використовуючи Inception-v3 TensorFlow. Найкраще, що можна зробити, - це дати мені класифікацію дуже курсової, наприклад, "взуття для бігу", але мені потрібно щось трохи більш детальне, наприклад, "air-jordan-ultrafit". Ось чому я будую новий навчальний набір для використання з початком.
Feynman27

Це дивне визначення "трохи більш деталізованого".
Jivan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.