1. Make TensorRT Engine

기존 TensorRT 모델에서 engine 모듈을 분리하는데 성공하였다. 자세한 개념은 아래에 정리해두었다.



2. 성능 비교

다음은 Pytorch 모델과 TorchRT 모델, TorchRT Engine 파일의 성능 및 결과를 비교해본 결과이다. 성능은 1초당 연산한 횟수를 기준으로 하였으며 tqdm을 사용하였다. 해당 모델은 4개의 모델을 Blending 시켜놓은 멀티모델이므로, 모델당 2개씩 총 8개의 Output이 나와야한다. 또한, 우리가 필요한 Output은 2번 index에 존재한다.

2-1) Pytorch Model

  • Output Length = 8

  • Output[2]

tensor([[-3.1196, -1.1848,  0.9928, -2.4853]], device='cuda:0')
  • 성능


2-2) TensorRT Model

  • Output Length = 8

  • Output[2]

tensor([[-3.1207, -1.1842,  0.9931, -2.4848]], device='cuda:0')
  • 성능


2-3) TensorRT Engine

  • Output Length = 8

  • Output[2]

[0. 0. 0. 0.]
  • 성능



3. 결과

Pytorch -> TensorRT에는 눈부신 성능 향상이 있었지만, TensorRT -> TensorRT Engine에는 별다른 성능 향상은 존재하지 않았다. 또한, TensorRT Engine은 Output값이 이상하게 나왔는데, 해당 모델이 멀티모델이기 때문에 제대로 컨버팅이 되지 않았기 때문이라고 한다. 따라서 그냥 TensorRT 모델을 사용하면 될 것 같다.



4. 추가목표

현재 ARM 아키텍쳐와 x86에서 사용하는 투기감지 모델이 TensorRT가 아니라 yolov5로 돌고 있다고 한다. 그래서 현장 그래픽카드 온도가 70~80도까지 올라가서 그래픽카드 교체 시기가 짧아지고 있다고 하셨다. 따라서 다음과 같은 작업을 지시받았다.

  1. 현장 투기 감지 모델을 TensorRT 모델로 컨버팅하기

  2. 현장 투기 감지 코드에 객체/skeleton ssd모델 녹이기

    투기 감지 모델은 객체/skeleton ssd모델의 output값에 영향을 받는다. yolov5에도 객체 감지 기능이 있긴 한데 약하므로 ssd 모델을 녹여주자.

댓글남기기