6

Testuję drukowane cyfry (0-9) na Convolutional Neural Network. Daje to 99+% dokładności na zestawie danych MNIST, ale gdy próbowałem go używając czcionek zainstalowanych na komputerze (Ariel, Calibri, Cambria, Cambria matematyka, Times New Roman) i trenowałem obrazy generowane przez czcionki (104 obrazy na czcionkę (Total 25 czcionek -.? 4 zdjęć na czcionki (mała różnica)) wskaźnik błędu szkolenie nie schodzi poniżej 80%, czyli dokładność 20% DlaczegoDigit Recognition on CNN

Oto "2" liczba obrazów próbki -

"2" Number Images

Zmieniłem rozmiar każdego zdjęcia 28 x 28.

Oto więcej szczegółów: -

Rozmiar danych treningu = 28 x 28 obrazów. parametry sieciowe - AS LeNet5 Architektury Network -

Input Layer -28x28 
| Convolutional Layer - (Relu Activation); 
| Pooling Layer - (Tanh Activation) 
| Convolutional Layer - (Relu Activation) 
| Local Layer(120 neurons) - (Relu) 
| Fully Connected (Softmax Activation, 10 outputs) 

To działa, daje dokładność + 99% na MNIST. Dlaczego tak źle z czcionkami generowanymi przez komputer? CNN może obsługiwać wiele wariancji danych.

+0

Jaką pełną topologię używasz? Czy to oryginalny LeNet5, czy zmieniliście którąś z ukrytych warstw? Jeśli szkolisz nowy model od podstaw, przeuczenie powinno wyglądać na kolejne 99 +% skuteczności; twoje 20% sugeruje jakiś inny problem. – Prune

+0

Tak, jest oryginalny LeNet5, warstwy są takie, jak wspomniano powyżej, działa z MNIST zestaw danych, ale nie mój zestaw danych, mój rozmiar zbioru danych wynosi 1036 zdjęć, 104 na numer. – kumar030

Odpowiedz

0

To może być problem z przeładowaniem. Może się to zdarzyć, gdy sieć jest zbyt skomplikowana, aby rozwiązać problem. Sprawdź ten artykuł: http://es.mathworks.com/help/nnet/ug/improve-neural-network-generalization-and-avoid-overfitting.html

+0

powinienem usunąć warstwy z sieci, wszelkie sugestie, które możesz podać. – kumar030

+0

Nie jestem zbyt bystry z CNN, ale myślę, że mógłbyś mieć zbyt wiele ukrytych warstw. Może to być dla Ciebie przydatne: http://cs231n.github.io/neural-networks-1/#arch << ... wydaje się, że mniejsze sieci neuronowe mogą być preferowane, jeśli dane nie są wystarczająco złożone, aby zapobiec przeżycie >> –

+0

Ile epok szkolisz swoją sieć? Jaki jest rozmiar Twojego zestawu danych? –

0

Zdecydowanie wygląda na problem przeuczenia. Widzę, że masz dwie warstwy splotu, dwie maksymalnie połączone warstwy i dwie całkowicie połączone. Ale ile suma wag jest całkowita? Masz tylko 96 przykładów na zajęcia, co jest z pewnością mniejsze niż liczba odważników w CNN. Pamiętaj, że chcesz mieć co najmniej 5 razy więcej instancji w swoim zestawie treningowym niż wag w CNN.

Masz dwa rozwiązania, aby poprawić CNN:

  • wytrząsania instancji w zbiorze treningowym. Każda liczba wynosi około 1 piksela. Będzie on już mnożył Twój zestaw treningowy przez 9.
  • Użyj warstwy transformatora. Doda elastyczną deformację do każdej liczby w każdej epoce. Wzmocni to wiele nauki, sztucznie zwiększając swój zestaw treningowy. Co więcej, znacznie skuteczniej będzie przewidywać inne czcionki.
2

widzę dwie prawdopodobne problemy:

Przetwarzanie wstępne: MNIST jest nie tylko 28px x 28px, ale również:

Oryginalny czarny i biały (dwupoziomowy) obrazy z NIST byli rozmiar znormalizowany, aby zmieścił się w pudełku o wymiarach 20x20 pikseli przy zachowaniu ich proporcji. Powstałe obrazy zawierają szare poziomy w wyniku techniki antyaliasingowej stosowanej przez algorytm normalizacji. obrazy były wyśrodkowane na obrazie 28x28, obliczając środek masy pikseli i przekładając obraz tak, aby ustawić ten punkt w środku pola 28x28.

Źródło: MNIST website

przeuczenia:

  • MNIST posiada 60.000 przykłady szkoleń i 10.000 przykładów testowych. Ile masz?
  • Czy próbowałeś przerwać (patrz paper)?
  • Czy próbowałeś technik rozszerzania zestawu danych? (np. nieznacznie zmieniając obraz, prawdopodobnie nieco zmieniając współczynnik proporcji, można również dodać szumy - jednak nie sądzę, że to pomoże).
  • Czy próbowałeś mniejszych sieci? (I jak duże są twoje Filtry/Filtry ile masz?)

Uwagi

Interesujący pomysł! Czy próbowałeś po prostu zastosować wyszkoloną sieć MNIST do swoich danych? Jakie są wyniki?

+1

Dobre punkty. Tylko w celu dodania innej opcji można również rozważyć normalizację partii (https://arxiv.org/abs/1502.03167). –