В рамках пятницы — перепечатка поста из моей жижи по просьбе одного из участников сообщества. Пост авторский, главного героя знаю лично. Помимо моей жижи, эта история была опубликована на ItHappens, так что любители кричать «боян» могут быть спокойны: это не боян, а классика.
Компьютеры — это тупые машины, которые могут делать очень умные вещи. Программисты — это умные люди, которые могут делать очень тупые вещи. Да они просто созданы друг для друга! |
Билл Брайсон, писатель. |
Продолжаю серию рассказов о гениальных учёных. На сей раз речь пойдёт об одном конкретном учёном. Точнее, о моём коллеге. А ещё точнее, о его собственном путешествии в страну автоматического распознавания образов.
![]() |
Постер времён Второй мировой войны о распознавании образов. Подпись: «Поторопись, Берт. Этот — наш или их?» Надпись мелкими буквами внизу: «Обстреливайте каждый самолёт, приближающийся в атакующем стиле, если он не распознан на 100% как свой. Изучайте силуэты всех типов самолётов, которые могут летать в районе вашей дислокации». |
Итак, гениальному учёному захотелось, чтобы холодильник сам мог сказать, сколько в нём чего осталось. И, может быть, даже прислал СМСку: «Мужик, у тебя тут молоко заканчивается, и огурцы уже привет передают». Как этого добиться?
Очевидный выход — сканнер баркодов с базой данных по всем покупаемым товарам. Но как сканнер баркодов узнает, сколько молока осталось в двухлитровой коробке? И где на огурце баркод? От идеи оснастить холодильник весами и заставить всех домашних каждый раз ставить вещи на весы учёному хватило ума отказаться.
Следующей идеей стала цифровая камера — они тогда (в начале 2000-х) только-только начали набирать популярность. А точнее, несколько камер, расположенных так, чтобы увидеть всё, что есть в холодильнике. С анализом изображения, классификацией согласно опять же базе данных, и мониторингом количества после каждого открывания дверей. Учёный вздохнул тяжко, поднял свои конспекты по machine learning, натравил wget на парочку сайтов продуктовых магазинов, чтобы набить базу данных картинками обёрток и тактико-техническими характеристиками продуктов, и сел писать алгоритм.
Получалось плохо. Для начала, оказалось, что для создания устойчивой трёхмерной диспозиции объектов каждая полка должна была быть оснащена минимум тремя камерами, а лучше — четырьмя. (Ещё лучше — пятнадцатью, но тут уже включались экономические факторы: камеры тогда были всё ещё недешёвыми). Во-вторых, надо было построить объёмную модель каждой упаковки по тем её кускам, которые не загорожены другими упаковками; определить её раскраску и сверить с базой данных всех возможных упаковок, под разными углами и с разных расстояний. Это примерно то же самое, что по мочке уха и левой пятке с расстояния в несколько метров определить личность человека и узнать, за какую команду он болеет в каждом виде спорта. Требования к счётным мощностям тут совершенно дикие, на такую задачу впору натравливать NASA или министерство обороны, а не домашний сервер на основе Pentium IV, который мой коллега хотел нагрузить этой задачей вдобавок к остальным. В-третьих, надо было что-то придумать с распознаванием образов внутри полиэтиленовых пакетов: большое и зелёное — это огурец или авокадо, незрелый мандарин или уже перезрелый? В-четвёртых, а как поступить, если упаковка смята, или если этикетка наклеена очень криво? В-пятых, что делать с отделением для колбас: оно слишком тонкое, чтобы туда поместилось несколько камер, и вещи там лежат друг на друге очень плотненько, и все в одинаковых пакетиках, а колба́сы-то разные? В-шестых, как по внешнему виду упаковки понять, сколько ещё продукта осталось внутри? С молоком всё просто, упаковка полупрозрачная. Но кефир и сок поставляются в картонных тетрапакетах, которые отличаются некоторой непрозрачностью, а шоколадная паста имеет тенденцию залеплять упаковку изнутри вне зависимости от её реального количества.
Coup de grâce идее с автоматическим распознаванием образов нанесла жена, на глазах у моего коллеги доставшая сыр из коробки из-под котлет, потому что она, видите ли, удобнее.
Но гениальные учёные не сдаются! Если нельзя автоматически подсчитать, что в холодильнике заканчивается, то, может, удастся хотя бы облегчить эту задачу обычному пользователю? Итак, берём цифровые камеры, вешаем их на дверь холодильника изнутри. Берём LCD-экраны бросового качества (пять-семь битых пикселей в этом случае роли не играют), вешаем их на эту же дверь снаружи. Берём тот самый Pentium, пишем ему софт, который просто тупо пересылает картинки с камер внутри на экраны снаружи. Profit!
Система была создана, написана, опробована в лабораторных условиях (на столе) и отлажена. Учёный продырявил дверь холодильника, прикрутил к ней экраны, провёл провода, приклеил внутри холодильника камеры, подключил всё и позвал жену хвастаться новинкой.
Всё работало идеально. Экраны показывали внутренности холодильника. Жена была в восторге.
Учёный гордо закрыл дверь. В холодильнике погас свет.
От дальнейших экспериментов по порче домашней бытовой техники учёного отговорила жена, подкрепив свои аргументы тяжёлой кухонной утварью.
Таких рассказов у меня ещё штук семь. Если особых возражений не будет, буду постить по пятницам.