распознавание номеров
3 поста
3 поста
5 постов
Всем привет!
Если вы читали мои статьи 2022 года — вы знаете эту историю. Если нет — краткое содержание: Я IT-шник, у меня случайно появилась ip-камера, думал что с ней сделать, прикрутил к ней распознавание номеров и установил на подоконник следить за парковкой, написал об этом статью "для себя", и неожиданно получил отклик сообщества.
Мои старые статьи:
Первая часть
Вторая часть
Это было приятно. Я не ожидал.
Потом проект тихо умер.
Нет, не из-за какой-то конкретной причины. Просто я сделал что хотел — система работала, номера читала, ворота открывались. Задача выполнена. Развивать дальше не стал. Сначала я отключил из розетки Raspberry PI, потом в дождь зависла камера, отключил и её. Raspberry PI я отформатировал спустя время уже под другой проект. Код лежал где-то на диске, покрывался пылью, и в какой-то момент просто... потерялся.
Даже скриншотов интерфейса не осталось. Нечего плохой код хранить — говорю я себе утешая, когда становится грустно от этого факта. Потому что было бы здорово запустить старую версию рядом с новой и сравнить. ДО и ПОСЛЕ. Но увы.
А люди всё равно писали. Периодически в личку прилетало что-то вроде "а проект ещё живой?". Я честно отвечал: нет, заброшен, RIP. При этом чувствовал лёгкую вину.
Так прошло почти четыре года.
"Попробовать ещё раз" — эта мысль возвращалась регулярно. Но была одна проблема: я не понимал как сделать хорошо. Просто повторить то же самое — смысла нет. Сделать лучше — а что значит лучше? Все-таки это не совсем не мое направление деятельности, я не разбираюсь в видеонаблюдении. Никогда не пользовался подобным софтом, чтобы посмотреть как оно сделано у больших компаний. Мой максимум, связанный с распознаванием номеров - это фото штрафа на госуслугуах с моим авто)))
За четыре года я стал заметно опытнее в IT-инфраструктуре. И в какой-то момент картинка в голове наконец сложилась — я понял что хочу сделать и примерно представлял как.
Так что я сел и написал это заново. С нуля.
Зачем это нужно дома или в небольшом бизнесе
Если вы первый раз слышите о распознавании номеров — давайте разберёмся зачем это вообще нужно дома или в небольшом бизнесе. Когда мне писали с вопросом "жив ли проект" я иногда так-же спрашивал какой вариант использования их интересует. Таким образом, хоть немного появилось понимание того, что нужно сделать.
Сценарии на самом деле очень разные:
Въезд во двор или на парковку. Камера видит машину, читает номер, открывает шлагбаум или ворота. Никаких брелоков, никаких карточек — свои заехали, чужие нет.
Автосервис или автомойка. Машина въезжает — система фиксирует номер и время. Никто ничего не записывает вручную, история въездов всегда под рукой.
"Умное" Видеонаблюдение. Камера на воротах дачи или во дворе — хочется знать какие машины приезжали, когда и сколько раз, без просмотра часов записи.
Звучит как что-то дорогое и корпоративное? В этом и была идея — сделать так, чтобы это мог установить любой человек у себя дома за разумные деньги и без специальных знаний.
Логика работы моей системы простая:
Система состоит из нескольких частей.
Камера — обычная IP-камера с RTSP-потоком. Никакого специального железа, подойдёт любая приличная камера за 3–10 тысяч рублей. Главное — нормальный поток и видимость номерного знака. Место установки играет очень важную роль.
Детектор — локальный сервис, который смотрит в камеру и думает. Для каждой камеры — отдельный детектор. Внутри работает YOLOv8, нейросеть, которая находит автомобили в кадре. Когда машина найдена — в дело вступает распознавание номера. В первой версии 2022 года это делал облачный сервис, сейчас всё работает локально.
База данных — все события, номера и фотографии хранятся у вас. Никуда не отправляется.
Веб-интерфейс — открываете браузер, заходите на локальный адрес, видите ленту событий, историю, настройки. Работает с телефона и компьютера, никакой установки приложений.
Всё это поднимается через Docker Compose одной командой. Установка занимает минуты, не часы. Да, если вы только только освоили смену шрифта в Word - будет сложно.
Лента событий. Главная страница. Каждое событие: фотография машины, распознанный номер, уверенность распознавания в процентах, время, камера. Лента обновляется в реальном времени, новые события появляются сверху без перезагрузки страницы.
История событий. Полная история с фильтрами: по номеру (работает частичный поиск), по дате, по камере, по типу транспорта. Выгружается в CSV — открывается в Excel.
Профили детектора. Это одна из вещей, которой не было в первой версии. Разные сценарии требуют разных настроек — машина едет через шлагбаум со скоростью 5 км/ч и машина на трассе делают 90 км/ч — совсем разные истории. Когда я тестировал детектор на разных видео, то понял: универсального подхода нет. Код обрастал переменными, и я сгруппировал их в готовые профили.
Въезд / Ворота — медленный подъезд, одна машина в кадре.
Парковка — машина может долго стоять, не нужно получать сотни одинаковых событий.
Трасса — быстрое движение, нужна быстрая реакция а требования к распознаванию можно снизить.
Пробка / Перекрёсток — много машин одновременно, едут медленно.
Выбираете профиль под ваш случай — система настраивается автоматически. Хотите покрутить параметры вручную — можно.
Автоматический — детектор непрерывно смотрит в камеру. Увидел машину — проанализировал — сохранил событие. Подходит для въезда, парковки, любого места где нужна непрерывная фиксация.
Ручной — детектор пассивен, держит актуальный снимок с камеры. Событие создаётся только когда оператор нажимает кнопку. Удобно там, где оператор и так видит машину — например на проходной.
Казалось бы, написал детектор — теперь нужно его проверить. Берёшь камеру, смотришь на дорогу, смотришь как система работает. Всё просто.
Только вот камеру я давно отключил. А даже если бы включил — у меня во дворе поток машин такой что за день наберётся материала на пять минут тестирования. Не густо.
Окей, думаю — найду открытые RTSP-потоки с камер наблюдения где-нибудь в интернете. Трафик, парковки, въезды. Такое же есть, правда?
Есть. Но не то.
Нашёл несколько потоков с камер на трассах по всему миру. Машины есть. Но едут где-то на горизонте, номера в кадр не попадают вообще. Нашёл камеры в США — там отдельная история: во многих штатах передний номерной знак не обязателен. Камера стоит удачно, машины едут прямо на неё, угол хороший — а номеров спереди просто нет. У половины машин. Законно.
В итоге я пошёл на YouTube. Скачивал записи с пробками, парковками, хайвэями — и гонял их через детектор как видеофайлы. Это и стало моим полигоном. Немного криво, немного не то — но работало. Все шесть профилей настроек появились именно так, на чужих записях из интернета. Т.к под каждое новое видео мне приходилось постоянно менять множество значений переменных, я просто их сгруппировал и выбирал нужную группу при загрузке каждого отдельного видео.
Вот некоторые примеры того, как я тренировался:
Первое видео — с него начал:
Вариант с неподвижными машинами в кадре:
Пробка — много машин, едут медленно, номер то открывается, то перекрывается:
Проход по парковке:
Я показываю вам честно как оно есть, мой код не идеален. Есть ошибки. Но я еще веду разработку.
Я назвал бесплатную версию Community Edition. Не только потому что так принято, а потому что так понятно. Разработку я начал с полностью облачной версии, где вся система будет расположена на моих серверных мощностях, но пока временно ушел от этой реализации.
CE работает полностью локально. Никакого облака, никаких серверов на моей стороне, никакой подписки. Вы скачиваете, разворачиваете у себя, данные остаются у вас. Всё.
CE будет в открытом доступе (GitHub). Пока я дописываю документацию, провожу тесты и довожу до состояния, которое мне будет не стыдно показать.
Сначала я хотел полностью дописать систему и только потом рассказывать о ней. Но разработка в одиночку — тратит очень много времени и сил. Когда проект будет закончен — не очень понятно. Поэтому решил не ждать и поделиться тем что есть уже сейчас.
Может ваша поддержка пополнит мои запасы энтузиазма. А может выяснится что тема уже никому не интересна — тоже полезно знать.
В следующей части разберём детектор изнутри: как YOLOv8 находит машины в кадре, почему распознавание номера — это отдельная и нетривиальная задача, и как система справляется когда в кадре одновременно пять машин. Будет скучно и много текста)
Еще, очень хочется придумать проекту имя и это неожиданно самая сложная задача.
Если есть вопросы или сценарий который хотите обсудить — пишите в комментарии. Читаю всё.
До встречи!
Решил собрать часы в необычном формате — вместо стрелок и цифр они показывают время словами. Получилось что-то вроде светящейся головоломки 🙂
Идею придумал не я, часы такого типа вы можете поискать под названием WordClock.
Пока покажу просто несколько фото первого прототипа.
Если будет интересно, могу позже сделать полноценный пост с подробностями сборки, схемой, созданием печатной платы и кодом.
Привет, Пикабу!
Мой друг недавно загорелся идеей собрать себе WordClock — часы, где время отображается не цифрами, а словами. Он нашёл проект в интернете, попросил меня помочь с электрикой. Он шарит в моделировании и имеет какой-то крутой 3d-принтер, но схемотехника для него дремучий лес.
Я, как и положено зануде, посмотрел на схему, поковырял код... и честно сказал:
"Ну, такое. Схема мне не нравится, код... страшно открыть. Короче, давай я лучше сам спроектирую— с блэкджеком и микроконтроллером".
Так я и начал делать свой прототип WordClock'ов. Пока что всё довольно грубо, но уже работает в эмуляторе — показывает время словами с помощью адресной ленты и микроконтроллера.
Лучше свой кривой код, чем чужой кривой код )))
Проект на стадии «пишу код, рисую схему», и я думаю сделать пост (или серию) с:
качественным дизайном, без соплей из термоклея и пауком из проводов,
рассуждением по коду и логике,
и вообще рассказать, как сделать такую штуку самому, чтобы сборка была простой, в удовольствие.
Но перед тем как писать текст, снимать фото и рисовать схемы — хотел бы узнать, такой контент здесь интересен? Я уже публиковал здесь несколько DIY статей, реакция была разной. В этот раз решил поинтересоваться заранее)
Если здесь такое интересно, сделаю нормальный пост с фотками, пайкой, фейлами и не совсем.
Для тех кто дочитал, небольшое видео с тестовым запуском чужого проекта
Решил поделиться своей историей, потому что она меня откровенно выбесила. И, надеюсь, кому-то поможет избежать подобных ситуаций.
Спойлер: Авито встал на сторону арендодателя, несмотря на здравый смысл и факты.
Я бронирую квартиру посуточно — за несколько дней до нужной даты, чтобы спокойно выехать из одного города в другой. Платёж прошёл, бронь подтверждена, всё ок.
В день, когда мне нужно выезжать, поступает звонок от арендодателя. Пропускаю его, так как работаю. Перезваниваю через какое-то время. И вот с этого начинается цирк:
Он: "Чего не звоните? Квартира нужна?" — грубым тоном.
Я: "Да, конечно, всё в силе. Я выезжаю, буду вечером."
Он: "Тогда переводите полную оплату."
Я: "Нет, переводить заранее не буду. Увидим квартиру — оплачу. Бронь же уже внесена."
Он: "Бросает трубку."
⏱ Длительность разговора — ~ минута.
Я несколько раз пытаюсь перезвонить — ноль реакции. Потом, наконец, он берёт трубку и говорит:
"Отменяйте бронь." — и снова бросает трубку.
⏱ Второй разговор — 17 секунд.
Понимаю, что с этим человеком дальше связываться бесполезно. Срочно нахожу другое жильё (а это уже пятница, вечер — и цены выше), снова вношу предоплату.
Параллельно звоню в Авито — обещают разобраться. Выезжаю в другой город. Позже, когда уже на трассе межгород перезванивают с другого номера (другой сотрудник, надо всё рассказывать заново), говорят:
ТП:"Арендодатель говорит, что он готов вас заселить, проблем не было."
Я: "У меня есть скриншоты звонков. Общались ~20 секунд. Потом он просто исчез. Я бы не стал срочно искать другую квартиру, если бы всё было ок."ТП: "Скиньте скриншоты что вы звонили и общались, мы перепроверим информацию."
По приезду в город, вечером скинул скриншоты в поддержку. Занимался своими делами, периодически проверяя ответы поддержки - ответа нет.
Я уже заселён в новую квартиру, лег спать — звонок от Авито.
ТП: "Мы ознакомились со скриншотами, их недостаточно. Если бы у вас была запись разговора — можно было бы что-то решить. А так — решение в пользу арендодателя."
Я в шоке. Говорю:
Я: "А как же скриншоты звонков, подтверждение другой брони, логика? Я что, просто так вторую квартиру снял и снова платил предоплату?"
ТП: "Мы вас понимаем, но ничем не можем помочь." - зачем тогда нужна техподдержка, подумал я про себя
Я: "Сейчас ситуация где мое слово против его. Но в мою пользу логика, скриншоты и факты."
Продолжение разговора:
ТП: "Так вы можете сейчас поехать и заселиться у первого арендодателя."
Я: "Это в 01:00 ночи. Когда я уже в другой квартире. Когда первый арендодатель хамил и бросал трубки."
ТП:"Вы можете написать владельцу чтобы он подтвердил слова об отмене брони и скинуть нам переписку чат"
Я:"Если он вам отвечает что все в силе, на мои звонки не отвечает. Почему он будет общаться со мной и отвечать. Тем более в час ночи."
ТП:"Ничем не можем помочь, вы можете сейчас заселиться в ту квартиру"
Я:"Ясно, спасибо"
Лег спать. Утром след. дня решил попробовать написать арендодателю, где косвенно проговорил всю ситуацию и попросил ответов. Ну, на мой взгляд раз арендодатель не отвечает из разряда " все было не так" - а просто хамит - значит с тезисом об отмене брони арендодатель согласен.


Данную переписку я скинул в поддержку. Но решение так и осталось в пользу арендодателя.
Я выслал все скрины. Объяснил, что никакой логики в позиции арендодателя нет. Но они закрыли тикет в его пользу.
Если бы я хотел "отказаться" от квартиры, я бы просто не поехал. Но у меня:
внесена предоплата;
подтверждён выезд;
попытки дозвониться;
бронь новой квартиры;
дополнительные расходы;
и полное хамство со стороны арендодателя.
Авито в этой ситуации показал себя как платформа, не защищающая добросовестного клиента. Если вы не записываете разговоры (что, кстати, не всегда законно и не все умеют), — вас просто "перебивают" фразой арендодателя "всё было нормально", и всё.
А то, что вы вносите предоплаты и теряете деньги — уже никого не волнует.
P/S
Ну, главное что зафиксируют мое недовольство )))
Агент поддержки
Здравствуйте!
Мы видим, что вы не согласны с решением, и мы обязательно зафиксируем это в качестве обратной связи. Но само решение сейчас не изменится — оно окончательное.
Если вам понадобится помощь по другому вопросу, обращайтесь, будем рады помочь.
Попался в руки дисковый телефон. Интересно стало изучить его конструкцию.
Главной "вишенкой" конечно является сам набиратель номера! Снял его, почистил и изучил конструкцию. Примерно час попыток подружить его с микроконтроллером и готово!!
Удалось научиться общаться с ним, считывать и преобразовать полученные данные в набранный пользователем номер.
Предлагаю вам на пару секунд окунуться в прошлое.
Думаю полностью восстановить его (он рабочий, но дать ему вторую жизнь) и реализовать как "приема звонков с телеграм" или предложите свои варианты.
Всем привет! Случайно узнал от своей любимой что в детстве она мечтала о шкатулке из мультфильма Анастасия. Признаюсь, я про такой мульт даже не слышал, не то что бы знал что там за шкатулка. В общем, идея для небольшого подарка возникла сама собой.
В свободное время решил поискать в интернете что это за шкатулка и где её купить.
Найти отрывок из мульта конечно не составило проблем, но вот найти саму шкатулку....
Оказывается, мульт в свое время был достаточно популярным и на нем выросло не одно поколение девочек. Соответственно и сувенирной продукции много было. Ключевое слово "было". Купить что-то сейчас я не смог, нашел только старые записи с различных зарубежных маркетплейсов типа Амазон и Ебей, последние продажи товара были в 2018-19х годах.
Сдаться вот так просто не мой вариант. Спустя некоторое время я нашел ювелирную мастерскую, которая специализируется на украшениях из сказок/мультфильмов.
У них как раз есть кулон что я ищу. Заказал. С этой частью вопрос решен.
Теперь шкатулка. Решил сделать сам. Поискал 3d-модели, с этим проблем не оказалось ( но как я узнал позднее - лучше бы я выбрал другую модель)
Довольный, я начал искать тех кто занимается печатью и покраской моделей. Написал примерно 10ти людям. Практически все отказались. т.к модель "большая", "сложная", "нет времени" и.т.д.
Но были и те, кто согласился. Только вот цена меня неприятно удивила, хотя думаю это тоже был вариант отказа от работы.
Лучший подарок - это подарок, сделанный своими руками
Мой хороший друг с 3д-принтером согласился мне помочь. И тут я узнал что модель не самая подходящая для печати, он объяснял почему, но я не особо понял детали))
В общем, спустя много часов у меня в руках была та самая шкатулка.
Осталось покрасить)) Только красить я совсем не умею, но моя отличительная черта - это усидчивость.
Для начала я немного обработал модель дремелем, далее нанес с балона праймер (на мой взгляд с балона слой более тонкий и за счет хорошей дисперсии лучше проникает и закрывает поры)
После праймера я нанес базовый слой краски.


нанесение базового слоя краски с баллона
Теперь покраска кистью. Кисти и краски одолжил у друга.
Краски использовал акриловые, брендов "Гамма" и "matt".


Покраска. Последний раз я красил кистью в младших классах в школе на уроках ИЗО
Спустя несколько дней работы с кистью получил следующий результат. Никогда раньше таким не занимался.




финальный вид работы
Небольшое видео для тех, кто досмотрел до конца!
Кулон выполнен из латуни, покрытой золотом, а камни — фианиты. Дополнительно куплена золотая цепь.
Подарок я еще не вручил, вы первые кто о нем узнал. Так что тссс)))
p/s/ По правилам сообщества я не могу указывать ссылки на страницы с продажей, но думаю у вас не будет большой проблемы найти данный кулон. Что касается 3d- модели, повторюсь - мой вариант не самый удобный для печати, его рекомендовать не стану.
Всем привет! Однажды, я как обычно серфил в интернете и наткнулся на интересный брелок для ключей, мне он понравился и я решил его заказать. После поисков я понял, что вся выдача гугла ведет на зарубежные маркетплейсы, посвященные рукоделию, где запрещена отправка в РФ ( например Etsy). С этого и начнется моя история)
Я занимаюсь борьбой, в нашем виде спорта есть некоторый атрибут - пояс, цвет пояса в этом виде спорта обозначает уровень опыта и навыков практикующего. Обычно начинают с белого пояса, затем последовательно переходят к голубому, фиолетовому, коричневому и, наконец, черному поясу.
Выглядит пояс вот так:
Не помню как, но я наткнулся на фотографию брелока для ключей из паракорда в виде пояса




фото из интернета
Мне понравилась идея. Поискал объявления, в основном находил страницы зарубежных продавцов. Цена за брелок в среднем до 5$, но проблема что никто из найденных не отправлял в РФ.
Не страшно подумал я, найду объявления частников, кто сделает под заказ.
Нашел несколько объявлений в вк и авито. Отписал в общей сложности наверное десяти мастерам.
Первым моим удивлением было то, что очень сложно вести переписку. Люди отвечали одним сообщением в день, нехотя и не по делу, отписками типа: "подумаю как сделать", "посмотрю, что есть по цветам", "сначала сделаю, а потом над ценой подумаю". В итоге их "подумаю" и "посмотрю" могло длится 3-4 дня.
Второе мое удивление, после отсутствия коммуникабельности - это отсутствие понимания ТЗ. Может, конечно, я плохо объяснял, но я скидывал фото и говорил: "НУЖНО ВОТ ТАК, ТОЧНО ТАКОЙ", на что мне показывали что-то совершенно другое.




что угодно, но не то, что нужно. Так практически со всеми.
Были конечно и те, кто понимал с первого раза. Но большинство моих переписок характеризуют скриншоты выше.
Третий момент, который напрягал - никто не называл цен. Общаешься с мастером неделю и только потом он обозначал примерную цену. Кажется, мне только 2 мастера сразу обозначили стоимость, после того как я показал им фото референсы.
Четвертый момент, который стал кульминацией - цена. Конечно, каждый по-своему оценивает свое время. Но судя по перепискам, когда мне за 10 минут собирали брелок, далее еще через 10 минут собирали абсолютно другой, цена за 10 минут работы должна быть невысокой.
Сразу скажу, из тех от кого удалось добиться цены - самая низкая была 1200 за один брелок. Еще называли 800, но мастер куда-то пропал)
Пошел смотреть цены на сам паракорд, может быть он стоит как цепь из золота, а плетут его исключительно вручную, девственницы и только в полнолуние.
Оказалось нет, ~25 рублей за метр.
Плетение. Быть может, вид плетения, который необходим для моего брелока - один из самых сложных? Снова нет, плетение называется "змейка", это базовое, одно из самых простых плетение.
Идея пришла сама, я понял что пару недель было потрачено на поиск мастера, после чего пришлось изучать как сделать такой брелок. Из принципа захотел сделать сам.
Посмотрев уроки по плетению на Ютубе, обратил внимание, что многие плетут на специальных стойках/станках. Кто-то на видео делал такой из говна и палок подручных средств, у кого-то видно что не самодельный. Я нашел 3д модель станка и попросил друга напечатать на принтере. Через день у меня был такой станок. Забегая вперед скажу - станок не нужен, мой брелок отлично плетется на весу))
Купил паракорд (искать Паракорд 550 4мм) в магазине своего города. Были только цельные мотки по 30метров. Т.к мне необходимо было несколько цветов, теперь я владелец 120метров паракорда)) Потратил ещё 20 минут на просмотры видеоуроков в Ютубе и вот уже что-то похожее:
Плетение называется Змейка, легко ищется в ютубе, например "Paracord snake".
В конце небольшая фотосессия)




Он не боится ни газа, ни каски, ни кулаков!
ТГ канал с переведенными видеокурсами по грепплинуг и bjj