Ile zdjęć w klasie wystarcza do wyszkolenia CNN

12

Rozpoczynam projekt, w którym zadaniem jest identyfikacja typów tenisówek na podstawie zdjęć. Obecnie czytam implementacje TensorFlow i Torch . Moje pytanie brzmi: ile zdjęć na klasę jest wymaganych, aby osiągnąć rozsądną klasyfikację?

Feynman27
źródło
Zdefiniować „rozsądny”? Czy Twoim celem jest uzyskanie dokładności, którą można by zastosować w systemie produkcyjnym? Czy twoim celem jest coś innego? Ile jest zajęć? Istnieją pewne warianty treningu przedtreningowego i częściowo nadzorowanego, które mogą zaoszczędzić ci wysiłku, więc możesz wyjaśnić, czy twoja troska polega na etykietowaniu wysiłku , czy po prostu na pozyskiwaniu dowolnego obrazu. Wreszcie, jak czyste i proste są Twoje obrazy docelowe? Obrazy z ustalonym oświetleniem i pozą będą łatwiejsze do trenowania niż fotografie z „prawdziwego świata” z założonymi trampkami.
Neil Slater,
Tak, zostanie to wykorzystane w produkcji. Obecnie nie wiem, ile będzie klas, ponieważ nie wiem, ile różnych typów tenisówek znajduje się w bibliotece obrazów. Moje najlepsze przypuszczenie byłoby rzędu 50-100, ale im bardziej szczegółowy opis tenisówki, tym mniej klas (np. Air-jordan vs. air-jordan-ultrafit). Niestety, biblioteka obrazów to mieszanka noszonych trampek i trampek przedstawianych jako stałe przedmioty z białym tłem.
Feynman27

Odpowiedzi:

2

Od Ile przykładów treningów jest zbyt mało podczas szkolenia sieci neuronowej? w CV:

To naprawdę zależy od zestawu danych i architektury sieci. Jedna podstawowa zasada, którą przeczytałem (2), to kilka tysięcy próbek na klasę, aby sieć neuronowa zaczęła bardzo dobrze działać. W praktyce ludzie próbują zobaczyć.


Dobrym sposobem na przybliżoną ocenę, w jakim stopniu korzystne byłoby posiadanie większej liczby próbek treningowych, jest wykreślenie wydajności sieci neuronowej w oparciu o rozmiar zestawu treningowego, np. Z (1):

wprowadź opis zdjęcia tutaj


Franck Dernoncourt
źródło
0

Najlepszym rozwiązaniem jest zebranie jak największej ilości danych. Następnie rozpocznij projekt i utwórz model danych.

Teraz można ocenić swój model, aby zobaczyć, czy to ma wysoki Bias lub duża zmienność.

Wysoka rozbieżność : w tej sytuacji zobaczysz, że błąd weryfikacji krzyżowej jest wyższy niż błąd treningu po zbieżności. Istnieje znaczna luka, jeśli wykreślisz to samo względem wielkości danych treningu.

Duże odchylenie : W tej sytuacji błąd weryfikacji krzyżowej jest nieco wyższy niż błąd szkolenia, który sam jest wysoki, gdy wykreślany jest względem wielkości danych treningowych. Poprzez wykreślanie względem wielkości danych treningowych mam na myśli, możesz wprowadzić podzbiory danych treningowych, które posiadasz, i stale zwiększać rozmiar podzbioru i błędy wydruku.

Jeśli zauważysz, że Twój model ma dużą wariancję (dopasowanie), dodanie większej ilości danych zwykle pomaga w przeciwieństwie do modelu o dużym odchyleniu (dopasowanie), w którym dodanie nowych danych treningowych nie pomaga.

Również dla każdej klasy musisz spróbować uzyskać taką samą liczbę obrazów, w przeciwnym razie zestawy danych mogą zostać zniekształcone (więcej jednego rodzaju).

Sugeruję również, jeśli używasz TensorFlow , przeczytaj więcej o INCEPTION Image Classifier w GOOGLE . Jest już wyszkolonym klasyfikatorem w bazie danych obrazów Google i możesz go używać do swoich zdjęć, w ten sposób wymagania dotyczące liczby zdjęć drastycznie spadają.

Xeqtr
źródło
Przeprowadziłem już szybki test przy użyciu Inception-v3 TensorFlow. Najlepsze, co mógł zrobić, to dać mi bardzo szczegółową klasyfikację kursu, na przykład „buty do biegania”, ale potrzebuję czegoś bardziej szczegółowego, na przykład „air-jordan-ultrafit”. Właśnie dlatego buduję nowy zestaw treningowy do użycia z Inception.
Feynman27,
To dziwna definicja „nieco bardziej szczegółowego”.
Jivan