COVID-19를 위한 실시간 AI 기반 안면 마스크 검출기 애플리케이션 구현 by NVIDIA

기업은 직원, 고객 및 커뮤니티가보다 효율적이고 안전하게 이용할 수 있도록 기존 인프라와 프로세스를 지속적으로 점검하고 있습니다. 전염병이 계속되고 있으므로 위험을 완화하기 위해 고급 분석 앱과 서비스를 갖추는 것이 더욱 중요합니다. 공공 안전과 건강을 위해 당국은 COVID-19의 확산을 통제하기 위해 안면 마스크와 덮개 사용을 권장하고 있습니다.

NVIDIA는 의료 시설에서 멀티 모달 AI를 사용하여 스마트 센서의 개발 및 배포를 단순화하는 애플리케이션 프레임 워크이자 파트너 에코 시스템 인 NVIDIA Clara Guardian을 개발했습니다. Clara Guardian은 GPU 가속 애플리케이션 프레임 워크, 툴킷 및 SDK로 구동되는 의료 관련 사전 훈련 된 모델 및 참조 애플리케이션 모음과 함께 제공됩니다. NVIDIA TLT (Transfer Learning Toolkit)를 사용하여 제로 코딩으로 고도로 정확한 지능형 비디오 분석 (IVA) 모델을 개발하고 NVIDIA DeepStream SDK를 사용하여 확장 가능한 다중 플랫폼 비디오 분석을 배포 할 수 있습니다.

이 게시물에서는 TLT를 사용하여 안면 마스크 감지 모델을 훈련시킨 다음 DeepStream SDK를 사용하여 훈련 된 모델의 효율적인 실시간 배포를 수행하는 실험을 보여줍니다. 안면 마스크 감지 시스템은 특히 효과적인 환자 치료를위한 스마트 병원에서 점점 더 중요 해지고 있습니다. 또한 경기장, 공항, 창고 및 보행량이 많고 모든 사람의 건강을 보호하기 위해 안전 규정이 중요한 기타 혼잡 한 공간에서도 중요합니다.

이 포스팅에서는 개발자 레시피만 간략하게 보여 줄 예정입니다예정입니다. NVIDIA는 훈련 된 모델 또는 데이터 세트를 제공하지 않습니다. NVIDIA-AI-IOT / 페이스 마스크 검출 GitHub repo를 사용하여 자신 만의 앱을 구축하기위한 레시피와 펼쳐보기에 액세스 할 수 있습니다.

Transfer Learning Toolkit 및 DeepStream SDK를 사용한 AI 기반 안면 마스크 감지기 데모

 AI 기반 워크 플로 구축으로 문제 극복

임베디드 시스템에서 실시간 정확한 딥 러닝 애플리케이션을 구현하려면 AI 훈련 및 추론 중에 모델을 효과적으로 최적화해야합니다. 여기서 목표는 정확할뿐만 아니라 가볍고 성능이 뛰어난 AI 모델을 엣지에서 실시간으로 추론하는 것입니다. 모델을 잘라 내면 모델의 전체 크기가 줄어들어 성능이 향상됩니다. 이것은 원래 모델에 비해 정확성을 잃지 않고 수행되어야합니다.

모델 최적화의 다음 단계는 부동 소수점을 정수로 변환하는 가중치 양자화입니다. 훈련은 일반적으로 FP32 / 16 정밀도로 수행되지만 추론을 위해 INT8 정밀도로 추론을 실행할 수 있습니다. 이것은 컴퓨팅 리소스가 제한된 에지 장치에 매우 중요합니다. 이것은 훈련 중 또는 훈련 후 수행됩니다. TLT는 양자화 인식 훈련 (QAT) 및 훈련 후 양자화 (PTQ) 옵션을 모두 제공합니다.

마지막으로 추론 처리량을 최대화하려면 메모리 복사본을 최소화하고 모든 하드웨어 가속을 사용하며 추론을 위해 TensorRT를 사용하여 스트리밍 비디오 데이터를 효율적으로 처리해야합니다.

NVIDIA TLT (Transfer Learning Toolkit) 및 NVIDIA DeepStream SDK는 딥 러닝 모델 구축 및 배포와 관련된 복잡성을 추상화합니다. 이 엔드 투 엔드 파이프 라인은 실시간 AI / DL 애플리케이션을 배포하는 전체 시간을 줄이는 데 도움이됩니다. TLT 및 DeepStream은 컨테이너화되어 있으므로 추론을 위해 CUDA, cuDNN, Deep Learning 프레임 워크 (TensorFlow, Keras 또는 PyTorch) 또는 TensorRT를 설치할 필요가 없습니다. 이 게시물에서는 머신에서 컨테이너를 사용하는 방법과 NVIDIA-AI-IOT / face-mask-detection GitHub 오픈 소스 리포지토리에서 명령을 제공하는 방법에 대해 설명합니다.

TLT 및 DeepStream을 사용하려면 전이 학습, 가지 치기, 양자화 등과 같은 모든 개념을 반드시 깊이 알아야하는 것은 아닙니다. 이러한 간단한 툴킷은 복잡성을 추상화하여 애플리케이션에 집중할 수 있도록합니다.

TLT는 일반적으로 사용되는 약 13 개의 이미지 분류 모델과 13 개의 분류 모델을 모두 백본으로하는 6 개의 객체 감지 모델과 같은 다양한 사전 훈련 된 모델을 제공합니다. 사용 가능한 사전 훈련 된 모델에 대한 자세한 내용은 여기를 참조하십시오. 정확성과 복잡성 (추론 FPS) 간의 균형을 기반으로 이러한 모델을 사용할 수 있습니다. 이 실험에서는 ResNet-18 백본과 함께 DetectNet_v2를 사용합니다.

AI 기반 안면 마스크 감지

개발자 레시피는 사전 학습 된 모델을 다운로드하고 데이터 세트를 다운로드하여 TLT와 함께 사용할 KITTI 형식으로 변환하는 고급 워크 플로를 보여줍니다. 양자화 된 TLT 모델은 DeepStream SDK를 사용하여 마스크 된 얼굴과 마스크없는 얼굴을 감지하는 데 배포됩니다.

Learning Toolkit Workflow 전송

TLT 워크 플로우에는 사전 훈련 된 모델 다운로드, 데이터를 KITTI 형식으로 변환, 모델 정리가 포함됩니다.

사전 훈련 된 모델 다운로드

TLT는 NVIDIA NGC에서 이미지 분류, 인스턴스 분할 및 객체 감지를위한 사전 훈련 된 모델을 제공합니다. TLT는 선택한 모델을 다운로드 할 수있는 간단하고 직관적 인 명령 줄 인터페이스를 제공합니다. 또한 사람 수를 계산하고 톨게이트 및 교통 교차로에서 차량을 식별하는 등 널리 사용되는 사용 사례를 위해 PeopleNet, TrafficCamNet, DashCamNet, FaceDetect-IR, VehicleTypeNet 및 VehicleMakeNet과 같은 특수 제작 된 프 루닝 된 모델을 제공합니다.

데이터 세트를 KITTI 형식으로 변환

객체 감지 모델의 경우 입력 이미지와 레이블은 KITTI 주석 형식이어야하며 모든 입력 이미지는 동일한 크기 여야합니다 (즉, 다중 해상도는 허용되지 않음). 이 게시물에서 참조한 GitHub 리포지토리에서 공개적으로 사용 가능한 4 가지 데이터 세트 크기 (FDDB, WiderFace, MaFA 및 Kaggle Medical Mask Dataset)에 대한 KITTI 형식 변환 스크립트를 제공했습니다. NVIDIA-AI-IOT / face-mask-detection GitHub 저장소에서 얻을 수 있습니다.

모델 학습 및 정리

입력 데이터가 처리 된 후 다운로드되고 사전 훈련 된 모델을 사용하여 전이 학습을 수행합니다. 모델 정리는 모델 매개 변수를 줄일뿐만 아니라 경우에 따라 과적 합을 줄이는 데 도움이됩니다. 정리되지 않은 모델에 비해 더 나은 정확도를 제공하고 추론 성능을 향상시킵니다. 모델 프 루닝은 임베디드 플랫폼에서 크고 복잡한 객체 감지 모델을 실행하기위한 중요한 작업으로 간주 될 수 있습니다. 자세한 내용은 NVIDIA Transfer Learning Toolkit을 사용한 프 루닝 모델을 참조하십시오.

그림 2는 안면 마스크 감지 애플리케이션의 전체 처리량에 대한 가지 치기의 효과를 보여줍니다.

프루닝 된 모델에 대해 만족스러운 정확도를 달성하면 배포 할 준비가 된 것입니다. 최상의 성능을 위해 FP16 또는 INT8 형식으로 배포하는 것이 좋습니다. NVIDIA Jetson AGX Xavier 및 Jetson Xavier NX는 GPU 및 NVIDIA Deep Learning Accelerator (NVDLA)에 INT8 정밀도를 사용할 수 있도록합니다. INT8 정밀도의 경우 tlt-export는 양자화 오류로 인한 정보 손실, 즉 FP32에서 INT8로 이동하는 데 사용되는 보정 파일을 생성합니다.

또한 테스트 이미지에서 평가 된 출력 및 TensorRT 배포 출력을 시각화 할 수 있도록 시각화 기능을 제공합니다.

Deep Stream을 사용한 실시간 배포

DeepStream SDK를 사용하면 최고의 처리량을 위해 실시간 비디오 분석 파이프 라인을 구축하고 배포 할 수 있습니다. TLT에서 인코딩 된 TLT 모델 파일 (.etlt)로 모델을 내 보낸 후 tlt-converter를 사용하여 모델을 TensorRT 엔진 파일로 변환하고 NVIDIA Jetson 플랫폼에 배포 할 수 있습니다. 생성 된 TensorRT 엔진은 DeepStream SDK에 대한 입력으로 사용할 수 있습니다. 또는 DeepStream에서 직접 .etlt 모델을 사용할 수도 있습니다.

GitHub 리포지토리에서는 추론을위한 비디오 분석 파이프 라인 및 TensorRT 통합을 활용할 수 있도록 딥 스트림 앱에 대한 입력을 설정하는 구성 파일을 제공합니다. Jetson에 저장된 카메라 입력 및 비디오 파일에 따라 구성 파일을 업데이트하는 방법을 더 잘 이해하기 위해 deepstream-app에 대해 두 가지 구성 파일을 제공합니다.

결과 및 추론

표 1은 Jetson Nano, Jetson Xavier NX 및 Jetson AGX Xavier에서 DeepStream SDK를 사용한 추론 성능을 보여줍니다. 모든 결과는 ResNet-18 모델을 백본으로 사용하는 NVIDIA DetectNet_v2 객체 감지 모델과 960 × 544 (너비 x 높이)의 입력 이미지 해상도를 사용한 것입니다.

이 개발자 레시피에서는 마스크가없는 얼굴에 대한 FDDB 및 WiderFace 데이터 세트와 마스크가있는 얼굴에 대한 MaFA 및 Kaggle Medical 마스크 데이터 세트의 27,000 개 이미지에 대한 훈련 정확도 성능을 보여 주기로했습니다. 또한 마스크가없는 얼굴에 대해 WiderFace 데이터 세트에서 체리 픽 이미지를 사용하고 마스크가있는 얼굴에 대해 전체 FDDB 및 Kaggle Medical Mask 데이터 세트를 사용하여 4,000 개 이미지에 대한 성능을 보여줍니다.

우리의 실험은 더 적은 수의 이미지를 사용하여 마스크없이 얼굴에서 더 나은 정확도를 얻을 수 있음을 보여주었습니다. WiderFace 데이터 세트에는 사람이 카메라에서 약 25 피트 떨어져 있고 다양한 카메라 관점에서 다양한 데이터 포인트가 포함됩니다. 이러한 데이터 세트로 추가 실험을 수행하고 더 나은 결과를 얻으려고 노력하는 것이 좋습니다.

Dataset sizemAP (Mask/No-Mask) (%)
27K78.98 (91.77, 66.19)
4K86.12 (87.59, 84.65)

Table 1. 데이터 세트 사용과 관련된 훈련 정확도 평가, 실험은 배치 크기 = 16으로 실행되었습니다.

표 2는 TLT 가지 치기 및 재교육 방법론의 효과를 보여줍니다. 표에서 탐지기의 정확도가 1 % 미만으로 감소 함을 알 수 있습니다. 그러나 애플리케이션 FPS는 엄청나게 향상됩니다. 표 2의 결과는 표 1의 4K 이미지에 대해 학습 된 모델을 사용하여 생성됩니다. 잘라 내기 비율은 잘라낸 모델 크기와 원래 모델 크기의 비율입니다. 이 실험에서는 모델 크기를 8 배로 줄여 성능이 2 배 이상 향상되었습니다. 실험은 더 적은 수의 이미지를 사용하여 마스크없이 얼굴에서 더 나은 정확도를 얻을 수 있음을 보여주었습니다. WiderFace 데이터 세트에는 사람이 카메라에서 약 25 피트 떨어져 있고 다양한 카메라 관점에서 다양한 데이터 포인트가 포함됩니다. 이러한 데이터 세트로 추가 실험을 수행하고 더 나은 결과를 얻으려고 노력하는 것이 좋습니다.

PrunedmAP
(%)
Inference Evaluations
on Nano

GPU
(FPS)
Inference Evaluations
on Xavier NX

GPU DLA
(FPS) (FPS)
Inference Evaluations
on AGX Xavier

GPU DLA
(FPS) (FPS)
No86.126.5125.36 30.31269.04 61.96
Yes85.5021.25279 116.2508.32 155.5
Table 2. DeepStream SDK를 사용한 엔드 투 엔드 안면 마스크 감지 애플리케이션의 결과입니다.

* 참고 사항

· Jetson Nano의 추론 시간은 FP16 정밀도로보고되는 반면 Jetson AGX Xavier 및 Jetson Xavier NX는 INT8 정밀도로보고됩니다.

· Jetson AGX Xavier 및 Jetson Xavier NX에는 두 가지 DLA (딥 러닝 가속기)가 있습니다. 한 DLA에서 추론을 실행하는 동안 GPU 및 다른 DLA는 무료이므로 이러한 하드웨어 리소스를 사용하여 다른 애플리케이션을 실행할 수 있습니다.

· DeepStream의 추론 시간은 각 스트림이 약 30FPS (실시간)로 실행되는 동안 측정되었습니다. 예를 들어, 두 번째 행에서 Jetson Xavier NX GPU의 프 루닝 된 모델에는 각 스트림 34.8FPS에서 9 개의 입력 스트림이 있고 각 스트림 38.6FPS에서 3 개의 입력 스트림이있는 DLA가 있습니다.

모델 제한

· 모델 정확도는 5 피트 떨어진 라이브 카메라 피드에서 테스트되었습니다. 10 피트 및 15 피트에서 모델 정확도를 평가하지 않았습니다.

· 카메라는 4 ~ 7 피트 거리에 설치해야합니다. 내려다 보는 카메라 관점은 테스트되지 않았습니다.

· 데이터 세트는 주로 수술 용 마스크로 구성되어 있으므로 다른 마스크에 대한 정확도는 약간 낮습니다.

출처 : NVIDIA

Leave a Reply