1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zeusees-HyperLPR

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

HyperLPR: высокопроизводительная открытая китайская система распознавания автомобильных номеров

11

Установка в один клик

python -m pip install hyperlpr

Поддержка Python 3, Windows, Mac, Linux, Raspberry Pi и других.

Скорость работы в реальном времени (на MacBook Pro 2015 с процессором Intel Haswell 2,2 ГГц).

Быстрый старт

# Импорт пакетов
from hyperlpr import *
# Импорт библиотеки OpenCV
import cv2
# Чтение изображения
image = cv2.imread("demo.jpg")
# Распознавание результата
print(HyperLPR_plate_recognition(image))

Вопросы и ответы

Q: Распознавание на Android лучше, чем у демонстрационного APK?

A: Используйте модель из Prj-Linux, в модели по умолчанию для Android используется относительно старая модель.

Q: Откуда данные для обучения распознаванию автомобильных номеров?

A: Поскольку данные для обучения связаны с юридическими вопросами конфиденциальности и т. д., этот проект не может их предоставить. Существует открытый набор данных CCPD с данными о номерах автомобилей.

Q: Предоставляются ли обучающие коды?

A: Соответствующие ресурсы содержат обучающие коды.

Q: О происхождении проекта?

A: Этот проект основан на ранних исследованиях и отладочном коде автора, код не соответствует определённым стандартам, но PR приветствуются.

Ресурсы

Обновления

  • Обновлено распознавание на Android, добавлен интерфейс сканирования в реальном времени (2019.07.24).
  • Обновлена версия Visual Studio 2015 для Windows до модели «конец-в-конец» (2019.07.03).
  • Обновлено распознавание номеров на iOS на основе модели «конец-в-конец». (2018.11.13).
  • Можно установить и обновить новые модели распознавания, алгоритмы коррекции наклона номера и позиционирования через pip. (2018.08.11).
  • Представлена новая модель распознавания «конец-в-конец», которая ещё больше повышает точность распознавания (2018.08.03).
  • Добавлен проект PHP для распознавания номеров от Coleflowers (2018.06.20).
  • Добавлено HyperLPR Lite, требуется всего 160 строк кода для распознавания номера (2018.3.12).
  • Спасибо sundyCoder за версию распознавания номеров для Android с разделением символов. (https://github.com/sundyCoder/hyperlpr4Android)
  • Добавлены разделение символов и обучающий код и введение в разделение символов (https://github.com/zeusees/HyperLPR-Training) (2018.1.).

Задачи

  • Поддержка различных типов номеров и двухслойных номеров.
  • Поддержка номеров с большим углом наклона.
  • Лёгкая модель распознавания.

Характеристики

  • Быстрая скорость: 720p, одноядерный процессор Intel 2,2 Ггц (MacBook Pro 2015) — среднее время распознавания менее 100 мс.
  • Модель распознавания «конец-в-конец»: нет необходимости в разделении символов.
  • Высокая точность распознавания: точность распознавания в сценариях с пропускными пунктами составляет около 95–97 %.
  • Небольшой вес: общий объём кода не превышает 1 тыс. строк.

Описание ресурсов модели

  • cascade.xml: лучшая модель обнаружения на данный момент.
  • cascade_lbp.xml: хорошая частота отзыва, но слишком много ложных срабатываний.
  • char_chi_sim.h5 Keras модель: распознаёт 34 типа цифр и заглавных букв английского алфавита, обучена на 14 тыс. образцов.
  • char_rec.h5 Keras модель: распознаёт 34 типа цифр и заглавных букв английского алфавита, обучена на 7 тыс. образцов.
  • ocr_plate_all_w_rnn_2.h5: модель CNN для последовательного распознавания.
  • ocr_plate_all_gru.h5: основанная на GRU модель последовательного распознавания, модифицированная из модели OCR, на данный момент лучшая, но работает медленнее, требует 20 мс.
  • plate_type.h5: модель для определения цвета номера автомобиля.
  • model12.h5: модель регрессии левой и правой границ.

Примечание:

  • В проекте Win необходимо отдельно компилировать статические библиотеки.
  • Реализация C++ и реализация Python этого проекта не связаны друг с другом и являются отдельными реализациями.
  • При компиляции проекта C++ необходимо использовать OpenCV версии 3.3 или выше (DNN библиотека), иначе компиляция не удастся.
  • Рекомендуется использовать версию ndk 14b при компиляции проекта Android.

Зависимости Python

  • Keras (>2.0.0)
  • Theano (>0.9) или Tensorflow (>1.1.x)
  • Numpy (>1.10)
  • Scipy (0.19.1)
  • OpenCV (>3.0)
  • Scikit-image (0.13.0)
  • PIL

CPP зависимости

  • Opencv 3.4 или более поздней версии

Компиляция под Linux/Mac

  • Требуется только зависимость от OpenCV 3.4 (требуется DNN фреймворк), больше ничего не нужно.
cd Prj-Linux
mkdir build 
cd build
cmake ../
sudo make -j 

Демонстрация CPP

#include "../include/Pipeline.h"
int main(){
    pr::PipelinePR prc("model/cascade.xml",
                      "model/HorizonalFinemapping.prototxt","model/HorizonalFinemapping.caffemodel",
                      "model/Segmentation.prototxt","model/Segmentation.caffemodel",
                      "model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel",
                       "model/SegmenationFree-Inception.prototxt","model/SegmenationFree-Inception.caffemodel"
                    );
  //Определение файла модели

    cv::Mat image = cv::imread("test.png");
    std::vector<pr::PlateInfo> res = prc.RunPiplineAsImage(image,pr::SEGMENTATION_FREE_METHOD);
  //Использование модели «конец-в-конец» для распознавания, результаты распознавания сохраняются в res.
 
    for(auto st:res) {
        if(st.confidence>0.75) {
            std::cout << st.getPlateName() << " " << st.confidence << std::endl;
          //Вывод результатов распознавания и уровня достоверности.
            cv::Rect region = st.getPlateRect();
          //Получение положения номера.
 cv::rectangle(image,cv::Point(region.x,region.y),cv::Point(region.x+region.width,region.y+region.height),cv::Scalar(255,255,0),2);
          //Рисование положения номера.
          
        }
    }

    cv::imshow("image",image);
    cv::waitKey(0);
    return 0 ;
}

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

  • Однострочный синий номер.

  • Однострочный жёлтый номер.

  • Номер нового энергетического транспортного средства.

  • Белый служебный номер.

  • Номера представительств/Гонконга и Макао. Тренерские автомобильные номера

  • Военные номера

  • Авиационные номера

  • Двухслойные жёлтые номера

  • Двухслойные военные номера

  • Двухслойные армейские номера

  • Двухслойные сельскохозяйственные номера

  • Двухслойные персонализированные номера

Примечание: из-за того, что во время обучения в выборке были некоторые проблемы с неравномерностью, у некоторых специальных номеров есть определённые проблемы с низкой скоростью распознавания, например, (номера для дипломатических представительств / гонконгские и макаоские номера), в последующих версиях будут внесены улучшения.

Тестовые примеры

Изображение

Изображение

Пример для Android

Android

Приложение для распознавания

— Опыт использования приложения для Android: http://demo.zeusee.com/HyperLPR (настройте масштаб программы в соответствии с размером изображения, чтобы повысить точность).

Получение помощи

— Обсуждение в группе HyperAI на QQ: 529385694.

Информация об авторах и вкладчиках:

Авторское имя не разделено на имя и фамилию

— Джек Ю — автор (jack-yu-business@foxmail.com / https://github.com/szad670401). — Сяосяо (xiaoxiao@xidian.edu.cn). — AlanNewImage — версия v2 для Windows, улучшение Python для двухслойных номеров (https://github.com/AlanNewImage). — lsy17096535 — организация (https://github.com/lsy17096535). — xiaojun123456 — вклад iOS (https://github.com/xiaojun123456). — sundyCoder — сторонний вклад Android (https://github.com/sundyCoder). — coleflowers — вклад PHP (@coleflowers). — Free&Easy — вклад ресурсов. — Тюлень — обучение каскадного детектора LBP. — SalamanderEyes — модель от начала до конца для Windows (https://github.com/SalamanderEyes). — lxhAndSmh — реализация реального времени сканирования для Android (https://github.com/lxhAndSmh).

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

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zeusees-HyperLPR.git
git@api.gitlife.ru:oschina-mirror/zeusees-HyperLPR.git
oschina-mirror
zeusees-HyperLPR
zeusees-HyperLPR
master