Pull to refresh

Пару слов о распознавании образов

Algorithms *Image processing *
Tutorial
Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.
image

Какие-то статьи по Optical Recognition я пишу давненько, так что пару раз в месяц мне пишут различные люди с вопросами по этой тематике. Иногда создаётся ощущение, что живёшь с ними в разных мирах. С одной стороны понимаешь, что человек скорее всего профессионал в смежной теме, но в методах оптического распознавания знает очень мало. И самое обидное, что он пытается применить метод из близрасположенной области знаний, который логичен, но в Image Recognition полностью не работает, но не понимает этого и сильно обижается, если ему начать рассказывать что-нибудь с самых основ. А учитывая, что рассказывать с основ — много времени, которого часто нет, становится всё ещё печальнее.
Распознать
Total votes 130: ↑129 and ↓1 +128
Views 301K
Comments 52

Распознавание номеров: от А до 9

Recognitor corporate blog Algorithms *Image processing *
Уже пару раз на Хабре возникали дискуссии на тему того, как сейчас работает распознавание номеров. Но статьи, где были бы показаны разные подходы к распознаванию номеров, на Хабре пока не было. Так что здесь попробуем разобраться, как все это работает. А потом, если статья вызовет интерес, продолжим и выложим работающую модель, которую можно будет поисследовать.

image
Читать дальше →
Total votes 140: ↑137 and ↓3 +134
Views 167K
Comments 268

Не соблаговолите ли больше не нарушать, сэр (мэм)?

Recognitor corporate blog Open source *Image processing *
Примерно неделю назад Vasyutka опубликовал пост про распознавание номеров и обещал, что мы выложим софт, который можно будет опробовать. Мы немножко схитрили, не рассказав все подробнее. Ну, а то бы никакой интриги не было! Ядро алгоритма распознавания мы сделали с полгода назад, но тот проект, для которого оно было сделано, не двинулся. Он остановился где-то на альфа-версии. Подумав, и посовещавшись с заказчиком, мы решили, что это нехорошо, когда такой алгоритм пылится на полке и не приносит пользу обществу. С другой стороны выкладывать все исходники распознающей части не хотелось. Тогда и родилась идея, о которой пойдёт речь в этой статье.
image
Решили мы, собственно, сделать открытый сервер, который бы распознавал номера, приходящие http-запросами. Так как вся идея некоммерческая, то сервер, конечно, слабенький, но на то, чтобы народ игрался, надеюсь, его хватит.
А вот тут крутой поворот сюжета. Пост этот не про протокол обращения к серверу. Об этом будет следующий пост. Этот пост о программе, которую мы начали делать как пример работы с сервером, но которая вылилась в интересную на наш взгляд концепцию. В статье будет рассказано про Android-приложение, которым можно сфотографировать номер автомобиля… И обругать владельца бранным словом! Ну, или посмотреть статистику того, сколько раз сего автомобилиста обругали.
Те, кому невтерпёж, смогут расковырять работу с сервером из исходников в конце статьи. Остальных подержим пару дней в напряжении, а потом выложим законченный мануал.
Заинтриговал?
Total votes 120: ↑110 and ↓10 +100
Views 65K
Comments 65

Постановка задачи компьютерного зрения

Website development *System Analysis and Design *Algorithms *Image processing *Machine learning *

Последние лет восемь я активно занимаюсь задачами, связанными с распознаванием образов, компьютерным зрением, машинным обучением. Получилось накопить достаточно большой багаж опыта и проектов (что-то своё, что-то в ранге штатного программиста, что-то под заказ). К тому же, с тех пор, как я написал пару статей на Хабре, со мной часто связываются читатели, просят помочь с их задачей, посоветовать что-то. Так что достаточно часто натыкаюсь на совершенно непредсказуемые применения CV алгоритмов.
Но, чёрт подери, в 90% случаев я вижу одну и ту же системную ошибку. Раз за разом. За последние лет 5 я её объяснял уже десяткам людей. Да что там, периодически и сам её совершаю…

В 99% задач компьютерного зрения то представление о задаче, которое вы сформулировали у себя в голове, а тем более тот путь решения, который вы наметили, не имеет с реальностью ничего общего. Всегда будут возникать ситуации, про которые вы даже не могли подумать. Единственный способ сформулировать задачу — набрать базу примеров и работать с ней, учитывая как идеальные, так и самые плохие ситуации. Чем шире база-тем точнее поставлена задача. Без базы говорить о задаче нельзя.

Тривиальная мысль. Но все ошибаются. Абсолютно все. В статье я приведу несколько примеров таких ситуаций. Когда задача поставлена плохо, когда хорошо. И какие подводные камни вас ждут в формировании ТЗ для систем компьютерного зрения.
Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Views 69K
Comments 54

Обзор дескрипторов изображения Local Binary Patterns (LBP) и их вариаций

Algorithms *Image processing *Machine learning *
Добрый день, хабровчане. Приглашаю под кат программистов, интересующихся компьютерным зрением и обработкой изображений. Возможно, вы пропустили несложный но эффективный математический инструмент для низкоуровневого описания текстур и задания их признаков для алгоритмов машинного обучения.
Мне интересно!
Total votes 11: ↑11 and ↓0 +11
Views 14K
Comments 10

Распознавание образов и научное знание

Image processing *Data visualization *Machine learning *
Последние достижения в распознавании образов впечатляют. Достаточно вспомнить результаты соревнований на базе ImageNet. Сразу же возникает вопрос, что дальше? Как мы можем использовать полученные достижения?

Что-то важное началось, когда Fei-Fei стартовала ImageNet проект. Похоже на революцию.
Читать дальше →
Total votes 24: ↑16 and ↓8 +8
Views 11K
Comments 12

Как сделать проект по распознаванию рукописных цифр с дообучением онлайн. Гайд для не совсем начинающих

Open Data Science corporate blog Python *Data Mining *Image processing *Machine learning *
Tutorial
Привет, Хабр! В последнее время машинное обучение и data science в целом приобретают все большую популярность. Постоянно появляются новые библиотеки и для тренировки моделей машинного обучения может потребоваться совсем немного кода. В такой ситуации можно забыть, что машинное обучение — не самоцель, а инструмент для решения какой-либо задачи. Мало сделать работающую модель, не менее важно качественно презентовать результаты анализа или сделать работающий продукт.

Я хотел бы рассказать о том, как создал проект по распознаванию рукописного ввода цифр с моделями, которые дообучаются на нарисованных пользователями цифрах. Используется две модели: простая нейронная сеть (FNN) на чистом numpy и сверточная сеть (CNN) на Tensorflow. Вы сможете узнать, как сделать практически с нуля следующее:

  • создать простой сайт с использованием Flask и Bootstrap;
  • разместить его на платформе Heroku;
  • реализовать сохранение и загрузку данных с помощью облака Amazon s3;
  • собрать собственный датасет;
  • натренировать модели машинного обучения (FNN и CNN);
  • сделать возможность дообучения этих моделей;
  • сделать сайт, который сможет распознавать нарисованные изображения;

Для полного понимания проекта желательно знать как работает deep learning для распознавания изображений, иметь базовые знания о Flask и немного разбираться в HTML, JS и CSS.
Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Views 31K
Comments 9

Определение этажности дома по его фотографии без машинного обучения

Python *Algorithms *Machine learning *
Sandbox


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

Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 8.4K
Comments 8

Transfer Learning: как быстро обучить нейросеть на своих данных

Binary District corporate blog Python *Machine learning *Artificial Intelligence
Машинное обучение становится доступнее, появляется больше возможностей применять эту технологию, используя «готовые компоненты». Например, Transfer Learning позволяет использовать накопленный при решении одной задачи опыт для решения другой, аналогичной проблемы. Нейросеть сначала обучается на большом объеме данных, затем — на целевом наборе.

Food recognition

В этой статье я расскажу, как использовать метод Transfer Learning на примере распознавания изображений с едой. Про другие инструменты машинного обучения я расскажу на воркшопе «Machine Learning и нейросети для разработчиков».
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 35K
Comments 8

Dog Breed Identifier: Full Cycle Development from Keras Program to Android App. on Play Market

Python *Java *Development for Android *Image processing *Artificial Intelligence
With the recent progress in Neural Networks in general and image Recognition particularly, it might seem that creating an NN-based application for image recognition is a simple routine operation. Well, to some extent it is true: if you can imagine an application of image recognition, then most likely someone have already did something similar. All you need to do is to Google it up and to repeat.

However, there are still countless little details that… they are not insolvable, no. They simply take too much of your time, especially if you are a beginner. What would be of help is a step-by-step project, done right in front of you, start to end. A project that does not contain «this part is obvious so let's skip it» statements. Well, almost :)

In this tutorial we are going to walk through a Dog Breed Identifier: we will create and teach a Neural Network, then we will port it to Java for Android and publish on Google Play.

For those of you who want to see a end result, here is the link to NeuroDog App on Google Play.

Web site with my robotics: robotics.snowcron.com.
Web site with: NeuroDog User Guide.

Here is a screenshot of the program:

image

Read more →
Total votes 11: ↑11 and ↓0 +11
Views 15K
Comments 6

Нейронные сети предпочитают текстуры и как с этим бороться

Open Data Science corporate blog Image processing *Machine learning *Artificial Intelligence Brain


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


В первой статье Approximating CNNs with bag-of-local features models works surprisingly well on ImageNet авторы берут модель, похожую на bag-of-words, и в качестве "слов" используют фрагменты из изображения. Эти фрагменты могут быть вплоть до 9х9 пикселей. И при этом, на такой модели, где полностью отсутствует какая-либо информация о пространственном расположении этих фрагментов, авторы получают точность от 70 до 86% (для примера, точность обычной ResNet-50 составляет ~93%).


Во второй статье ImageNet-trained CNNs are biased towards texture авторы приходят к выводу, что виной всему сам набор данных ImageNet и то, как изображения воспринимают люди и нейронные сети, и предлагают использовать новый датасет – Stylized-ImageNet.


Более подробно о том, что на картинках видят люди, а что нейронные сети

Читать дальше →
Total votes 100: ↑100 and ↓0 +100
Views 30K
Comments 68

Практика использования AI. Воркшоп «Анализ изображений дронов для выявления поврежденных домов»

IBM corporate blog
image
Всем привет!

Мероприятие пройдет в четверг, 26 февраля, в клиентском центре IBM (Москва-сити — Пресненская набережная, 10 строение А(2 этаж, комната Союз-Апполон)). Собираемся в 17:30, а начало в 18:00.

В Россию для проведения воркшопа приезжает Hans Boef, инженер и разработчик из IBM в Голландии. Он помогает разработчикам из стартапов и крупных организаций качественно создавать приложения для облачных сред с использованием элементов IoT и искусственного интеллекта. Для участия в практическом семинаре вам потребуется создать бесплатный аккаунт в IBM Cloud, и принести с собой компьютер.
Читать дальше →
Total votes 5: ↑3 and ↓2 +1
Views 863
Comments 0

Как мы считаем людей с помощью компьютерного зрения

Центр 2М corporate blog Image processing *Machine learning *
image
Фото из открытых источников

Массовые скопления людей создают проблемы в самых разных областях (ритейл, госслужбы, банки, застройщики). Заказчикам необходимо объединять и мониторить информацию о количестве людей во множестве мест: в офисах обслуживания, административных помещениях, на строительных площадках и т. д.

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

Нас зовут Татьяна Воронова и Эльвира Дяминова, мы занимаемся анализом данных в компании Center 2M. Хотя тема кажется наиболее простой из того, что сейчас рассматривается в задачах компьютерного зрения, даже в этой задаче, когда дело доходит до практики (внедрения), приходится решать много сложных и нетривиальных подзадач. Цель нашей статьи – показать сложности и основные подходы к задачам компьютерного зрения на примере решения одной из базовых задач. Для последующих материалов мы хотим привлечь коллег: девопса, инженера, руководителей проектов по видеоаналитике, чтобы они рассказали про задействованные вычислительные ресурсы, замеры скорости, нюансы общения с заказчиками и проектные истории внедрения. Мы же остановимся на некоторых использовавшихся методах анализа данных.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 6.6K
Comments 4

Как мы распознаем средства индивидуальной защиты

Центр 2М corporate blog Image processing *Machine learning *
Наверное, вам всю жизнь было очень интересно, как натренировать нейронную сеть распознавать людей в касках и оранжевых жилетах! Нет? Но мы все равно расскажем.

Нас зовут Татьяна Воронова и Эльвира Дяминова. Мы занимаемся анализом данных в компании «Центр 2М», много работаем с самыми настоящими заводами и предприятиями. Из-за нарушений техники безопасности они терпят многомиллионные убытки, работники получают травмы, поэтому хорошо бы уметь детектировать такие нарушения системно и как можно раньше. Лучше всего – автоматически. Так у нас появляются задачи, связанные с распознаванием на видео средств индивидуальной защиты (СИЗ) и определением людей или техники в опасной зоне.

image

По большей части к нам приходят заказы на определение касок (точнее, их отсутствие) и спецодежды. Мы уже накопили опыт в выполнении подобных задач и теперь можем описать проблемы, с которыми столкнулись, и способы их решения.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 4.6K
Comments 3

Создание приложений с помощью Mediapipe

Development for Android *Machine learning *TensorFlow *
Sandbox

Сегодня множество сервисов используют в своей работе нейросетевые модели. При этом из-за невысокой производительности клиентских устройств вычисления в большинстве случаев производятся на сервере. Однако производительность смартфонов с каждым годом растет и сейчас становится возможным запуск небольших моделей на клиентских устройствах. Возникает вопрос: как это сделать? Помимо запуска модели требуется выполнять предобработку и постобработку данных. К тому же, есть как минимум две платформы, где это нужно реализовать: android и iOS. Mediapipe — фреймворк для запуска пайплайнов (предобработка данных, запуск (inference) модели, а также постобработка результатов модели) машинного обучения, позволяющий решить описанные выше проблемы и упростить написание кроссплатформенного кода для запуска моделей.


Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 12K
Comments 4

Код аудита: поиск дублей, face detection и аномальные изображения

Росбанк corporate blog Python *Algorithms *Image processing *Machine learning *
Хабр, привет! Сегодня я расскажу, как мы делали аудит изображений, используя компьютерное зрение, сверточную нейронную сеть FaceNet, а также про кластеризацию гистограмм с целью поиска аномальных изображений.

image
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 4.2K
Comments 7

Coins Classification using Neural Networks

Python *Big Data *Data Engineering *
Tutorial

See more at robotics.snowcron.comThis is the first article in a serie dedicated to coins classification.Having countless "dogs vs cats" or "find a pedestrian on the street" classifiers all over the Internet, coins classification doesn't look like a difficult task. At first. Unfortunately, it is degree of magnitude harder - a formidable challenge indeed. You can easily tell heads of tails? Great. Can you figure out if the number is 1 mm shifted to the left? See, from classifier's view it is still the same head... while it can make a difference between a common coin priced according to the number on it and a rare one, 1000 times more expensive.Of course, we can do what we usually do in image classification: provide 10,000 sample images... No, wait, we can not. Some types of coins are rare indeed - you need to sort through a BASKET (10 liters) of coins to find one. Easy arithmetics suggests that to get 10000 images of DIFFERENT coins you will need 10,000 baskets of coins to start with. Well, and unlimited time.So it is not that easy.Anyway, we are going to begin with getting large number of images and work from there. We will use Russian coins as an example, as Russia had money reform in 1994 and so the number of coins one can expect to find in the pocket is limited. Unlike USA with its 200 years of monetary history. And yes, we are ONLY going to focus on current coins: the ultimate goal of our work is to write a program for smartphone to classify coins you have received in a grocery store as a change.Which makes things even worse, as we can not count on good lighting and quality cameras anymore. But we'll still try.In addition to "only Russian coins, beginning from 1994", we are going to add an extra limitation: no special occasion coins. Those coins look distinctive, so anyone can figure that this coin is special. We focus on REGULAR coins. Which limits their number severely.Don't take me wrong: if we need to apply the same approach to a full list of coins... it will work. But I got 15 GB of images for that limited set, can you imagine how large the complete set will be?!To get images, I am going to scan one of the largest Russian coins site "meshok.ru".This site allows buyers and sellers to find each other; sellers can upload images... just what we need. Unfortunately, a business-oriented seller can easily upload his 1 rouble image to 1, 2, 5, 10 roubles topics, just to increase the exposure.

So we can not count on the topic name, we have to determine what coin is on the photo ourselves.To scan the site, a simple scanner was written, based on the Python's Beautiful Soup library. In just few hours I got over 50,000 photos. Not a lot by Machine Learning standards, but definitely a start.After we got the images, we have to - unfortunately - revisit them by hand, looking for images we do not want in our training set, or for images that should be edited somehow. For example, someone could have uploaded a photo of his cat. We don't need a cat in our dataset.First, we delete all images, that can not be split to head/hail.

Читать далее
Rating 0
Views 1.9K
Comments 0

Нечего надеть? Computer Vision в помощь

Lamoda corporate blog Image processing *Machine learning *
✏️ Technotext 2021

Привет, Хабр! Меня зовут Роман Тезиков, я Data Scientist, специализируюсь на Computer Vision в Lamoda.


В R&D Lamoda мы постоянно имеем дело с различного рода рекомендациями. Когда покупатели не знают, какая вещь им нужна, они формируют ее абстрактный образ и пытаются найти что-то похожее с помощью привычных инструментов поиска. На сегодняшний день нейронные сети отлично справляются с задачей распознавания образов. Мы поставили перед собой цель — переосмыслить процесс выбора одежды с учетом Computer Vision. И сегодня я расскажу:


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

В процессе мы научились решать задачу из знаменитого фильма «Бриллиантовая рука», где главный герой просит найти такое же платье, но с перламутровыми пуговицами.


Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 4.8K
Comments 6

Чем рука робота лучше вашей, или Автоматизация контроля качества на производстве

ГК ЛАНИТ corporate blog System Analysis and Design *Machine learning *

Закройте глаза и представьте себя в цехах большого завода. Пусть это будет производство вакцин в ампулах.  А вы, как и еще 70 человек, заняты тем, что целыми днями просматриваете ампулы, чтобы отобрать дефектные. И так весь день… Сколько ампул с малейшими отклонениями от нормы вы бы не заметили? Задачу усложняет то, что дефектом считается не только неправильная запайка, но и едва заметная точка на дне ампулы. Можете ли вы быть на 100% уверены, что не пропустили ни одного дефекта? А ведь вас еще будут выборочно перепроверять.

Устают глаза, притупляется внимание.  

А что если сортировать ампулы будет рука робота? Эксперты компании НОРБИТ (входит в группу ЛАНИТ) на примере кейса “Разработка системы Computer Vision моделей для фармацевтического завода” расскажут, как им удалось автоматизировать типовой рутинный процесс, и к чему это привело. 

Читать далее
Total votes 43: ↑43 and ↓0 +43
Views 4.3K
Comments 10

Распознавание печатей: нейронные сети против SIFT, и причем тут Госзакупки

Ростелеком-Солар corporate blog Information Security *Algorithms *Image processing *Machine learning *
Tutorial

Привет, Хабр! Сегодня мы расскажем, как делали в нашей группе анализа данных прототип для уже успешно работающего внутри DLP-системы Solar Dozor движка детектирования графических объектов на изображениях. Покажем это на примере одного его представителя - оттисков печатей на изображениях документов. Вспомним о противоречивых требованиях к решению задачи и очертим бизнес-метрики, определяющие успешное решение. В процессе подберем фильтр наличия печатей из арсенала компьютерного зрения и сравним подходы к детектированию объектов - популярных движках CNN, SIFT и их вариациях. А также поведаем об интересных находках в части создания датасетов. Здесь, как оказалось, немало места для творчества и экспериментов. В общем, запасайтесь попкорном.

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 3.6K
Comments 2
1