이 응용 프로그램은 개발자가 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>]
[]로 둘러싸인 옵션은 선택 사항입니다.
- --image 처리 할 이미지 (JPEG / PNG / BMP)의 경로입니다. ../../../assets/images/lic_us_1280x720.jpg에서 기본 이미지를 사용할 수 있습니다.
- --assets 구성 파일 및 모델이 포함 된 asset 폴더의 경로입니다. 기본값은 현재 폴더입니다.
- --charset 인식 문자 집합 (a.k.a 알파벳) 값 (라틴어, 한국어, 중국어 ...)을 정의합니다. 기본값 : 라틴어.
- --parallel 병렬 모드 활성화 여부. 병렬 모드에 대한 자세한 내용은 https://www.doubango.org/SDKs/anpr/docs/Parallel_versus_sequential_processing.html에서 확인하세요. 기본값 : false
- --rectify 정류 레이어 활성화 여부. 정류 레이어에 대한 자세한 내용은 https://www.doubango.org/SDKs/anpr/docs/Rectification_layer.html을 참조하세요. x86_64 CPU에서 항상 활성화됩니다. 기본값 : false
- --car_noplate_detect_enabled 번호판이없는 차량을 감지하고 반환할지 여부. 기본값 : false.
--ienv_enabled 야간 투시 용 이미지 향상 (IENV) 활성화 여부. IENV에 대한 자세한 정보는 https://www.doubango.org/SDKs/anpr/docs/Features.html#image-enhancement-for-night-vision-ienv를 참조하십시오. 기본값 : x86-64의 경우 true이고 ARM의 경우 false입니다. - --openvino_enabled OpenVINO 활성화 여부. Tensorflow는 OpenVINO가 비활성화되었을 때 사용됩니다. 기본값 : true.
- --openvino_device 사용할 OpenVINO 장치를 정의합니다 (CPU, GPU, FPGA ...). 자세한 내용은 https://www.doubango.org/SDKs/anpr/docs/Configuration_options.html#openvino-device 에서 확인하세요. 기본값 : CPU. "
- --klass_lpci_enabled LPCI (License Plate Country Identification) 활성화 여부. https://www.doubango.org/SDKs/anpr/docs/Features.html#license-plate-country-identification-lpci에서 자세한 정보를 확인하세요. 기본값 : fals
- --klass_vcr_enabled 차량 색상 인식 (VCR) 활성화 여부. 자세한 정보는 https://www.doubango.org/SDKs/anpr/docs/Features.html#vehicle-color-recognition-vcr에서 확인하세요. 기본값 : false
- --klass_vmmr_enabled 차량 제조업체 모델 인식 (VMMR) 활성화 여부. 자세한 정보는 https://www.doubango.org/SDKs/anpr/docs/Features.html#vehicle-make-model-recognition-vmmr에서 확인하세요. 기본값 : false
- --klass_vbsr_enabled VBSR (차체 스타일 인식) 활성화 여부. 자세한 정보는 https://www.doubango.org/SDKs/anpr/docs/Features.html#vehicle-body-style-recognition-vbsr에서 확인하세요. 기본값 : false
- --tokenfile base64 라이센스 토큰이있는 경우이를 포함하는 파일의 경로입니다. 제공되지 않으면 응용 프로그램은 평가판처럼 작동합니다. 기본값 : null.
- --tokendata Base64 라이선스 토큰 (있는 경우). 제공되지 않으면 응용 프로그램은 평가판처럼 작동합니다. 기본값 : null.
예제
- 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
'인턴 > LPR(번호판 인식)' 카테고리의 다른 글
[Doubango/ultimateALPR/Docs] Improving the accuracy 번역 (0) | 2021.08.25 |
---|---|
[Doubango/ultimateALPR/Docs] C++ API header 번역 (0) | 2021.08.03 |
[DoubangoTelecom] ultimateALPR SDK - Jetson.md 해석(Jetson과 Jetson_tftrt 차이) (0) | 2021.07.25 |
[Doubango-ultimateALPR-Docs] Parallel versus sequential processing 해석 (0) | 2021.07.19 |
[Doubango-ultimateALPR-Docs] Architecture overview 해석 (0) | 2021.07.16 |