Wpis z mikrobloga

Czołem Mirki, zamierzam napisać sobie prostą aplikację do rozpoznawania chińskich znaków (użytkownik rysuje znak a aplikacja jest nauczona do rozpoznawania tylko paru znaków). Oczywiście zamierzam do tego wykorzystać sieci neuronowe i chciałbym się Was zapytać: czy poniższy opis działania programu jest w porządku czy byście coś zmienili?

Narysowany znak będzie skalowany do wymiarów 60x60px, a następnie podawany na wejście sieci, wyjściem będzie liczba binarna (4bity). Każdy ze znaków będzie miał własną sieć a ta z kolei będzie miała zapisany identyfikator znaku. Jeśli wyjście z sieci będzie zgadzało się z tym identyfikatorem to uznane to będzie za "poprawne" rozpoznanie znaku. Oczywiście domyślam się, że może zostać tak rozpoznanych parę fałszywych ale na dzień dzisiejszy nie przeszkadza mi to.

  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@BigAngryPenguin: zwykle robi się to tak: jedno wyjście = jeden znak, każde wyjście to wartość 0-100%, wybrany zostaje zwycięzca czyli ten znak, któremu odpowiada największa wartość wyjścia.
Wtedy można dodać dodatkowe kryterium np. brak zdecydowanego zwycięzcy (przynajmniej kilka % przewagi) = nierozpoznany znak
  • Odpowiedz
@bartosz-k999: oczywiście mówię o swoim modelu, w twoim to nie zadziała bo wzór 4-bitowy jest zbyt uproszczony i dla większej liczby znaków będziesz musiał i tak dodać więcej wyjść, a wtedy twoim starym znakom będą odpowiadały dokładniejsze kody
  • Odpowiedz
@BigAngryPenguin: Wejście 60x60 jest ryzykowne ze względu na problemu z uogólnianiem wiedzy czy czasem uczenia. Czytałem sporo literatury na ten temat i ogólnie poleca się najpierw przetworzyć takie dane aby zredukować wejścia do kilku-kilkunastu. Najpierw często robi się skalowanie i rotację (żeby zredukować "szum" w postaci pozycji i obrotu). Potem z tego wydobywa się różne cechy (ang. "features") takie jak intensywność obrazu, symetria itd. i to się dopiero daje na
  • Odpowiedz