§ 17. Системы перевода и распознавания текстов
Основные темы параграфа:
• как работают программы-переводчики;
• распознавание текста;
• ввод в компьютер печатного и рукописного текста.
В современном мире происходит очень важный процесс — формирование единого информационного пространства. Стираются информационные границы между странами и народами, у человека появляется возможность общаться в буквальном смысле слова со всем миром. Все это приводит к тому, что многие люди различных профессий начинают общаться с иностранными коллегами, читать справочную и другую специальную литературу на иностранном языке. Но далеко не каждый человек свободно владеет иностранными языками.
Современные компьютеры способны хранить большие массивы данных и производить в них быстрый поиск. Эти возможности компьютера можно использовать для создания электронных словарей и организации с их помощью перевода текста с одного языка на другой. Для этих целей сегодня уже существует множество программ.
Распознавание текста
Как работают программы-переводчики
Чтобы найти перевод неизвестного иностранного слова, пользователю электронного словаря достаточно ввести это слово в строке поиска, и уже через несколько мгновений будет получен исчерпывающий перевод. Современные текстовые процессоры имеют в своем составе словари, позволяющие производить орфографическую проверку правильности написания слов (на разных языках).
Но перевод отдельного слова и перевод целого текста — задачи совершенно разные. Чтобы понять смысл текста, не всегда хватает понимания значений всех входящих в него слов. Например, в английском языке слово «unit» имеет как минимум 6 различных значений. Какое из них имел в виду автор конкретного текста?
Следствием необходимости решения этих проблем стало появление компьютерных систем перевода текстов. Современные системы перевода позволяют не только переводить, но и редактировать перевод, работать с различными тематическими словарями, выполнять как простой и быстрый, так и сложный и профессиональный перевод. Эти программы (вернее, пакеты программ) позволяют работать с файлами различных типов, электронной почтой, гипертекстовыми документами и т. п. К сожалению, задача адекватного перевода до конца еще не решена — многие программы зачастую выполняют ее не всегда удачно.
Рассмотрим простой пример. Переведем с помощью системы перевода на английский язык фразу:
Информатика — это наука об информации.
The computer science is an information science.
А теперь с помощью той же программы переведем эту фразу на русский язык. Получим:
Информатика — информатика.
Как говорится, почувствуйте разницу!
Системы перевода еще уступают человеку, особенно в работе с художественными текстами, но эта область информатики развивается очень быстро и «электронные карманные переводчики» уже становятся незаменимым помощником туриста, отправляющегося в страну с незнакомым для него языком.
Распознавание текста с картинки на Python | Оптическое распознавание символов Tesseract
Распознавание текста
Перед обсуждением этой темы давайте вспомним, какие устройства ввода информации существуют у современных компьютеров? Клавиатура, мышь, сканер и др. Сканер, например, позволяет вводить графическую информацию с листа бумаги.
За сотни лет человечество накопило огромный объем информации на традиционных бумажных носителях (книгах, газетах, журналах и т. п.). В настоящее время существует потребность (у электронных библиотек, к примеру) переносить эту информацию в память компьютера.
Конечно, это можно сделать с помощью клавиатуры и текстового редактора, но, представьте себе, сколько времени уйдет даже у профессионального оператора на ввод, скажем, романа «Война и мир»? Необходимо как-то ускорить этот процесс. Встает вопрос, нельзя ли использовать сканер для ввода текстовой информации? Правда, в этом случае возникает такая проблема: все, что введено с помощью сканера, хранится в памяти ЭВМ как изображение. Надо «объяснить» компьютеру, что значок «с» — не просто закорючка, а буква, и хранить и обрабатывать его нужно как букву.
Ввод в компьютер печатного и рукописного текста
Существуют программы, позволяющие вводить тексты в ПК с помощью сканера. Используя специальные алгоритмы, они распознают буквы, позволяют редактировать распознанный текст и сохранять его в различных форматах. Популярной программой такого типа является АВВY FineReader. Работать с этой программой несложно.
Сначала нужно отсканировать текст (управлять сканером можно прямо в среде (FineReader), затем разбить этот текст на фрагменты, потом распознать эти фрагменты, отредактировать полученный текст и, наконец, сохранить его в нужном текстовом формате. Интерфейс программы позволяет освоить эти операции легко и быстро.
Задача распознавания текста относится к области проблем, которые решает наука под названием «Искусственный интеллект». Современные распознающие программы умеют читать не только печатный текст, но и текст, написанный самым «корявым» почерком.
Коротко о главном
Современные программные средства позволяют переводить тексты с одного языка на другой и распознавать их, переводя из отсканированного графического представления в текстовые файлы.
Вопросы и задания
1. Что такое электронные словари?
2. Какие дополнительные проблемы возникают при переводе текстов? Что отличает систему перевода текста от электронного словаря?
3. Почему отсканированный текст нельзя сразу обрабатывать текстовым редактором?
4. В чем состоит проблема распознавания текста?
Чему вы должны научиться, изучив главу 3
• Набирать текст в одном из текстовых редакторов.
• Выполнять основные операции над текстом, допускаемые этим редактором.
• Сохранять текст на диске, загружать его с диска, выводить на печать.
И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова, Информатика, 8 класс
Отослано читателями из интернет-сайтов
Планы уроков информатики, скачать тесты бесплатно, всё для учителя и школьника в подготовке к уроку по информатике 8 класс, домашние задания, вопросы и ответы
Содержание урока конспект урока опорный каркас презентация урока акселеративные методы интерактивные технологии Практика задачи и упражнения самопроверка практикумы, тренинги, кейсы, квесты домашние задания дискуссионные вопросы риторические вопросы от учеников Иллюстрации аудио-, видеоклипы и мультимедиа фотографии, картинки графики, таблицы, схемы юмор, анекдоты, приколы, комиксы притчи, поговорки, кроссворды, цитаты Дополнения рефераты статьи фишки для любознательных шпаргалки учебники основные и дополнительные словарь терминов прочие Совершенствование учебников и уроков исправление ошибок в учебнике обновление фрагмента в учебнике элементы новаторства на уроке замена устаревших знаний новыми Только для учителей идеальные уроки календарный план на год методические рекомендации программы обсуждения Интегрированные уроки
Если у вас есть исправления или предложения к данному уроку, напишите нам.
Если вы хотите увидеть другие корректировки и пожелания к урокам, смотрите здесь — Образовательный форум.
Источник: edufuture.biz
Как в прописи
Первые системы автоматического распознавания печатного текста появились достаточно давно — примерно тогда же, когда возникла необходимость оцифровывать все то, что было написано человечеством на бумаге. Почти сразу же выяснилось, что методы, применяемые для строго выверенных шрифтов вроде Times New Roman, совершенно не подходят для текста рукописного. Вот почему задача распознавания текстов, написанных от руки, до сих пор не решена окончательно. Как сегодня распознают рукописи, улучшились ли методы распознавания за последние несколько лет и нужно ли вообще автоматическое распознавание рукописного текста? Обо всем этом мы поговорили с участниками Global Innovation Forum 2019, прошедшего в Ереване в октябре этого года, — основателем компании ABBYY Давидом Яном и исследователем компании DeepMind Алексом Грейвзом.
Простая и сложная оптика
Практически все известные и нужные человеку тексты сегодня существуют в цифровом виде: так к ним проще получить доступ и использовать для каких-то задач помимо чтения (например, для быстрого поиска информации). Учитывая гигантский объем книг и периодических изданий, накопленных со времен изобретения книгопечатания, с этой задачей можно было справиться только с помощью автоматических методов.
Поэтому ближе к концу XX века появились и стали активно развиваться технологии оптического распознавания символов (англ. optical character recognition, сокращенно — OCR). Самый простой и до сих пор применяемый метод — матричное сопоставление: каждая буква в исходном изображении разбивается на пиксельные матрицы, а затем сопоставляется с матрицами, имеющимися у компьютера. При совпадении матриц буква считается распознанной.
Чтобы такой метод распознавания работал, для каждого языка достаточно иметь сравнительно небольшое количество данных — образцов написания букв, по которым и делаются попиксельные матрицы. Так, если у системы оптического распознавания есть матрицы всех 33 букв русского алфавита с учетом возможных регистров, а также всех знаков препинания, то она сможет распознать любой русскоязычный текст.
Все, однако, не так просто. Этот метод контекстно-зависим и не может сделать шаг в сторону от имеющейся у него матрицы: если пиксели в букве на исходном изображении расположены чуть иначе, то система в лучшем случае распознает ее с ошибкой (например, вместо п в тексте внезапно появится л), а в худшем — не распознает совсем.
Грубо говоря, программа, которая умеет распознавать текст, набранный шрифтом Times New Roman, не распознает текст, набранный Arial, и наоборот.
Разумеется, технологии распознавания текста, основанные исключительно на матричном сопоставлении, сейчас достаточно универсальны и могут работать со всеми известными типографам шрифтами и всеми языками (поэтому они до сих пор широко используются).
Проблема возникает тогда, когда программе приходится иметь дело со шрифтами, для которых достоверной пиксельной матрицы нет или ее очень трудно создать, — речь идет, в первую очередь, о текстах, написанных человеком от руки.
В случае с рукописным текстом (или другими редкими или нетипичными шрифтами) вариант с обычным сопоставлением пиксельных матриц может вовсе не работать. В таком случае используется немного другой способ — распознавание отдельных образов (впрочем, оно тоже оптическое).
Каждая буква, несмотря на то, что пишется разными людьми по-разному, все же состоит из одинаковых частей: в прописной р — длинная палочка, а в в — две фигуры, похожие на капельки. В случае с распознаванием отдельных образов также используется попиксельное сравнение, но вариантов того, как могут выглядеть буквы, у системы гораздо больше — просто потому, что там используются отдельные их части.
В таком случае каждый отдельный знак — это уже вектор характерных для буквы графических признаков, а задача сводится к тому, чтобы найти их в исходном тексте: например, с помощью метода k-ближайших соседей, используемого для решения задач классификации и кластеризации.
Работа подобных алгоритмов требует большого количества размеченных данных, но сегодня эта предварительная работа во многих случаях уже проделана. Например, в датасете MNIST содержится около 70 тысяч изображений написанных от руки цифр, и точность распознавания у обученных на нем алгоритмов очень высока — для сверточных нейросетей она составляет более 99 процентов.
Мысль на кончике пера
При автоматическом распознавании текста может возникнуть и другая сложность: между распознаванием рукописного текста прямо в процессе написания (своего рода режим «онлайн») и распознаванием уже готового текста («офлайн») есть большая разница.
В первом случае на помощь приходят дополнительные данные — фиксируемый процесс письма: благодаря тому, что у компьютера есть данные о ведении пера (то есть о том, как выводятся буквы на экране), он может распознать их сразу же.
Например, рукописное о выводится, начиная почти с самой верхней точки буквы, а похожая петля у рукописного а начинается с другого места, и даже в том случае, если в слове «поинтереснее» первые две гласные расположить очень близко друг к другу так, что ои сольются и будут напоминать рукописное а с лишней палочкой, проблемы не возникнет: система, следившая за процессом написания, отметила, с какой точки перо начало выводить первую букву.
Кроме того, во время письма случаются паузы — это тоже вспомогательная и весьма полезная информация. Так, если мы возьмем слово «дышишь», — известный пример того, насколько неразборчивым может быть русский рукописный текст даже для человека, — то компьютеру легче будет прочитать его, ориентируясь на микропаузы, возникающие между написанием отдельных букв.
Хорошим материалом для сравнения двух методов распознавания почерков могут послужить врачебные рецепты, которые, как известно, практически нечитаемы. Наблюдая за тем, как врач выводит каждую отдельную букву, мы скорее поймем, что он пишет, чем глядя на уже готовые каракули.
С «офлайн»-распознаванием, таким образом, все непросто — оно имеет дело с уже написанным текстом, без какой-либо информации о том, как именно его писали. В целом, программу для распознавания таких текстов обучают примерно так же, как и в случае с «онлайн»-распознаванием, но приходится учитывать, что доступная информация, необходимая для правильного узнавания букв, здесь очень ограничена.
Алекс Грейвз, исследователь из компании DeepMind, для решения этой задачи использует мультипространственные
со слоем долгой краткосрочной памяти. Его алгоритм на вход также берет попиксельные данные из написанного текста, но при этом в ходе обучения
на какой-то конкретный алфавит, что сильно облегчает задачу по сбору данных.
Другими словами, такая система не просто универсальна для любого шрифта (из-за чего может справиться с рукописным текстом), но также годится для любого языка, а, например, рукописную арабскую вязь распознает с точностью выше 91 процента.
Повседневное и исследовательское
Методы автоматического распознавания рукописного текста, таким образом, уже существуют — они не всегда работают идеально, но все же сегодня дают куда более надежный результат, чем те, что были предложены, например, 30 лет назад.
Возникает, однако, вопрос, нужны ли они вообще — по крайней мере, обычному человеку в его повседневной жизни.
«Алгоритм для распознавания рукописного текста, который я разработал, использовался для автоматической сортировки писем канадской почтой. Не знаю, так ли это до сих пор, но методы, которые применялись для создания подобных алгоритмов, подходили и для решения другой задачи — распознавания устной речи», — говорит Алекс Грейвз.
Алгоритмы для распознавания рукописного текста, разумеется, необходимы и сейчас. Хотя бы для того, например, чтобы разбирать те же врачебные рецепты. Но у программ OCR есть задачи и другого рода — исследовательские.
В распоряжении человечества имеется множество разнообразных рукописей — как сравнительно новых, так и древних, написанных на малопонятных и малознакомых языках. Их затруднительно оцифровать даже с помощью оператора-человека — ведь зачастую надо не просто распознать каждый отдельный символ или слово, необходимо восстановить смысл текста, некогда очевидный для современников.
Трудности часто возникают уже на уровне грамматики — ведь автор или переписчик вполне мог писать с ошибками, и они сами по себе представляют для историков языка интерес, поскольку позволяют «услышать» давно замолкшую живую речь. Подключение словаря или даже корпуса для языка распознавания не всегда дает результат, так как словарь ошибок не фиксирует, а корпус может не знать именно этой ошибки.
Впрочем, умное распознавание рукописного текста способно значительно помочь в работе и с такими текстами.
Например, в случае, если качество оцифрованного материала не очень хорошее, классическое сопоставление матриц с опорой на словарь, ограниченный возможными для языка (или чуть уже — для этого текста) словами, позволяет исключить из распознаваемого текста заведомо неверные варианты и даже заменить их верными.
А если такую систему на большом корпусе текстов обучить еще и грамматике распознаваемого языка (или, например, использовать n-граммы, чтобы ограничить варианты слов, которые в тексте могут идти друг за другом), то она и вовсе сможет работать практически без ошибок.
Чтение исчезнувшего текста
Однако в рукописях встречаются трудности и совершенно другого рода. Например, какие-то куски текста могут быть попросту утеряны.
«Если взять текст и замазать все черной краской, такой текст никто никогда не распознает. Но если взять текст и провести черные полосы так, чтобы не были видны лишь какие-то куски, человек это прочитает — наверное, в 98 процентах случаев», — рассуждает Давид Ян. «Откуда вы возьмете отсутствующую информацию? — продолжает он. — Из головы. То есть вы дополните отсутствующую информацию знаниями, которые у вас уже были. Так же и машина. Раз человек прочитает, то и машина рано или поздно прочтет».
Обычно компьютеру для выполнения этой задачи данных хватает — в том случае, если они есть у обучившего его человека. Так, недавно исследователи из DeepMind представили алгоритм PYTHIA, способный восстанавливать все возможные варианты утерянных древнегреческих надписей на античных памятниках.
При этом PYTHIA опирается на большой объем ранее собранных данных, например на оцифрованный корпус древнегреческих текстов, по которому можно делать поиск.
Сначала на основании данных этого корпуса происходит распознавание текста, сохранившегося на памятнике, а затем решается основная задача PYTHIA — дешифровка всех возможных вариантов утраченных фрагментов на основе составленного из текстов словаря.
Получается, что любая задача, связанная с распознаванием рукописного текста, — узкая или более масштабная, связанная с необходимостью восстановить утраченные фрагменты, — все равно сводится к тому, чтобы собрать и разметить максимально большое количество данных.
Это довольно сложно и по-прежнему требует долгого и кропотливого человеческого труда, поэтому многие задачи, требующие чтения и анализа старинных рукописей, до сих пор — даже с учетом быстрого развития технологий — решаются исследователями вручную.
Давид Ян, в свою очередь, уверен, что в будущем эта задача так или иначе будет автоматизирована: «Если кому-то надо восстанавливать древние надписи, кто-то будет их восстанавливать — или люди, или машина. Что-то мне подсказывает, что машина именно вот в таких вещах будет лучше, чем люди: она будет подходить к задаче точнее и гораздо внимательнее относиться к деталям, чем это делает человек».
Источник: nplus1.ru
Практический пример
Итак, после всех разговоров, пришло время испачкать руки и попробовать себя в моделировании. Мы попробуем решить SVHN задача. Данные SVHN содержат три разных набора данных:поезд,теста такжедополнительный, Различия не ясны на 100%, однакодополнительныйсамый большой набор данных (с ~ 500K выборками) включает в себя изображения, которые как-то легче распознать. Так что ради этого дубля мы будем его использовать.
Чтобы подготовиться к заданию, сделайте следующее:
- Вам понадобится базовый графический процессор с Tensorflow≥1.4 и Keras≥2
- Клонировать проект SSD_Keras из Вот,
- Загрузите предварительно подготовленную модель SSD300 для набора данных кокосов из Вот,
- клонэторепо проекта от Вот..
- Скачать extra.tar.gz файл, содержащий дополнительные изображения набора данных SVHN.
- Обновите все соответствующие пути в json_config.json в этом репозитории проекта.
Чтобы эффективно следовать процессу, вы должны прочитать приведенную ниже инструкцию вместе с запускомssd_OCR.ipynbтетрадь из репо проекта.
И . Вы готовы начать!
Шаг 1: разобрать данные
Как ни крути, но нет «золотого» формата для представления данных в задачах обнаружения. Некоторые хорошо известные форматы: coco, via, pascal, xml. И это еще не все. Например, набор данных SVHN аннотирован неясным.матформат. К счастью для нас, это суть обеспечивает пятноread_process_h5Скрипт для преобразования файла .mat в стандартный json, и вам нужно сделать один шаг вперед и преобразовать его в формат Паскаль, например так:
def json_to_pascal(json, filename): #filename is the .mat file
# convert json to pascal and save as csv
pascal_list = []
for i in json:
for j in range(len(i[‘labels’])):
pascal_list.append( ,’xmin’: int(i[‘left’][j]), ‘xmax’: int(i[‘left’][j]+i[‘width’][j])
,’ymin’: int(i[‘top’][j]), ‘ymax’: int(i[‘top’][j]+i[‘height’][j])
,’class_id’: int(i[‘labels’][j])>)
df_pascal = pd.DataFrame(pascal_list,dtype=’str’)
df_pascal.to_csv(filename,index=False)p = read_process_h5(file_path)json_to_pascal(p, data_folder+’pascal.csv’)
Теперь мы должны иметьpascal.csvфайл, который является гораздо более стандартным и позволит нам прогрессировать. Если преобразование будет медленным, обратите внимание, что нам не нужны все образцы данных. ~ 10К будет достаточно.
Шаг 2: посмотрите на данные
Перед началом процесса моделирования вам следует лучше изучить данные. Я предоставляю только быструю функцию для проверки работоспособности, но я рекомендую вам сделать еще один анализ:
def viz_random_image(df):
file = np.random.choice(df.fname)
im = skimage.io.imread(data_folder+file)
annots = df[df.fname==file].iterrows() plt.figure(figsize=(6,6))
plt.imshow(im) current_axis = plt.gca() for box in annots:
label = box[1][‘class_id’]
current_axis.add_patch(plt.Rectangle(
(box[1][‘xmin’], box[1][‘ymin’]), box[1][‘xmax’]-box[1][‘xmin’],
box[1][‘ymax’]-box[1][‘ymin’], color=’blue’, fill=False, linewidth=2))
current_axis.text(box[1][‘xmin’], box[1][‘ymin’], label, size=’x-large’, color=’white’, bbox=)
plt.show()
viz_random_image(df)
Для следующих шагов я предоставляюutils_ssd.pyв репо, который облегчает тренировку, весовую нагрузку и т. д. Часть кода взята из репозитория SSD_Keras, который также широко используется.
Шаг 3: выбор стратегии
Как обсуждалось ранее, у нас есть много возможных подходов к этой проблеме. В этом уроке я расскажу о стандартном подходе к обнаружению глубокого обучения и использую модель обнаружения SSD. Мы будем использоватьSSD керасреализация от Вот, Это хорошая реализация от PierreLuigi.
Хотя он имеет меньше звезд GitHub, чем rykov8 реализация, кажется, более обновленная, и ее легче интегрировать. Это очень важно заметить, когда вы выбираете, какой проект вы собираетесь использовать. Другими хорошими вариантами выбора станут модель YOLO и маска RCNN.
Шаг 4: Загрузите и обучите модель SSD
Некоторые определения
Чтобы использовать репо, вам необходимо убедиться, что у вас есть репозиторий SSD_keras, и указать пути в файле json_config.json, чтобы позволить записной книжке найти пути
Начать с импорта:
import os
import sys
import skimage.io
import scipy
import jsonwith open(‘json_config.json’) as f: json_conf = json.load(f)ROOT_DIR = os.path.abspath(json_conf[‘ssd_folder’]) # add here mask RCNN path
sys.path.append(ROOT_DIR)
import cv2
from utils_ssd import *
import pandas as pd
from PIL import Image
from matplotlib import pyplot as plt
%matplotlib inline
%load_ext autoreload
% autoreload 2
и еще несколько определений:
task = ‘svhn’labels_path = f’pascal.csv’input_format = [‘class_id’,’image_name’,’xmax’,’xmin’,’ymax’,’ymin’ ]
df = pd.read_csv(labels_path)
Конфигурации модели:
class SVHN_Config(Config):
batch_size = 8
dataset_folder = data_folder
task = task
labels_path = labels_path
input_format = input_format
conf=SVHN_Config()
resize = Resize(height=conf.img_height, width=conf.img_width)
trans = [resize]
Определить модель, вес нагрузки
Как и в большинстве случаев глубокого обучения, мы не начнем обучение с нуля, но мы будем загружать предварительно обученные веса. В этом случае мы загрузим веса модели SSD, обученной на базе данных COCO, которая имеет 80 классов. Ясно, что в нашей задаче всего 10 классов, поэтому мы восстановим верхний слой, чтобы получить правильное количество выходов после загрузки весов. Мы делаем это в функции init_weights. Примечание: правильное количество выходов в этом случае составляет 44: 4 для каждого класса (координаты ограничивающего прямоугольника) и еще 4 для фона / класса нет
learner = SSD_finetune(conf)
learner.get_data(create_subset=True)
weights_destination_path=learner.init_weights()
learner.get_model(mode=’training’, weights_path = weights_destination_path)
model = learner.model
learner.get_input_encoder()
ssd_input_encoder = learner.ssd_input_encoder
# Training schedule definitions
adam = Adam(lr=0.0002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
ssd_loss = SSDLoss(neg_pos_ratio=3, n_neg_min=0, alpha=1.0)
model.compile(optimizer=adam, loss=ssd_loss.compute_loss)
Определить загрузчики данных
train_annotation_file=f’ train_pascal.csv’
val_annotation_file=f’ val_pascal.csv’
subset_annotation_file=f’ small_pascal.csv’batch_size=4
ret_5_elements=train_generator = learner.get_generator(batch_size, trans=trans, anot_file=train_annotation_file,
encoder=ssd_input_encoder)val_generator = learner.get_generator(batch_size,trans=trans, anot_file=val_annotation_file,
returns=, encoder=ssd_input_encoder,val=True)
5. Обучение модели
В настоящее времячто модель готова, мы установим некоторые последние определения, связанные с обучением, и начнем обучение
learner.init_training()history = learner.train(train_generator, val_generator, steps=100,epochs=80)
В качестве бонуса я включилtraining_plotобратный вызов в учебном скрипте для визуализации случайного изображения после каждой эпохи. Например, вот снимок прогнозов послешестойэпоха:
Репозиторий SSD_Keras обрабатывает сохранение модели практически после каждой эпохи, поэтому вы можете загрузить модели позже, просто изменивweights_destination_pathлиния, равная пути
weights_destination_path =
Если вы следовали моим инструкциям, вы сможете тренировать модель. Ssd_keras предоставляет некоторые дополнительные функции, например, дополнения данных, различные загрузчики и оценщик. Я достиг> 80 мА после короткой тренировки.
Как высоко вы достигли?
Резюме
В этом посте мы обсудили различные проблемы и подходы в области OCR. Как много проблем в глубоком обучении / компьютерном зрении, он имеет гораздо больше, чем кажется на первый взгляд. Мы видели множество его подзадач и несколько разных подходов к их решению, ни один из которых в настоящее время не является серебряной пулей. С другой стороны, мы видели, что не очень сложно достичь предварительных результатов без особых хлопот.
Надеюсь, вам понравилось!
Источник: machinelearningmastery.ru