Предыдущая статья – Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования.
Теперь, когда у нас есть образцы данных, мы готовы их сравнить. Метод, который мы собираемся использовать, очень прост, но вы удивитесь, насколько прилично он работает.
Мы просто будем сравнивать пиксель с пикселем, да и всё:
from PIL import Image import numpy as np import time from collections import Counter def whatNumIsThis(filePath): matchedAr = [] loadExamps = open('numArEx.txt','r').read() loadExamps = loadExamps.split('\n') i = Image.open(filePath) iar = np.array(i) iarl = iar.tolist() inQuestion = str(iarl) for eachExample in loadExamps: try: splitEx = eachExample.split('::') currentNum = splitEx[0] currentAr = splitEx[1] eachPixEx = currentAr.split('],') eachPixInQ = inQuestion.split('],') x = 0 while x < len(eachPixEx): if eachPixEx[x] == eachPixInQ[x]: matchedAr.append(int(currentNum)) x+=1 except Exception as e: print(str(e)) print(matchedAr) x = Counter(matchedAr) print(x) print(x[0]) whatNumIsThis('images/test.png')
Сначала мы работаем с тестовым изображением, которое не включено в обучающий набор. Запустив код, мы подсчитываем совпадения:
Counter({2: 461, 3: 389, 6: 374, 9: 366, 5: 365, 7: 364, 8: 361, 1: 325, 4: 321})
Лучше всего было распознано число 2, результат 461 раз. Это успех. На втором месте число 3 – 389 раз. Наихудший результат у числа 4, это 321 раз (из 500 возможных). На самом деле, общий результат выглядит не очень хорошим. По большому счету, всё, что меньше 400, нам совсем не подходит.
Если вам не всё понятно, посмотрите видео, там работа функции изложена более подробно.
Далее мы проверим работу с некоторыми другими написанными от руки числами. Нарисуем число 3 посмотрим, что будет. Также в следующей статье мы попробуем визуализировать результаты и провести еще несколько тестов.
Следующая статья: Распознавание образов на Python: Часть X – тестирование и визуализация.
Перевод статьи “Basic Testing”.
Пингбэк: Распознавание образов на Python. Часть X – тестирование и визуализация - pythonturbo
Пингбэк: Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования - pythonturbo