Computer vision, Machine Learning

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

Время прочтения: 3 мин.

Для каждого из нас распознавать какие-либо объекты – естественная и привычная возможность организма. При этом для компьютера, пока что, – это не так-то и просто. Последние несколько лет человечество регулярно предпринимает попытки научить компьютер распознавать хотя бы часть того, что может видеть человек.

Чаще всего мы встречаемся с компьютерным зрением на кассах в магазине. Я сейчас о процессе считывания штрих кодов. Эти непонятные для обычного человека «полоски» были разработаны специально, чтобы упростить компьютеру процесс распознавания. Но для компьютерного зрения есть и более сложные задачи: поиск дефектов на производстве, исследование медицинских снимков, распознавание номеров автомобилей, распознавание лиц и т.д.

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

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

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

Идея появилась практически сразу же – парсить картинки из результатов поиска в сервисе Яндекс.Картинки. Готовое средство автоматизации также нашлось достаточно быстро: бесплатное ПО PictureYandexGraber.

Спустя некоторое количество времени был сформирован отличный датасет, а результат разделения труда дал нам возможность исследовать новый для нас инструмент диджитализации. Датасет сформированный автоматизированным методом отличается:

  • разнообразием изображений;
  • скоростью формирования (в 50 раз быстрее механического способа).

Но, к сожалению, нельзя не отметить и минусы данной программы. А точнее один МИНУС: Capcha от Яндекс. В нашем случае решение данной проблемы было достаточно примитивным – смена IP адреса физически (меняли источник интернета). По причине относительно небольшого объема выгружаемых изображений capcha сильно нам не надоедала. Но в целом функционалом программы предусмотрена возможность использовать proxy, поэтому если есть необходимость парсить большое количество изображений с Яндекс.Картинки проблему можно решить используя данный инструмент.

Кроме того, функционалом программы PictureYandexGraber предусмотрено:

  • поиск изображений по заданным параметрам: размер, ориентация, тип;
  • сохранение url’ов изображений в отдельный файл;
  • сохранение изображений в 10 потоков;
  • выбор размера сохраняемого изображения:
    • оригинальный;
    • по вашему размеру (width и height);
    • по одному из параметров (указывается width/height, а второй параметр высчитывается пропорционально оригинальному размеру).

В целом, программа нам понравилась, и мы её взяли на вооружение. Да, кстати, для корректной работы программы Вам необходимо установить net framework не ниже 4.0(если вдруг его нет на вашем компьютере).

Советуем почитать