Wpis z mikrobloga

#programowanie #machinelearning #python #pytanie #opencv

Chciałbym by program w czasie rzeczywistym oznaczał cyfry wyskakujące na ekranie. Zrobiłem już demo z bazą MNIST jednak napotyka ona troche problemów. Pomyślałem, że może stworze nowe wzorce na podstawie fonta (pic rel) gdyż nie są to liczby pisane ręcznie. Najlepiej by było ograniczyć się tylko do tych wzorców. Nie wiem jednak jak dodać to do bazy czy stworzyć nową baze.
Mógłby ktoś nakierować na jakieś przydatne edukacyjne linki?
Wcale nie umiem pythona, program złożyłem z gotowców (na podstawie tego http://hanzratech.in/2015/02/24/handwritten-digit-recognition-using-opencv-sklearn-and-python.html )
Może ktoś ma jakieś porady co do kodu?
glupiekonto - #programowanie #machinelearning #python #pytanie #opencv
 
Chciałbym ...

źródło: comment_GN37WQB7nSGCGmIg1hw3I78xlkmhSFkm.jpg

Pobierz
  • 13
Musisz wczytać sobie pliki .png do numpy array. Kazdy plik który masz na screenie jest osobnym elementem 'feature' do którego przypisujesz etykietę zgodnie z nazwą. Przykład, będziesz miał 9 plików charakteryzujących jedynkę. Aby proces uczenia zadziałał musisz również dostarczyć etykietę ('label') do każdego pliku. Można to łatwo dostać przy pomocy skryptu podobnego do https://pastebin.com/77zRij5J
Wczytanie .png do np.array można zrobić na wiele sposobów np. https://stackoverflow.com/questions/31386096/importing-png-files-into-numpy
Po kodze trenera wydaje mi się, że
Dawno nie bawiłem się 'computer vision' i nie pamiętam czy HOG jest niezmienniczy ze względu na skalowanie obrazu. Własność ta określa, czy rozpoznawane obiekty mogą mieć różny rozmiar od zestawu treningowego i wciąż być dostatecznie dobrze klasyfikowane. Jeśli tak nie jest, a takiej własności potrzebujesz, być może potrzebujesz innego podejścia.
Co do samej detekcji, w zależności jak bardzo "zaszumione" obrazy próbujesz rozpoznać, możesz popróbować z różnymi progami w cv2.threshold.
Ogółem to polecam
@Ustenek: tak też zrobiłem

dataset = MNIST('mnist')
features, labels = dataset.load_training()

Tylko teraz wywala AttributeError: 'list' object has no attribute 'reshape'
Podejrzewam że to powinno być w typie array z numpy i znowu nie wiem co z tym zrobic
@Ustenek: wszystko działało ale kiedy patrzył na jedynke to cały czas twierdził że to trójka. Zacząłem przeglądać baze i sie okazało że jedynek tam w ogóle nie ma. Musiałem dorobić pusty folder w tym konwerterze żeby dodał też te jedynki i teraz wszystko śmiga.