12 мая 2014 в 21:44

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

Примерно неделю назад Vasyutka опубликовал пост про распознавание номеров и обещал, что мы выложим софт, который можно будет опробовать. Мы немножко схитрили, не рассказав все подробнее. Ну, а то бы никакой интриги не было! Ядро алгоритма распознавания мы сделали с полгода назад, но тот проект, для которого оно было сделано, не двинулся. Он остановился где-то на альфа-версии. Подумав, и посовещавшись с заказчиком, мы решили, что это нехорошо, когда такой алгоритм пылится на полке и не приносит пользу обществу. С другой стороны выкладывать все исходники распознающей части не хотелось. Тогда и родилась идея, о которой пойдёт речь в этой статье.
image
Решили мы, собственно, сделать открытый сервер, который бы распознавал номера, приходящие http-запросами. Так как вся идея некоммерческая, то сервер, конечно, слабенький, но на то, чтобы народ игрался, надеюсь, его хватит.
А вот тут крутой поворот сюжета. Пост этот не про протокол обращения к серверу. Об этом будет следующий пост. Этот пост о программе, которую мы начали делать как пример работы с сервером, но которая вылилась в интересную на наш взгляд концепцию. В статье будет рассказано про Android-приложение, которым можно сфотографировать номер автомобиля… И обругать владельца бранным словом! Ну, или посмотреть статистику того, сколько раз сего автомобилиста обругали.
Те, кому невтерпёж, смогут расковырять работу с сервером из исходников в конце статьи. Остальных подержим пару дней в напряжении, а потом выложим законченный мануал.

В принципе идея такого софта проскакивала периодически. Но в исполнении Android – приложения, где процесс съёмки был бы автоматизирован, я его не видел. Возможно, наша реализация первая.
Мы с Vasyutka ни разу не android-программисты, поэтому всё немножко криво. Как и серверная часть. Будем благодарны за советы.

Пару слов о программе


Программа доступна в Google Play. Называется «Recognitor». Работает на всех телефонах, которые мы смогли добыть и протестировать. На некоторых планшетах для корректного отображения видео нужно вызвать меню и нажать там «flip». В программе используется OpenCV, который тащит за собой библиотеки. Поэтому и такой размер (11 мб). После запуска программы на экране пойдёт видеопоток с камеры. Для запуска детектирования достаточно нажать на кнопку съёмки. Выделение номера происходит на телефоне, распознавание — на сервере.

При съёмке номер должен быть различим глазом в видео. Это достигается при расстоянии не более 7-8 метров. Так же требуется, чтобы угол наклона номера горизонтали не превышал 15-20%, а машина стояла под углом не более 30-40 градусов к снимающему. После съёмки программа пробует связаться с сервером для распознавания номера (информации передаётся порядка 10кб — вырезанный фрагмент с номером).

Распознавание у нас не отлажено и идёт порядка 1 секунды на номер + тратится время на передачу, так что через пару секунд, если номер был детектирован, выводится менюшка следующего содержания:

Распознавание у нас многопоточно, несколько номеров параллельно принимает. Слева сверху выводится отснятый номер, который программа обнаружила. Справа его текстовое представление, которое можно отредактировать. По центру номер выводится ещё раз. Если ткнуть по кнопкам, из которых состоит номер, то можно поправить его побуквено без вызова клавиатуры.

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

Алгоритм


После того, как человек фотографирует, происходит выделение кадра из видеопотока и его обработка классификатором Хаара. В случае, если такой номер был найден — происходит его отправка на сервер для дальнейшего распознавания. Если номер не найден — программа продолжает работу.
Сам обученный классификатор у нас просили после прошлой статьи несколько раз. В исходниках, приведённых в конце он есть. Через пару дней будет статья про протоколы обращения к серверу, он там будет приложен отдельным файлом с пояснениями.
Номер на сервере обрабатывается нашим алгоритмом, немножко про который было рассказано в прошлой статье. Производится поиск обнаруженного номера в базе. Пользователю отправляется распознанный номер и количество его обнаружений в базе.
Если пользователь изменяет номер, то происходит повторный запрос по номеру автомобиля.
Вкратце саму концепцию можно представить следующим образом:


Что не сделано


Не сделано дофига в части связанной с андроидом и сервером:
• Дизайн программы как в младшей школе
• Вместо полноразмерной фотографии берётся кадр из потока
• Очень слабая инфраструктура проекта, по сути можно только обругать человека, но нельзя сказать за что, нельзя обругать другими словами
• Не все связи с сервером выделены в отдельные потоки, в результате в случае пропадания связи программа после нажатия на некоторые из кнопок подвисает на 10 секунд.

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

С распознаванием всё куда более радужно, мы потихоньку доклёпываем его, сейчас осталось:
• Распознаются только белые номера вида: «буква — три цифры — две буквы – регион».
• При первичном выделении бывают проблемы для номеров на белых машинах (где номер белее, чем машина).
• Периодические сбои в процессе обработки, сказывающиеся на стабильности алгоритма (порядка 3-5% кадров не выделяют никакого номера).

Мысли вслух


Нам кажется, что концепция софта, представленная тут, вполне жизнеспособна и имеет право на существование. К тому же, простите за пафосность, она социально-ориентированная. Если человека часто будут ругать — может он пересмотрит своё поведение на дороге и при парковке?
Но сил сделать полноценное приложение с разветвлённой структурой, интерфейсом и сайтом у нас нет (максимум будем поддерживать текущее, если его будут использовать). Если вдруг кто-то имеет такие силы, или придумает другое интересное и полезное приложение, то мы будем поддерживать и улучшать текущий сервер распознавания.

Собственно ссылки:


Сама прога на андроиде — на всём чём смогли проверили. Вроде работает. Не стесняйтесь использовать номер моей машинки, отснятой в статье:)
Исходники проекта — на андроиде, под эклипсом. Библиотеки OpenCV включены.
Статья Васи по теме распознавания номеров.

P.S. Сейчас смотрим, что приходит на сервер. Люди, номер должен быть в фокусе! Сильно размазанные номера не распознаются у нас!

P.S.S.Опубликовали продолжение — протоколы доступа к серверу.
Автор: @ZlodeiBaal
Recognitor
рейтинг 36,02
Похожие публикации

Комментарии (65)

  • +28
    А не могли бы вы прикрутить возможность отправки жалоб в ГИБДД сразу? С фото, распознанным номером и возможностью выбрать нарушение.
    Сейчас пока закона нету, обязывающего возбуждать дела по фото, но такое приложение может здорово популяризовать подобную практику, и, может быть, примется нормальный закон.

    Еще есть сайты типа angrycitizen.ru, gorod.mos.ru и подобные, можно сразу кросспостить везде, будет заметнее проблема.
    • +4
      Такие мысли нас начали посещать как только мы придумали эту идею:)
      Но сил разрабатывать и алгоритмическую часть и android-часть у нас нет. Собственно серия этих статей как раз о том, что можно сделать с алгоритмами распознавания, а данная программа всего лишь пример с открытыми исходниками. Если кто-то дерзнёт делать сложный проект такого плана, то мы ему, конечно, поможем и будем поддерживать и модифицировать серверную часть. Но нас всего двое и это первая прога под android для меня и вторая для коллеги:)

      З.Ю. А за идею кросспостить на сайтах спасибо, завтра попробуем.
      • +17
        Готов безвозмездно помочь с ругательными словами:)
      • +2
        Здравствуйте, хотел бы помочь в силу скромных сил :)
        • +1
          Проблема в том, что мы не только не знаем, как прогать приложение под андроидом хорошо, но и не знаем, как оно должно выглядеть. Через неделю планируем описать всю структуру обращения к серверу. Если действительно есть желание помочь — дерзайте, мы чем сможем поможем со своей стороны распознавания.
          • 0
            Честно говоря, у меня тоже нет в данный момент каких-то идей или выдающихся талантов в программировании под андроид. Я даже не очень понимаю, что это приложение должно будет делать ( кроме возможности сфотографировать и нажать на кнопку с нехорошим словом :) Но готов помочь не только ругательным словом, но и делом :) В любом случае, мне нравится идея и я думаю, что можно попробовать сделать хотя бы прототип полноценной реализации.
          • 0
            Что касается того, «как выглядеть», то, думаю, как и любое приложение для фотографий :)
      • 0
        Но серверная часть будет не open-source?
        • 0
          Пока что нет, частью алгоритмов владеем не мы, хотя мы их и разрабатывали. Но нам разрешено использовать их для opensource-проектов. Может быть потом перепишем на базе других принципов уже как OpenSource, но пока приоритет не в этом.
          • 0
            Жаль, таким образом из описанного в вашей статье можно увидеть только реализацию первого пункта.
    • +2
      я слышал про это приложение, не знаю правда насколько работает оно
      Описание
      В данный момент приложение обрабатывает 5 видов нарушений:
      1. Стоянка вторым рядом
      2. Стоянка на местах для инвалидов
      3. Стоянка на тротуаре
      4. Стоянка под знаком «Остановка запрещена»
      5. Стоянка на пешеходном переходе
      В ближайшее время будет добавлена «Стоянка на газоне».
      Сервис работает в Санкт-Петербурге, и в режиме тестирования — в Москве.
      • +1
        Хорошо, что такие приложения есть. Еще бы объединить бы как-нибудь усилия, чтобы было не несколько разных приложений, а одно и для всех платформ, которое бы отсылало жалобы сразу на несколько порталов.
        Есть конечно еще фантастическая мечта — чтобы оно сразу отправляло данные в московскую службу паркинга и они отправляли за машиной ближайший свободный эвакуатор, но это, думаю, к сожалению, мало выполнимо.
      • 0
        Я пользуюсь, работает. Обращения серьезно модерируются, но если проходят, то заявленяе отправляется в ГИБДД. У меня одно отправилось)
        • 0
          А по отправленным заявлениям есть какая статистика? Сколько превратилось в штрафы.
        • 0
          Монетизация — иммунитет на энный срок :)
  • +13
    Добавьте в приложение возможность работы видеорегистратором, поддержку GPS, и, естественно, автоматическое распознавание номеров с возможностью отправки связки координаты+номер на сервер и поиска данных по конкретному номеру.

    На выходе (если наберёт популярность) получится нечто вроде ГИБДД'шной системы «поток», но на порядок более функциональное,… и наши спец-службы будут первые, кто потребует запретить подобное приложение, т.к. оно будет легко палить проезд по встречке автомобилей с красивыми номерами :)
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Мечта спецслужб, каждый видеорегистратор отправляет номера которые в поле зрения. Наружка вообще не нужна будет.
  • 0
    Отличная идея, ребята. Только вопрос такой, после загрузки приложения: повторные нажатия учитываются?
    • 0
      Да )) не воспринимайте приложение всерьёз как прикладное — демонстрация
  • +72
    Мне кажется, вы нас дурите. На фотках ясно видно, что к машине неспешной походкой подходит кот, рассматривает номер машины и передает вам. А все эти библиотеки распознавания для отвода глаз.
  • +66
    xxx: Не дождусь, когда соцсети проберутся в автомобили. Обогнал такой пробку по обочине и бац: «14 человек считают, что вы хуйло».
    bash.im
  • +5
    Отличная идея. У нас есть в юзерах приложение CarChat, которое использует нашу платформу для чата с авто владельцем по его номеру. Стартап из Израиля, по-моему. Например, если кто заблокировал выезд, чтоб отправить сообщение или позвонить этому человеку.
    Но у них нет распознавания номеров. И нельзя оставить отзыв («обзыв» :-) ) если человек не зарегистрирован.

    Было бы наверное хорошо сделать продукт, который вберет себя лучшее из этих двух идей:
    1) взять название какое-то более подходящее, как у них, сделать глобальную англоязычную версию
    2) распознавание номеров, как у вас
    3) добавить чат/push notification или звонок автовладельцу, если зарегистрирован, как у них
    4) если не зарегистрирован, чтоб была возможность хотя бы его пожурить в комментах, как у вас, этот момент очень удачный, особенно на первый момент, пока не набрана критическая масса пользователей

    удачи!
    • +6
      Другими словами, вы предлагаете, чтобы слово, которым обзывают нарушителя, приходило последнему в виде сообщения.
    • 0
      Ну сложно придумать монетизации, а следовательно и продвигать задумку (не интересно инвесторам, саморазвития без инвестора до размеров приличных тоже будет стоить).

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

      Но смску владельцу ради прокола выслать можно ))) жаль их нам оплачивать придётся. А как заставить оплатить «обзывалу» вот тут надо подумать! Вот здесь коммерциализацию выдумать можно
      • 0
        Если через push notification вместо смс, то можно бесплатно. То же самое чат и звонки. Но так или иначе, для контакта с владельцем нужно чтоб он был зарегистрирован в приложении, это самое слабое место, так что идея ваша хотя бы оставлять комменты, очень хорошая. По крайней мере какое-то удовлетворение это принесет + можно там в треде обсудить владельца с другими комментаторами.
  • +4
    Добавьте плс немного функционала в позитивном направлении. Не только ругань вызывают люди. Кому-то хочется и спасибо сказать.
  • –4
    У самого давно такая идея блуждала, но до реализации не дошел. Всё никак не доходили руки просмотреть законодательную базу на предмет легальности подобных сервисов ведь тут приходится работать с номерами. К примеру в Европе и вообще на западе запрещены видеорегистраторы так как такая сьемка считается вмешательством в личную жизнь и приравнивается к обычному фотографированию человека без его согласия. В данном случае у схожая ситуация.

    С точки зрения полезности идея сама по себе супер. Сам бы пользовался глядишь и на дорогах будет безопаснее + при покупке подержанной машины можно будет узнать её историю и общую адекватность водителя.
    А вот, что касается юридической стороны дела — всё выгядит несколько туманно и может нести некоторые риски связанные судебными исками. Вероятно потому упомянутый здесь израильский стартап и не позволяет работать с незарегистрированными авто.
    • +8
      Какая может быть личная жизнь на улице? Интересно так же было бы почитать про запрет видеорегистраторов «вообще на западе».
      • +2
        Тоже это всегда интересовало.
        Средство повышенной опасности. Хочешь личной жизни? Не вопрос, не выезжай на ДОП.
        А сунулся на ДОП — твоя личная жизнь закончилась.
    • +4
      Неподтверждённая информация про запрет «в европе и на западе». Из всей Европы только в Австрии запрещены видеорегистраторы.
      В США разрешены, на ютубе полно роликов оттуда.
      Но такое впечатление, что они там не пользуются таким спросом, видимо потому, что там беспредела на дорогах меньше.
      • 0
        Поездил на прошлой неделе по Лос-Анджелесу, по-моему, там бы они весьма пригодились :)
        • 0
          Интересно. Ездил по ЛА лет 10 назад, не заметил ничего необычного. По сравнению с Москвой 10-летней давности всё было чинно-благородно. Особенно меня поразило пропускание пешеходов на переходах, т.к. у нас тогда это ещё не было принято :)
          • +1
            Я сравниваю со штатом Вашингтон, по Москве я не ездил. По сравнению с Вашингтоном в ЛА плохо все: гораздо больше машин на дороге, пробки все светлое время суток (опять же по Вашингтонским меркам пробки), водители подрезают и не дают перестраиваться, мотоциклисты (полиция в том числе) ездят между полос, объезд пробок по обочине, езда по carpool lane на машине без пассажиров (при том, что всюду висят табличке о штрафах в 300+ долларов за это), водители постоянно едут на красный, хуже организовано движение (например, редко присутствует выделенный режим светофора для поворота налево).
            • 0
              Кстати, о carpool-жульничестве:
              image

              • 0
                У меня один знакомый возил с собой большую зеленую мышь =)
            • 0
              Оказывается, в Калифорнии разрешено на мотоцикле между полос ездить.
      • +1
        В США и в других странах прямо не запрещено, но например Google по запросы вырезает/замазывает из Google street фотографии домов/окон/дворов. Так что у снимающего есть шанс попасть на судебный иск.
        • 0
          Если выложить в интернет — да, если писать в режиме кольцевого буфера, чтобы на карте был только последний час записи — не думаю что будут основания для иска.
          • 0
            В принципе на сервере не обязательно даже хранить сам номер, можно хранить хэш от него. Если прислал номер то он преобразуется в хэш а потом уже ищет по базе.
            • 0
              В случае с номером это не особо поможет, там всего 2 миллиона номеров на каждый регион, так что при желании даже на домашнем компьютере можно посчитать обратное преобразование.
              • 0
                Интересно, как эта ситуация будет выглядеть с юридической стороны. Вроде информация открытая не хранится, разве что устроить полный перебор:)
                • +5
                  Ну предположим, если у вас есть хеш депутата, гоняющего по встречке — то с юридической стороны в ваших хешах находится детское порно и ключи для запуска ракет. А так, конечно, всем до вас дела нету.
    • +2
      К примеру в Европе и вообще на западе запрещены видеорегистраторы


      А ещё полицейские сразу бьют электрошокером за превышение скорости. Вот откуда эти мифы а?

      Про Европу не скажу, но в некоторых штатах США запрешено крепить что либо на лобовое стекло. На панель — крепи сколько хочешь.
      • 0
        А с чем это связано? И можно ли крепить на на потолок около лобовухи?
        • 0
          С безопасностью, а то стекло разбивается и все улетает. На потолок можно, если не загораживает обзор.
  • +4
    Вот у ребят соц.проект, но без распознавания номеров (номер нужно вводить вручную): autocarma.org/ — объединить бы ваши задумки…
    • 0
      А у них кто-то на форуме уже предложил, но судя по всему админам даже лень разбираться было, они заклеймили систему как неработающую:)
      • +3
        Я и предложил =)
  • 0
    • +1
      Не за что:)
      Мы надеялись, что ежели немного народу с демкой поиграется, то можно будет по новому набору переобучить распознавание, но походу особо не получится. Ежели новая версия будет — перевыложим на гитхаб.
  • +1
    вы конечно не первые, кто опубликовал такое приложение, есть такое приложение, которое получило «Золотого льва» в 2012 году, оно показывает на карте отмеченные автомобили и ещё много всего, вот можно почитать тут про премию
    en.therunet.com/en/news/291/ и вот здесь само приложение specials.the-village.ru/pages/specials/parking только вполне может быть, что оно уже отмерло

    после этого в 2013 появилось ещё одно с распознаванием на сервере yazapomnil.ru/, социальной составляющей и т.д.

    интересно было бы сравнить фичи/точность и всё такое
    • 0
      Действительно огромное спасибо! Всегда сложно отыскать что-то аналогичное тому, что делаешь сам )) какая-то психология мешает.

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

      Все программы поставим и будем тестировать. Ещё раз спасибо!
      • 0
        Проекты не стали *массовыми
  • +1
    очень крутая идея! Получается эдакая народность… не знаю как выразиться правильно. Идеально, если бы на такое обратила внимание ГИБДД.
    • +1
      Не знаю у кого как, но у меня подсознательно всплывает паттерн: лишь бы ГИБДД не обратило внимание… ))) так всегда мимо поста проезжая думается. А вообще за ГИБДД не стоит переживать, у них есть ресурсы, чтобы организовать все на высоком уровне и народности и качества работы.

      Но, конечно, мы поработаем над приложением и сервером, откроем все что сможем открыть (некоторые части алгоритма, к сожалению, не нам принадлежат), и сходим ногами ко всем блогерам, кто может помочь в популяризации темы
  • 0
    Прикрутить бы к этому приложению автоматическую отправку жалобы в муниципалитет и цены бы не было.

    P.S. Где-то видел приложение на андроид для Московии, где можно жалобу отправить. Возможно, у них есть апи?
    • 0
      Несколькими комментами выше есть ссылка habrahabr.ru/post/222539/#comment_7580501, так же оно доступно под iphone, называется spot. Авторы обещают работу в Москве и Санкт-Петербурге.
      Думаю, географическое ограничение обусловлено наличием юристов в этих городах.
  • 0
    Хочу айфон-версию!
  • 0
    Супер! Пользователи имеют отличную программу, разработчики обучающую выборку для классификатора…
    • 0
      Угу… вот уже ещё 1500 номеров у нас в кармане )))
  • 0
    Надо бы вам объединить усилия с nomer.auto.ru
  • 0
    В будущем неплохо бы иметь возможность пару строк добавить о том, что же думает пользователь о владельце номера. Ну и топ обругиваемых по региону, например. К ним неизбежно возникнут вопросы — «почему при таком количестве нарушений автомобиль продолжает ездить».
  • 0
    Для отправки бесплатных СМС владельцам авто можно использовать сервис Правительства Москвы — dit.mos.ru/apps/faq/sms_ussd
  • 0
    Выложили протоколы доступа к серверу в следующей статье — habrahabr.ru/post/223441/

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка