Распознавание образов на Python. Часть IX – базовое тестирование

Предыдущая статья – Распознавание образов в 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”.

2 комментария к “Распознавание образов на Python. Часть IX – базовое тестирование”

  1. Пингбэк: Распознавание образов на Python. Часть X – тестирование и визуализация - pythonturbo

  2. Пингбэк: Распознавание образов в Python. Часть VIII – сохранение данных для обучения и тестирования - pythonturbo

Комментарии закрыты.