Как стать автором
Обновить

Прототип проекта стоимостью $86 миллионов в 57 строках кода

Время на прочтение5 мин
Количество просмотров51K
Всего голосов 79: ↑77 и ↓2+75
Комментарии59

Комментарии 59

1) зачем делать дешевле, если можно сделать дороже?
2)
Представьте себе пассивную систему, сканирующую автомобили на дороге и автоматически предупреждающую власти и владельцев о текущем местоположении и направлении движения похищенных машин.

во многих странах, как уже сказано, реализовано. Например в России есть система «поток»
только первым делом угнанные машины меняют номера, а вторым делом их никто не будет перегонять под взглядом потока, а обычно их везут в ближайший отстойник. Где либо разбирают на части, либо меняют внешний вид, либо прячут в фуру\etc и везут куда положено.
тут надо с другой стороны решать вопрос, да хотябы датчиками слежения внутри машины эраглонасс
3)
Автомобили Tesla уже напичканы камерами и датчиками, умеющими принимать OTA-обновления. А что, если превратить их в виртуальный флот добрых самаритян?

вот бы купить машину за 100 килопрезидентов и тратить и так скудный ресурс аккумулятора на что-то кроме собственных нужд.
4) обманывать такие системы по прежнему слишком просто, статьи уже были
да хотябы датчиками слежения внутри машины

К сожалению воры пользуются глушилками GPS и GSM.
машина пропала из поля зрения => разбилась или угнали
Или в туннель заехала, или к Кремлю подъехала.
Или на стоянку под торговым центром
а вторым делом их никто не будет перегонять под взглядом потока, а обычно их везут в ближайший отстойник. Где либо разбирают на части, либо меняют внешний вид, либо прячут в фуру\etc и везут куда положено.

И как это делается, даже было показано в первой вроде бы части «Такси», где Мерседесы перекрашивали :)

Хочется обратить внимание на следующее:
на первой фотографии достоверность 85.69%, и мы имеем галочку что всё хорошо, на второй — 87%, но всё плохо.
К сожалению с такой системой встаёт вопрос а какая же там точность в среднем.
В статье говорится что устанавливаемая система не только номера распознаёт, но и кузов, тут задача становится гораздо более сложной т.к. кузовов множество, особенно учитывая кастомные обвесы, загрязнения, повреждения и т.д.
Третье — поставляемая система явно стационарная, аналог же работает из машины при меньшей относительной скорости и лучшем позиционировании относительно номера.
Если всё это сложить вместе — система не получается такой дешёвой как бы хотелось, учитывая что она сделана по заказу государства там ещё и огромная накрутка из за сопутствующей бюрократии и покрытия потенциальных рисков.

Аннотации были добавлены вручную. В том числе галочку correct. Я думаю в данном случае автор лишь показал на картинке, что номер распознан неверно

А воры же просто будут менять номерной знак на время перегона и все миллионы коту под хвост )
Но ведь левый номерной знак должен быть от такой же марки автомобиля? Иначе система заметит несоответствие.
вот с распознаванием марки машины, я думаю сейчас не все так хорошо.
тут другой механизм — по номеру у базы спрашивается какая машина за номером закреплена
Это то ясно, но сравнивать то с чем эту информацию?
Сравнивать с авто которое фиксируется

1. Читаем номер
2. База дает авто и цвет с этим номером
3. Сравниваем соответствует ли авто перед нами с данными в базе
Согласен, что сравнивать с уже известной маркой немного другой механизм, но всё равно надо как-то распознать «авто перед нами», чтобы сравнивать.
Если по цвету ещё понятно, то марку надо как-то хранить, не в виде строки с названием.
Понятно, что всё решаемо, но не так просто, как в случае с номером.
Я думаю, что это уже можно оставить на людей, полиция/ответственные граждане, или кто там еще будет этим заниматься
Для каждой машины что ли? Смысл тогда в автоматической системе?
Смысл в том, что полицаю не надо при каждой мимо проезжающей машине лезть в базу и вбивать ручками её номер — мимо проехала краденая… Хоп! И доблестный страж порядка уже едет за ней выяснять «чё-каво».
в статье было сказано что и незарегистрированные номерные знаки. Это был бы как раз такой случай, т.е фальшивый номер.
Никто не мешает использовать дубликат зарегистрированного. Тут либо сверять по нескольким параметрам: номер, марка, цвет(!), etc. Либо действительно вводить систему глобального отслеживания для исключения ситуации, когда «правильный» автомобиль стоит в гараже, а его номер замечен на дороге.
В систему можно включить анализ физичности перемещений. Если отбросить (пока что на уровне идеи) возросшую вычислительную нагрузку, то поводом возбудиться для более тщательной проверки будет одновременное нахождение одинаковых номеров в разном месте, а тем более на машинах с разными кузовами.
>ведомство потратило кучу мультов на внедрение системы проверки статуса авто «на ходу»
>парень из кодеров приложения для знакомств сделал то-же самое ради развлечения с копеечной себестоимостью

В принципе вся суть бюрократической машины, независимо от места действия

Мы не можем знать в данный момент в чем разница реализации. Возможно в их систему добавленно что-то более комплексное чем то, что сделал автор

google вкладывает в свою почтовую систему 100500 зиллиардов денег. А я могу сделать почтовый сервер на postfix + dovecot почти забесплатно. Вот такой я молодец!

НЛО прилетело и опубликовало эту надпись здесь
Спасибо за статью, очень познавательно. Библиотеку взял на заметку.
А по поводу 87 миллионов за 57 строк кода, хотелось бы поффтопить :)
Итак, у нас нет условий задачи за которую была выложена эта сумма? Тогда я посмею предположить, что возможно, там есть условие, что это должна быть на 100% проприетарная система. И от медиков, военных и полиции, такого пункта можно ожидать, потому что у каждого из них есть причины не хотеть иметь, хотя бы часть кода или чего либо, в открытом виде. Далее, наверняка кроме распознания есть еще куча вещей, сервисов, есть тут и железо, которое тоже с 99% вероятно должно быть проприетарное, поддержка 24/7, решение критических проблем в течении часа, сертифицирование, что песня сама по себе и прочее прочее прочее. И вообще, на сколько я знаю этих товарищей, заплатив вам 87 миллионов, трясти они будут на все 100. То есть, эта сумма вряд ли нарисовалась просто так, хотя выглядит она конечно преувеличенной.
А в чем проблема переделать OpenSource проект в закрытый для военных/полицейских?
Напоминаю, что, например GPL обязывает предоставить исходники пользователям, а не выложить их в интернет для всех.
Если у вас пользователи — полицейские и только полицейские, то вы можете не нарушая GPL делать приложение, которое не надо будет открывать наружу.
Не проблема. В данном случае прототип состоит на 99.9% из чужого кода, включая критически важный код. Одна из проблем, в лицензии этого кода, кроме всего прочего есть пункт 15 «Disclaimer of Warranty» в котором говорится, что вы используете код на свой страх и риск и никаких гарантий. Так вот адвокат того, кто заплатит 87 миллионов, этот пункт вычеркнет в первую очередь, а вам придется вычеркнуть из проекта весь код с такой лицензией.
Ничего не мешает приложение в целом лицензировать по другой лицензии, а все нужные библиотеки подключать вообще по LGPL.
Вы придумываетет странные абстрактные кейсы. OpenSource существует давно и успешно много где применяется. И все пробелмы уже сотни раз решены.
Все зависит от заказчика, его может вообще не волновать OpenSource и другие ваши проблемы. 87М это большие деньги, даже для корпораций из топ 10. Если бы им была нужна просто система распознавания знаков, то тут и 8.7к можно уложиться. Но вряд ли они такие дурачки, у дурачков такие деньги просто не водятся, вероятно такие деньги они готовы заплатить за полный цикл разработки под свои требования. Требования очень жесткие и работы много, утрирую, но вам никто не заплатит 87М за 57 строк кода.
С этим я полностью согласен.
:)
Что мешает исполнителю дать свои собственные гарантии?
И в итоге придем к добавлению нано-rfid меток в краску, стекло и тд.
А у вас есть уверенность, что в современных реалиях это не будет использовано для того чтобы следить за вами (вашими передвижениями)?
Как и положено, исключительно для защиты и во благо (с)
Тут два фактора:
1) Это неизбежно. Государство уже имеет достаточно средства чтобы вести тотальную слежку на дорогах.
2) Спорный вопрос — является ли ДОП место где действует право на личную жизнь(в плане контроля перемещения)
Это и сейчас происходит. На дорогах камеры, телефоны с GPS, машины с эрой-глонасс и т. п. В принципе, перемещения человека, работающего 5 дней в неделю, предсказать не так сложно — а таких большинство.
НЛО прилетело и опубликовало эту надпись здесь
Государство нужно контролировать, без этого никак. Или хотя бы пытаться.
Вот за что я не люблю некоторые информационные ресурсы. Главное привлечь внимание общественности. А указать на что опираются заявления? Да ну зачем. И так ведь все ясно.
But it was after a bit of googling that I discovered Victoria Police had recently undergone a trial of a similar device, and the estimated cost of roll out was somewhere in the vicinity of $86,000,000.
«A bit of googling», Карл.

Скоро в источниках научных статей начнут писать гугл дот ком.
Как человек получивший высшее образование, я начинаю кипеть если заявления не подкреплены конкретным источником. Таблицы, выкладки, рассчеты, где это все. Да даже в школе ответ не засчитывали если не был указан путь решения.

Давайте я скажу, что могу сделать воздушное ружье из велосипедного насоса, которым можно убить (я в гугле проверил), а армия тратит миллиарды на военное оснащение. Ну звучит-то все это именно так. Лучше бы оригинал в статье просто скромно написал: «Вот, заинтересовало новостное сообщение <источник>. Запилил на js свой велосипед по распознаванию номерных знаков в картинке.»
Согласен по данному поводу. К сожалению, достаточно часто принято упрощать видение многих достаточно комплексных вопросов до уровня обывателя. В оригинале заголовок статьи был явно «кричащим»: что за ним терялась хорошая идея: возможность оптимизации тех или иных технологий техническим специалистом. Подобные оптимизации могут быть взяты в работу или обсуждены на публичных площадках — это полезно для всех участников процесса.
Ужасно то что подобные вещи делают мир авто менее интересным. А те кто придумал камеры штрафов, платон и т.д вообще ненависть взывают, даже если ничего не нарушает человек — всё равно не приятно. И не интересно, когда так просто вычислить угон. Да и угонщиков тоже нагрузит лишней работой. Да и как в старых добрых фильмах уже не будет так романтизировано, когда кругом «глаза».
Мнение переводчика: техническая часть статьи мне показалась увлекательной и вдохновляющей для тех людей, кто делает инди-разработку или изучает возможность сделать iot/web-проект своими руками.

Вместе с тем, я постарался снизить эмоциональный тон автора, поправив заголовок. Все-таки это именно прототип системы. Здорово, что автор смог его быстро собрать и начать использовать — это вызывает только позитивные эмоции.

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

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

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

В-третьих, важный компонент любой компании — это ее люди, для них должны быть выделены рабочие места. Любая компания платит зарплату своим сотрудникам. А это обязывает ее получать регулярный доход. А если представить, что компания выпускает только одно решение и продает только его, то стоимость системы уже не будет казаться астрономической. Особенно, если она сразу включает стоимость обслуживания на определенный период времени всей системы. Но это тоже звучит достаточно абстрактно без документации системы.

Это неполный список того, почему сравнение прототипов и готовых проектов — не очень полезная практика. Вместе с тем подобная статья может вдохновить читателей именно на diy-проекты и самостоятельное изучение технических проектов и их реализации.

А что касается идей по несостоятельности самой системы видеонаблюдения — это достаточно открытый вопрос. Думаю что многие технические специалисты в области видео-распознавания и создания подобных систем скажут, как обойти те или иные ограничения и проблемы. Конечно, прогресс будет идти «с обеих» сторон, то есть способы угона могут также усложнятся. Но так как знания — это не просто набор статических неизменных представлений, думаю, что технический прогресс поможет решать проблемы, связанные с угоном и другими проблемами — было бы желание.

Надеюсь, что в целом статья вдохновит читателей на дальнейшее изучение современных технологий и создание своих веб-проектов.
Также в продолжении — существует открытая библиотека для распознавания номеров — openalprgithub.com/openalpr/openalpr — написана на c++, работает с C#, Java, Node.js, Go, и Python — ее можно применять как для автоматизации ворот и шлагбаумов, так и для других целей, связанных с распознаванием номеров автомобилей. Подчерпнул из комментариев к оригинальной статье.

В российских реалиях можно попробовать реализовывать проекты из этого списка. Порой там можно встретить странные запросы и непонятные технические задания на не хилые такие суммы… И сроки исполнения чуть ли не вчерашней датой :)

У меня сходу возникли сомнения.
Автор распознает номер машины на статическом кадре видео.
Это работает. Окей.
А как на счёт потокового видео?
То есть, условно каждую секунду брать кадр из видеопотока и анализировать его.
Каждую секунду отправлять запрос на сервер.
А машин на кадре может быть несколько.
Если брать кадры реже, то мы рискуем пропустить какого-то гонщика.
Ну и скорость распознавания кадра и получение ответа от сервера должно занимать меньше секунды иначе будет накапливаться очередь и программа просто не сможет работать.


Это работает для камер которые фиксируют скоростные нарушения потому что они делают снимок по датчику движения, а во времени распознавания номера они вообще не ограничены.


В общем, все самое сложное автор не сделал.

«Каждую секунду отправлять запрос на сервер.»
Не нужно. Кэш уже проверенных номеров.
Встречку не анализируем. Получается достаточно ограниченное количество машин.

Ну конечно можно локально кешировать.
Можно даже агрегировать номера и отправлять их одним пулом на сервер, скажем раз в минуту.
Тогда в одном пуле будет от 0 и до 60 номеров.
Но у на соответственно появляется необходимость в ресурсах для кеша.
Это накладывает свои требования на оборудование.
Это может быть оперативная память, но мы например должны шифровать номера так как это конфиденциальные данные.
И это не избавляет нас от проблемы, что одна итерация работы программы должна занимать менее 1 секунды.


Так же не стоит забывать что устанавливаем мы камеры на машины и соответственно доступ к серверу у нас будет по беспроводной сети. А пакеты ещё и шифровать надо, так как пересылаем мы персональные данные. И связь соответственно должна быть стабильной.
Это накладывает ещё кучу ограничения и требований на ПО и оборудование.


А на счёт встречки.
Как вы собираетесь определять, что на конкретном кадре, два номера — один на встречке, а второй нет?
Если номер в каком-то углу то это значит, что это может быть припаркованные машина, а может быть вы едете по многополосной трассе.
Можно конечно попытаться привязаться к GPS, но это не надёжно и требует кучу ресурсов.
Можно сравнивать кадры. Например, если номер есть только на одном из двух соседних кадров то это значит что это либо встречке, либо гонщик, либо некорректно распознан номер.
А если мы в пробке то встречку мы будем видеть дольше.


В общем, отбрасывает встречку себе дороже, да и зачем.

Встречка отброится сама собой. При нормальной скорости движения — у встречки не номер, А размазня. При маленькой скорости движения — не так уж много номеров будет.

Номер конфединциальная штука? ЗАнятно. Не знал. А можно поподробнее?

Шифрование сетевого трафика уже давно существует и не представляет какой либо проблемы.
Номер конфединциальная штука

Конечно конфиденциальная. Это же персональные данные. По номеру же можно идентифицировать владельца машины.
Это как если бы номер вашего паспорта передавался в открытом виде.


Шифрование сетевого трафика уже давно существует

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


Ну и не забываем что на шифровку и дешифровку пакетов нужно время и процессорные ресурсы.
Мы уже привыкли к мощным серверам с 32мя ядрами и терабайтами оперативы и забываем как это разработка на компьютере размером меньше пачки сигарет и питающейся от 12V.


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

Тогда нам и видеопоток в оперативке надо шифровать? Ведь там же конфеденциальные данные!

На шифровку и дешифровку никакого времени и ресурсов не нужно. В сравнении с поиском номера, нагрузка связанная с шифрованием — это просто шум. Хотя даже на уровне шума не будет видно. xor практически бесплатный.

Конечно все не так просто в этих 86 миллионах. Но ваши доводы — оторваны от реальности и не имеют никакого отношения даже теоретически к этим 86 миллионам.
Но ваши доводы — оторваны от реальности и не имеют никакого отношения даже теоретически к этим 86 миллионам.

Не согласен с вами. Я как раз пытался продемонстрировать доводы максимально приближенные к реальности.
Если вас они не устраивают, ок. Тогда я не вижу смысла продолжать дискуссию.


Или может вы предложите свои доводы, которые вы считаете более приближенными к реальности? Тогда нам будет о чем поговорить

На первый взгляд задача может быть сильно оптимизирована. Самая требовательная к вычислениям часть — выделение автомобиля. Оптимизация — захват и трекинг объекта распознанного как автомобиль. Как только площадь предполагаемого номерного знака для такого объекта становится теоретически достаточной для распознавания начинают делаться попытки постановки в очередь заданий с самыми контрастными кадрами. Реалтайм не нужен, пул заданий может быть достаточно большим. Удачно распознанный и несколько раз подвтержденный номер уже не анализируется, пока объект не сорвался с сопровождения. Для попутного городского потока в центре поля зрения регистратора новых и конфликтующих объектов будет не так много. Да и если справляться не будет успевать, то не велика беда. Это же не устройство гарантированного поиска. Это всего лишь помощь в выборочной проверке.
Регистрационный номер (rego) и VIN не являются конфиденциальными данными в Австралии. По ним невозможно идентифицировать владельца авто, а иначе не существовали бы такие онлайн сервисы для выявления сомнительных историй авто при покупке, как revs check или rego check. И они не дают никаких подробностей, позволяющих разгласить PII. Тут за этим следят очень строго.
К тому же, номера и так открыты всем всегда, зачем такие сложности?
Так мне нравятся статьи с подобными пафосными заголовками. Собрал он распознавалку номеров за 57 строк, ага. Вот только в openalpr тысячи строк и основная заслуга за качество распознавания лежит на этих ребятах, а не на человеке который написал обертку к этому коду в пару строк.
В openalpr на сколько помню есть из коробки обученная сетка для распознавания австралийских номеров (либо номера / шрифт у них совпадают с США который используется по умолчанию). Так что не удивительно что распознает оно достаточно хорошо.
А вот настраивать openalpr под русские номера — это дикая боль =(
В Австралии дикое количество разнообразно выглядящих номеров. В каждом штате — множество стандартов на цвет фона и шрифта, фоновые картинки и прочие атрибуты. Также в Виктории есть стандарты для болельщиков за свои команды и даже формулы 1.
Подозреваю, что данная разработка работает только на одном, самом популярном станларте.
Тут больше зависит от того имеют ли разные плашки разный размер или соотношение сторон и насколько сильно отличаются шрифты. Может быть еще слишком темный фон может мешать, не тестировал такие варианты. Все остальные украшательства не сильно влияют на распознавание. Самой значительной помехой становится кусок номера аналогичный российскому региону. Вот тут openalpr начинает косячить по-страшному и частенько обрезает регион. К тому же символы региона на российских номерах меньше чем на основном номере что превращает распознавание в откровенную угадайку =(
В остальном openalpr уверенно распознает многие варианты без допиливания напильником.
Я их демо на сайте погонял по фоткам из сети — распознавание номеров есть, если номер не под углом, но явно белая машина признана синей (blue).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий