Использование Tensorflow для реализации устной проверки (1): выбор модели

искусственный интеллект TensorFlow открытый источник GitHub

На выходных я помогала своему малышу проверять домашнее задание по математике дома и нашла очень интересное приложение: сфотографируй домашнее задание мобильным телефоном и сразу узнаешь, есть ли неправильная задача. Если вы сделаете что-то не так, это также будет отмечено и будет дан правильный ответ.

Из-за профессионального заболевания инженера-программиста, прочитав это приложение, я не мог не задуматься над его реализацией и изначально рассудил, что это приложение с использованием искусственного интеллекта. Думая, что я также изучаю технологию искусственного интеллекта, я буду использовать эту практику как обобщение знаний о глубоком обучении, которые я получил за этот период. С точки зрения конкретной формы, он готов к превращению в апплет WeChat, а бизнес-логика дорабатывается на стороне сервера.

По соглашению я все равно буду подробно записывать процесс реализации и выкладывать исходники на github, так что следите за обновлениями. Первоначальный план состоял в том, чтобы написать о генеративно-состязательных сетях (GAN), потому что с такой маленькой целью я мог только временно отложить ее.

Поставив перед собой эту небольшую цель, я собираю соответствующую информацию на этой неделе.

OCR

Для начала поговорим об OCR (Optical Character Recognition, Оптическое распознавание символов). OCR — это процесс, с помощью которого электронное устройство (такое как сканер или цифровая камера) исследует символы, напечатанные на бумаге, определяет их форму, обнаруживая темные и светлые узоры, а затем использует методы распознавания символов для преобразования формы в компьютерный текст. для печатных символов с использованием оптических методов для преобразования текста в бумажном документе в файл изображения с черно-белой точечной матрицей и преобразования текста в изображении в текстовый формат с помощью программного обеспечения для распознавания для дальнейшего редактирования и обработки с помощью программного обеспечения для обработки текстов. .

Технология OCR широко используется в полиграфии и полиграфии и позволяет быстро преобразовывать бумажные данные в электронные. OCR может распознавать текстовые символы, конечно же, можно распознавать числа, а технология OCR разрабатывалась много лет и является очень зрелой. При разработке проектов также есть зрелые решения с открытым исходным кодом на выбор, лучшим из которых является Tesseract.

Механизм OCR Tesseract был впервые разработан HP Labs в 1985 году, а к 1995 году он стал одним из трех самых точных механизмов распознавания в индустрии OCR. В 2005 году Tesseract был получен Институтом информационных технологий Невады и попросил Google улучшить, устранить ошибки и оптимизировать Tesseract. Tesseract в настоящее время опубликован в Google Project как проект с открытым исходным кодом.

Tesseract также очень прост в использовании.С помощью пакета pytesseract python следующие несколько строк кода можно использовать в python для реализации распознавания символов на картинке.

import pytesseract
from PIL import Image

image = Image.open('./test_images/image3.jpg')
text = pytesseract.image_to_string(image)
print(text)

Определите следующие изображения:

Результат выглядит следующим образом:

WHWM$Efifi%

 

35—5: 28-6= 38-8:
27-4: 25—4: 29—2:
25—3: 24—4: 49—4=
22—1: 47—5: 26-6=

 

42—1: 41—1: 44—3:

 

38-5= 46-6= 49-6=
34-3= 48-5= 28-4=
36-4= 39-4= 27-2=
48-6= 28-2= 46-5=
35-4= 26-5= 48-3=
27-3: 47-6: 38-4:
39-3= 33-2= 36-4=

mmz¥sm “mm" ‘x
31

Вышеуказанные результаты сделаны без какой-либо настройки и настройки, поэтому китайский язык не распознается, а также есть определенные ошибки, которые можно исправить кодом.

Кажется, что проблему можно решить быстро, разделив распознанный текст, а затем преобразовав его в арифметическую операцию, которую можно вычислить. Но самая большая проблема с этой схемой в том, что мы не получаем координаты формулы. Таким образом, если обнаружена ошибка, ее местонахождение не может быть четко определено, и требование не может быть выполнено.

Обнаружение объекта

Поскольку раньше я немного разбирался в обнаружении целей в глубоком обучении, я, естественно, подумал об использовании технологии обнаружения целей для достижения этой цели. Обнаружение объектов — это основное применение искусственного интеллекта, будь то обычное распознавание лиц или высокоуровневое автоматическое вождение, оно неотделимо от обнаружения объектов. Чтобы распознать объект или человека на сложном изображении, требуются сложные алгоритмы, что заставляет меня чувствовать себя эзотерикой, когда я думаю об этом, но, к счастью, существует такая структура, как TensorFlow, которая имеет мощный API для обнаружения объектов, так что люди без опыта машинного обучения могут также Быстро создавайте и развертывайте мощное программное обеспечение для распознавания изображений.

Ранее я писал серию статей по обнаружению объектов"Обнаружение объектов шаг за шагом с TensorFlow", подробный процесс здесь повторяться не буду, если коротко резюмировать, то общий процесс выглядит следующим образом:

  1. Выберите модель

    На github есть коллекция моделей TensorFlow, и эти предварительно обученные модели можно получить с помощью простой команды:

    git clone https://github.com/tensorflow/models.git
    

    В каталоге research есть подкаталог object_detection, в котором находится нужная нам модель обнаружения целей. В каталоге object_detections довольно много содержимого, включая наборы данных, файлы моделей, тестовые коды, примеры и т. д. Файлы моделей расположены в подкаталоге models:

    Поскольку в этом проекте распознаваемая сцена относительно проста, а распознаваемая цель несложна, я выбрал модель ssd_mobilenet_v1_coco, которая хорошо работает на мобильных терминалах.

  2. Подготовить данные

    Данные изображения, которые необходимо пометить для обучения, метка не только содержит категорию, но также должна содержать координаты цели на изображении. После того, как изображение аннотировано, его необходимо преобразовать в формат TFRecord, который может принять TensorFlow. Обычно мы реализуем это с помощью скриптов, о которых будет подробно рассказано в последующих статьях, а здесь расширяться не будем.

  3. тренироваться

    С нашими собственными данными мы можем использовать принцип трансферного обучения для обучения нашей собственной модели на существующей модели ssd_mobilenet_v1_coco.

  4. Распознавать числа и операторы

    Используя обученную модель, выполните распознавание чисел и символов операторов, а результаты распознавания включают категории и координаты на изображении.

С идентифицированными номерами и символами операций и их координатами мы можем сделать ряд суждений, чтобы определить формулу операции и ее положение.Логика этой части также имеет определенную степень сложности, но по сравнению с предыдущим обнаружением цели, это еще простой и не мало.

В процессе поиска информации нашел на гитхабе опенсорсный проект:GitHub.com/Стивен О Бар DJ…. Этот проект также распознает арифметические выражения на изображении и вычисляет результаты.Есть много мест, где можно поучиться.Я буду максимально использовать наборы данных и сценарии проекта в проекте.

В следующей статье я расскажу о том, как использовать обнаружение объектов для распознавания рукописных цифр.

Ссылаться на

  1. Используйте TensorFlow для пошагового обнаружения объектов (1)
  2. Используйте TensorFlow для пошагового обнаружения объектов (2)
  3. Используйте TensorFlow для пошагового обнаружения объектов (3)
  4. Пошаговое обнаружение объектов с помощью TensorFlow (4)
  5. Пошаговое обнаружение объектов с помощью TensorFlow (5)
  6. GitHub.com/Стивен О Бар DJ…

image