인턴/LPR(번호판 인식)

[DoubangoTelecom/ultimateALPR-SDK/github] recognizer Readme.md 해석

용성군 2021. 7. 26. 12:34
728x90
반응형

이 응용 프로그램은 개발자가 C ++ API 사용 방법을 보여주는 sample 코드로 사용되며 정확도를 쉽게 확인할 수 있습니다. 이 프로그램은 JPEG / PNG / BMP 파일의 경로를 입력으로 받아들입니다. 이는 API를 사용하는 데 추천할 만한 방법이 아닙니다. 카메라에서 직접 데이터를 읽는 것을 추천합니다. 그리고 파일에 저장하거나 RGB로 변환하지 않고 압축되지 않은 YUV 데이터를 SDK에 공급하는 것이 좋습니다.
이 샘플을 빌드하고 싶지 않고 정확성을 확인하는 빠른 방법을 찾고 있다면 https://www.doubango.org/webapps/alpr/에서 클라우드 기반 솔루션을 사용해보십시오.
이 샘플은 오픈 소스이며 등록 또는 라이선스 키가 필요하지 않습니다.

종속성

SDK는 C ++ 11로 개발되었으며 Linux에서는 glibc 2.27+가 필요하고 Windows에서는 Microsoft Visual C ++ 2015 Redistributable (x64)-14.0.24123 (모든 이후 버전이 괜찮음)이 필요합니다. 거의 모든 프로그램에서 이를 필요로하기 때문에 이미 있을 가능성이 높습니다.OpenVINO를 사용할 계획이라면 Intel C ++ Compiler Redistributable (최신 버전 선택)이 필요합니다.

OpenVINO는 SDK(Doubango-ALPR)에 플러그인으로 패키징되어 런타임에로드 (dlopen)됩니다. 컴퓨터에 Intel C ++ Compiler Redistributable패키지가 없는 경우 엔진이 플러그인을 가져오지 못하지만 프로그램은 대체로 fallback되어 Tensorflow에서 예상대로 작동합니다. 추론 시간을 단축하려면 OpenVINO를 사용하는 것이 좋습니다. https://www.doubango.org/SDKs/anpr/docs/Benchmark.html#core-i7-windows에서 OpenVINO를 사용하거나 사용하지 않은 벤치 마크 수치를 참조하십시오.

GPGPU 가속

  • x86-64에서 GPGPU 가속은 기본적으로 비활성화되어 있습니다. 활성화 방법에 대한 자세한 내용은 여기를 확인하십시오.
  • NVIDIA Jetson (AArch64)에서는 GPGPU 가속이 항상 활성화됩니다. 자세한 내용은 여기를 확인하세요.

사전 빌드 된 바이너리

이 샘플을 직접 빌드하지 않으려면 미리 빌드 된 C ++ 버전을 사용하세요.

 

  • Windows x86_64 : binaries / windows / x86_64의 recognizer.exe
  • Linux x86_64 :  binaries / linux / x86_64의 recognizer. Ubuntu 18로에 빌드되었습니다. 여기에 설명 된대로 libtensorflow.so를 다운로드해야합니다.
  • Linux aarch64 : binaries / linux / aarch64의 recognizer
  • Raspberry Pi : binaries / raspbian / armv7l의 recognizer
  • Android : Android 폴더 확인
  • NVIDIA Jetson : binaries / jetson / aarch64 / recognizer 또는 binaries / jetson_tftrt / aarch64 / recognizer. 여기에 설명 된대로 최적화 된 모델을 생성해야합니다.

Windows에서 이 샘플을 시도하는 가장 쉬운 방법은 binaries / windows / x86_64로 이동하여 binaries / windows / x86_64 / recognizer.bat를 실행하는 것입니다. 고유한 이미지 및 구성 옵션을 사용하도록 이러한 파일을 편집 할 수 있습니다.

Building

이 샘플에는 단일 C ++ 소스 파일이 포함되어 있으며 쉽게 빌드 할 수 있습니다. C ++ API에 대한 문서는 https://www.doubango.org/SDKs/anpr/docs/cpp-api.html에 있습니다.

 

Generic GCC

다음 명령은 일반 GCC 명령입니다.

cd ultimateALPR-SDK/samples/c++/recognizer
g++ recognizer.cxx -O3 -I../../../c++ -L../../../binaries/<yourOS>/<yourArch> -lultimate_alpr-sdk -o recognizer
  • 올바른 값으로 OS 및 yourArch를 변경해야합니다. 예를 들어 Linux x86_64에서는 각각 linux 및 x86_64와 같습니다.
  • 크로스 컴파일을하는 경우에는 올바른 3중항으로 g ++를 변경해야합니다. 예를 들어 Android ARM64 대상의 Linux 호스트에서 3중항은 aarch64-linux-android-g ++와 같습니다.

 

테스팅

애플리케이션을 빌드 한 후 로컬 머신에서 테스트 할 수 있습니다.

 

사용법

recognizer는 다음과 같이 사용합니다.

 

recognizer \
      --image <path-to-image-with-to-process> \
      [--assets <path-to-assets-folder>] \
      [--parallel <whether-to-enable-parallel-mode:true/false>] \
      [--rectify <whether-to-enable-rectification-layer:true/false>] \
      [--charset <recognition-charset:latin/korean/chinese>] \
      [--car_noplate_detect_enabled <whether-to-enable-detecting-cars-with-no-plate:true/false>] \
      [--ienv_enabled <whether-to-enable-IENV:true/false>] \
      [--openvino_enabled <whether-to-enable-OpenVINO:true/false>] \
      [--openvino_device <openvino-device-to-use>] \
      [--klass_lpci_enabled <whether-to-enable-LPCI:true/false>] \
      [--klass_vcr_enabled <whether-to-enable-VCR:true/false>] \
      [--klass_vmmr_enabled <whether-to-enable-VMMR:true/false>] \
      [--klass_vbsr_enabled <whether-to-enable-VMMR:true/false>] \
      [--tokenfile <path-to-license-token-file>] \
      [--tokendata <base64-license-token-data>]

[]로 둘러싸인 옵션은 선택 사항입니다.

 

예제

  • NVIDIA Jetson에서 여기서 설명한것처럼 모델 만드는 것을 필요로 할 것이다. 그리고 실행시켜보세요.

LD_LIBRARY_PATH=../../../binaries/jetson/aarch64:$LD_LIBRARY_PATH ./recognizer \ --image ../../../assets/images/lic_us_1280x720.jpg \ --assets ../../../assets \ --charset latin \ --parallel false \ --rectify true

 

또는

 

LD_LIBRARY_PATH=../../../binaries/jetson_tftrt/aarch64:$LD_LIBRARY_PATH ./recognizer \ --image ../../../assets/images/lic_us_1280x720.jpg \ --assets ../../../assets \ --charset latin \ --parallel false \ --rectify true

 jetson_tftrt  jetson binaries 의 차이는 여기를 참조하세요.

 

  • linux aarch64에서 다음과 같은 명령을 사용할 수 있습니다.

LD_LIBRARY_PATH=../../../binaries/linux/aarch64:$LD_LIBRARY_PATH ./recognizer \ --image ../../../assets/images/lic_us_1280x720.jpg \ --assets ../../../assets \ --charset latin \ --parallel false

 

애플리케이션을 크로스 컴파일하는 경우 애플리케이션과 자산 및 바이너리 폴더를 모두 대상 장치에 복사해야 합니다.

 

 

원문

https://github.com/DoubangoTelecom/ultimateALPR-SDK/tree/master/samples/c%2B%2B/recognizer

 

GitHub - DoubangoTelecom/ultimateALPR-SDK: World's fastest ANPR / ALPR implementation for CPUs, GPUs, VPUs and FPGAs using deep

World's fastest ANPR / ALPR implementation for CPUs, GPUs, VPUs and FPGAs using deep learning (Tensorflow, Tensorflow lite, TensorRT & OpenVINO). Multi-OS (NVIDIA Jetson, Android, Raspberry...

github.com

 

728x90
반응형