인턴/LPR(번호판 인식)

[Doubango-ultimateALPR-Docs] Parallel versus sequential processing 해석

용성군 2021. 7. 19. 21:23
728x90
반응형

병렬 처리 VS 순차 처리

ANPR/ALPR Detector는 Convolutional Neural Networks(ConvNet/CNN)을 사용합니다. 입력 레이어의 모양은 높이=300, 너비=300 및 NumBytesPerSample = 3(R, G, B)을 의미하는 [300,300,3]입니다. 모든 이미지는 300x300 고정 해상도로 크기가 조정되고 입력 레이어와 일치하도록 RGB_888(일명 RGB24)로 변환됩니다. 출력 레이어는 더 복잡하고 한 가지 중요한 요소는 이 섹션에서 우리가 관심을 갖는 예측 상자(prediction box)입니다.

CNN은 입력에 관계없이 항상 100개의 예측 상자를 출력합니다. 여기에 이러한 상자를 필터링하고 융합하는 역할을 하는 "후처리" 작업이 있습니다. 필터링은 점수/신뢰도를 기반으로 하고 융합은 앵커(여기서 앵커는 앵커박스를 의미하는 것 같음.)를 기반으로 합니다. 후처리 작업이 끝나면 0 또는 최대 10(훈련 단계에서 사용되는 임의의 숫자)이 될 수 있는 실제 감지를 갖게 됩니다.

예상하다시피, 후처리 작업은 CPU를 매우 많이 사용하고 detection을 매우 느리게 만드는 좋지 않은 소식입니다. 예를 들어 후처리 단계에서 실행되는 작업 중 하나는 NMS(비최대 억제)입니다.

후처리 작업에 대한 좋은 소식은 두가지 패스에서 수행할 수 있다는 것입니다. 첫 번째 패스는 매우 빠르고 98% 정확도로 실제 예측을 할 수 있습니다. 두 번째 패스는 매우 느리고 다음 탐지와 병렬로 실행되도록 예약할 수 있습니다.

병렬 처리의 이면에 있는 아이디어는 다음과 같습니다.

  1. 디코더는 모든 크기의 비디오 프레임 N을 받아 300x300 RGB_888로 변환하고 CNN에 입력으로 전달합니다.
  2. 가능한 번호판을 나타내는 100개 경계 상자를 예측합니다.
  3. 98% 정확도로 후보 상자를 얻기 위해 첫 번째 패스 후 처리 작업을 실행합니다.
  4. 병렬 프로세스를 사용하여 두 번째 패스 후처리 작업을 비동기식으로 스케줄하고 결과를 인식하도록 등록합니다.
  5. 사용자에게 첫 번째 통과 결과를 반환합니다. 이 단계에서 인식이 아직 완료되지 않았지만 사용자는 첫 번째 통과 결과를 사용하여 프레임에 잠재적으로 번호판이 있는지 확인할 수 있습니다. 예를 들어 사용자는 번호판 경계 상자 좌표를 사용하여 프레임을 자르고 나중에 사용할 수 있도록 저장할 수 있습니다.
  6. 사용자는 디코더에 비디오 프레임 N+1을 제공합니다. 사용자가 프레임 N+1을 준비하는 동안 디코더는 background에서 두 번째 패스를 실행하고 결과를 인식기에 전달합니다.
  7. 프레임 N+1프레임 N과 동일하게 진행됩니다 (1~5단계 참조).


알다시피, 프레임 N+1에 대한 준비 및 감지 작업은 두 번째 통과 감지 및 프레임 N의 인식과 겹칩니다(병렬 실행). 즉, 중간처리 과정을 수행하는동안 프레임 N에 대한 인식 결과를 갖게 됩니다. 파이프라인이 47fps로 실행 중이면 감지를 위해 프레임 N +1을 제공한 후 5~10밀리초 간격으로 프레임 N에 대한 인식 결과를 얻게 됩니다.

첫 번째 패스가 K개의 상자를 출력하고 두 번째 패스가 M개의 상자를 출력하는 경우:

  • M의 모든 상자 m은 K에 안에 있다는 의미는 두 번째 단계에서는 예측에 새 상자를 추가하지 않습니다.

 

Android 기기에서 병렬 처리는 일부 기기에서 파이프라인 속도를 최대 120%까지 높일 수 있지만 Raspberry Pi 4에서는 이득이 미미합니다. RockPi 4B(ARM64)에서 병렬 처리가 활성화되면 코드가 5배 더 빠릅니다.

주의
병렬 처리를 활성화하면 더 많은 스레드가 사용됨에 따라 메모리 사용량이 증가한다는 점에 유의하십시오. 메모리 사용량을 줄이려면 Tensorflow 대신 OpenVINO를 사용하는 것이 좋습니다.

 

원문

https://www.doubango.org/SDKs/anpr/docs/Parallel_versus_sequential_processing.html

 

Parallel versus sequential processing — ultimateALPR 3.3.0 documentation

Parallel versus sequential processing The ANPR/ALPR detector uses Convolutional Neural Networks (ConvNet/CNN). The shape for the input layer is [300,300,3] which means height=300, width=300 and NumBytesPerSample = 3 (R, G, B). Any image will be resized to

www.doubango.org

 

728x90
반응형