В продолжение темы об интересной и неинтересной работе.

Я люблю выдавать результат. Длинные задачи, бесконечные проекты и доработки меня напрягают. Мне нравится сделать что-то, довести его до минимально рабочего состояния, запустить и пойти дальше. Если быстро не получается выдать что-то или выполнить минимальные требования к качеству, то интерес к задаче быстро пропадает и заниматься ею нет никакого желания.

Что это могут быть за задачи такие нехорошие? Для меня самое первое – обработка данных. Я сделал несколько проектов, связанных с распознаванием изображений (уже об этом писал, но расскажу подробнее). Мне нужно было смотреть на товары в интернет-магазине, сравнивать фотографии с эталонными и проставлять скоринг – вот этот магазин хороший, а вот этот – негодный, поставил плохие фотки. Проблема в том, что определить, есть ли на изображении конкретно эта упаковка, еще можно с приемлемой точностью, а вот повернута ли она под углом или нет – уже сложнее. И хорошо, если на упаковке есть выделяющиеся элементы, а так-то группы похожих товаров легко могли путаться между собой. Для того, чтобы обеспечить хорошее качество, пришлось бы помимо базового алгоритма делать кучу микрокостылей и хаков, и всё равно оно не работало как надо.

Как я выкрутился? Плюнул, и за час разработал инструмент для ручного матчинга. Товаров и фоток было не так много – около десятка тысяч, и вручную силами сотрудников заказчика их быстро перебрали. Заказчику объяснил что так и так, у вас тут картинки одинаковые, я не могу сделать так, чтобы точность была хорошей.

А вот на тюнинг алгоритма я потратил кучу времени и всё равно получил плохой результат. Мне такое не нравится, я ходил злой и думал зачем мне упёрлись эти чертовы картинки и что я тут делаю.

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

Самое плохое если перекрывается недостаток экспертизы и вот такая похожая задача с плохими входящими. В моем случае мало того что я не спец по OpenCV и прочему “AI”, так еще и датасет был просто ужасен. Подгорело у меня неслабо.

Похожие штуки так же были у меня с классификацией текстовых данных. Например нужно было автоматически находить товар по эталонному наименованию (которое магазины естественно коверкали и сокращали как хотели), я напилил турбоалгоритм который считал дистанцию, нормализовывал размерности (чтобы “сыр 400г” и “сыр 0.4 kg” был одним и тем же), в итоге с кучей хаков для пограничных случаев оно всё равно работало плохо. Как вы можете догадаться, в конце-концов сделали ручной матчинг :)

Короче ну его в баню, лучше понятные круды делать, а левенштейна пущай датасаентисты считают.

И кстати я такой подход (использование ручного труда вместо плохо работающего “AI”), я не только у себя видел, а и в тех конторах, где работал.