[rapa3기][3조][운행정보를 활용한 운전 습관 개선 시스템 개발] tcnnapp사용에 필요한 yolov8n모델 onnx파일 변환에 관하여 질문 드립니다

안녕하세요, 사전에 커스텀 데이터셋 이용하여 학습한 yolov8n 모델을 이용하여 tcnnapp을 통해 AI-G 보드에서 객체 인식 관련 개발을 진행 중 입니다.
다만 기존에 생성해둔 .pt 파일 및 .onnx파일을 enlight로 변환하는 것 까지는 진행하였으나, 해당 모델로 추론을 진행했을 때 추론 성능이 매우 안 좋아서, 변환이 잘 진행되지 않은 것 같습니다.

이와 관련해서 여쭙고 싶은 사항이 있습니다.

관련 문서를 보면, 객체 탐지 모델의 경우 convert단계에서 incompatible한 layer는 extract하고 추출된 enlight파일에 --obj 옵션을 인가 하여 --add-detection-post-process 옵션을 넣어야 하는 것으로 이해하였습니다. 그런데 해당 옵션에 첨부할 파일을 어떻게 생성해야 하는 것인지 궁금합니다.

변환 시 사용한 명령어는 다음과 같습니다.

python ./EnlightSDK/converter.py   ./traffic_networks/best_480_3.onnx   --type unknown   --dataset Custom   --dataset-root ./traffic_images/train/   --output ./output_networks/traffic_yolov8n_2.enlight   --enable-track   --mean 0 0 0   --std 0.0039215 0.0039215 0.0039215   --force-output   "Conv2d_41___model_22_cv2_0_cv2_0_2_Conv"   "Conv2d_42___model_22_cv3_0_cv3_0_2_Conv"   "Conv2d_52___model_22_cv2_1_cv2_1_2_Conv"   "Conv2d_53___model_22_cv3_1_cv3_1_2_Conv"   "Conv2d_61___model_22_cv2_2_cv2_2_2_Conv"   "Conv2d_62___model_22_cv3_2_cv3_2_2_Conv" --num-class 3

안녕하세요 TOPST매니저입니다.
type옵션은 후처리 타입을 어떤 타입으로 결정하는 옵션입니다. unknown으로 진행하실 경우 build_network내부에서 custom 타입의 후처리를 선택하여 빌드하게 됩니다. 후처리 빌드 결과물은 net.so이고 해당 파일을 통해 npu앱내부에서 처리하게 됩니다. 기본적인 custom 후처리 파일의 경우 단순하게 출력 텐서를 파악할 수 있도록 출력하는 형태로 제공되고 있어 레이어를 자르신 후 욜로의 텐서들을 모두 출력해야 하기 때문에 성능이 떨어지는것으로 보여지실 수 있습니다.

우선 custom_postproc라고 하는 후처리 타입내에서 자른 레이어의 추가적인 연산을 직접 구현하셔도 괜찮지만, 저희 toolkit에서 yolo 모델에 대한 후처리를 사전에 제공하고 있기 때문에 관련 문서대로 진행하기 위해서 input_network/pytorch_yolo_input_generate_script 디렉터리에 들어가시면
export_yolo_onnx.sh, extract_yolo_onnx.sh, gen_yolo_defaultbox.sh 3가지 스크립트가 준비되어 있습니다. 각각 욜로 모델을 onnx로 변환, 레이어 추출, 박스 파일 생성 기능을 가지고 있습니다. 해당 스크립트는 yolov m 모델을 위해서 만들어진 스크립트 이므로 내부 파일을 수정하셔서 사용하시면 커스텀 학습한 모델도 사용하실 수 있습니다.

참고로 예시용 yolo 모델 변환 명령어는 다음과 같습니다.
python ./EnlightSDK/converter.py ./input_networks/Education/ai_model/yolov8s_extracted.onnx
–type obj \​
–add-detection-post-process ./input_networks/Education/ai_model/yolov8s.bin \​
–dataset Custom \​
–dataset-root my_dataset_path \​
–output ./output_networks/yolov8s.enlight \​
–enable-track \​
–mean 0 0 0 \​
–std 1 1 1 \​
–num-class 80 \​
–yolo-version v8 \​
–enable-letterbox \​
–dfl-reg-max 16 \​
–output-order cl

추가적인 질문이 있으시거나 궁금한 사항이 있으시면 댓글로 남겨주세요!
감사합니다.

답변 감사합니다.
답변해주신 내용 따라서 onnx 변환하여 network object build 까지 마치고 ai-g 보드에서 tcnnapp 구동까지 성공하였습니다.

다만 input을 동영상 혹은 카메라로 줄 때와, 이미지(동영상에서 png파일 추출)로 줄 때의 추론 결과가 너무나도 차이가 납니다.
이걸 tcnnapp의 전처리 코드를 수정 하는 것과 카메라를 교체해보는 것 중에 어떤 것이 가장 효과적일지 궁금합니다.

onnx의 enlight변환시 사용한 명령어는 다음과 같습니다.
python ./EnlightSDK/converter.py ./new_networks/traffic_v8m_modified_extracted.onnx
–type obj
–add-detection-post-process ./input_networks/traffic_v8m_modified_extracted.bin
–dataset Custom
–dataset-root ./traffic_images/cam_image/
–output ./new_networks/traffic_v8m_modified_extracted.enlight
–enable-track
–enable-letterbox
–mean 0 0 0
–std 1 1 1
–num-class 3
–dfl-reg-max 16
–yolo-version v8
–output-order cl

python ./EnlightSDK/quantizer.py
./new_networks/traffic_v8m_modified_extracted.enlight
–output ./output_quantized/traffic_v8m_modified_quantized.enlight

python ./EnlightSDK/compiler.py
./output_quantized/traffic_v8m_modified_quantized.enlight
–th-iou 0.3
–th-conf 0.1

안녕하세요
변환에 사용하신 모델파일과 수정하여 학습한 모델 yaml파일 및 커스텀 학습한 데이터정보(어떤 객체를 인식하는지) 까지 제공해주시면 빠르게 확인이 가능할 것 같습니다.
감사합니다.

안녕하세요
train결과, onnx파일, 학습시 사용한 데이터셋, rtpm으로 test할 때 사용한 영상파일 들 압축한 파일 링크 공유드립니다
IMX219 카메라 특유의 푸른 기를 고려하여 모델 학습시에 반영해보았으나 큰 영향은 없었습니다

traffic_yolov8m_opt2 → yolo모델 학습 결과가 저장된 폴더
real_traffic_sign.mp4 → 실제 신호등 영상
test_imx219_video.mp4 → IMX219 카메라로 촬영한 영상
Traffic light reconizetion.v4i.yolov8.zip → 훈련 데이터셋
traffic_v8m_modified.onnx → 변환에 사용한 onnx

앞선 링크가 잘못되어 제대로 된 링크로 수정하였습니다
감사합니다

안녕하세요.
동영상, 카메라로 입력을 줄때와 이미지를 입력으로 줄때의 추론 결과가 차이가 나시는 걸까요?
압축 파일의 동영상 파일이 열리지 않아 확인 한번 부탁드리며, 이미지 추론 시 결과 화면 캡쳐 부탁드립니다.
또한 모니터의 영상을 카메라로 비추시게 되면 실제 물체를 인식하는게 아니라 성능이 떨어질 수 밖에 없다고 생각됩니다. 이 부분은 테스트 케이스를 수정하시거나 카메라 변경이 효과적일것이라 판단됩니다.
또한 변환 완료하시고 후처리 빌드까지 완료된 모델 파일도 제공해주시면 감사하겠습니다.

안녕하세요.

IMX219로 취득한 영상, 노트북 웹캠으로 취득한 영상으로 비교해본 결과,

ISP기능 유무로 인해 추론 결과에 유의미한 차이가 있음을 확인하였고,

모델 자체에는 이상이 없는 것으로 판단하였습니다.

따라서, 혹시 auto exposure(화이트 밸런스 및 색보정)를 위한 tcc-isp-fw를 제공받을 수 있을지 궁금합니다.

아울러 말씀해주셨던 빌드까지 완료된 모델 파일 링크 올립니다.

안녕하새요, 해당 문의에 답변 드립니다.
auto exposure를 기능하는 tcc-isp-fw는 제공하고 있지 않습니다.
fine tuning을 하여 릴리즈하였고, 그대로 사용하실 수 밖에 없는 점 양해 부탁드립니다.

궁금한 사항이 있는데요, 현재 IMX219를 빌드한 폴더에서 처음 받은 xml 내용 부탁드립니다.
{build_dir}/.repo/mainfests/에 있습니다.
또한 IMX219를 통해 얻은 이미지 캡처를 부탁 드립니다.
ISP 적용이 제대로 안되어 색감이 이상하게 나오는지 보려고 합니다.

감사합니다.