Yolov4-tiny TensorRT(tkDNN빌드 과정)

채마노마노·2021년 5월 24일
0

Vison

목록 보기
4/6

github 주소 : https://github.com/ceccocats/tkDNN

Yolov4-tiny 모델을 tensorRT로 전환해서 사용하려고 하니 본래 사용하던 github에서는 지원이 안돼서 다른 github에서 사용하는 tkDNN모델로 사용하게 됨.

버전과는 상관없이 위의 종속성에 해당하는 종류는 모두 있어야 함

환경 변수

  • CUDA 11.1
  • CUDNN 8.0.1
  • TENSORRT 7.2.2.2
  • OPENCV 3.4.5
  • yaml-cpp 0.5.5 ( sudo apt install libyaml-cpp-dev)

빌드과정

  • $ mkdir build
  • $ cd build
  • $ cmake ..
  • [ 여기서 만약에 에러가 발생한다면 ]
  • vi CMakeLists.txt ( path tkDNN/CMakeLists.txt )
  • 맨위에 추가
set(CUDA_nvinfer_LIBRARY "/usr/local/cuda-11.1/TensorRT-7.2.3.4/lib/libnvinfer.so")
set(NVINFER_INCLUDES "/usr/local/cuda-11.1/TensorRT-7.2.3.4/include")
set(CUDA_cublas_device_LIBRARY "/usr/local/cuda-11.1/lib64/libcublas.so")

esc + wq! (vi 종료)
다시 진행

  • $ cmake ..
  • $ make -j 8 ( 8은 cpu thread 갯수 )
  • 빌드 완료

Custom dataset으로 trt변환후 사용하기
{tkDNN}/tests/darknet/yolov4tiny.cpp (사용하고자 하는 backbone의 {model}.cpp에서

  • std::string bin_path = "/home/john/PycharmProjects/tkDNN_trt/darknet";
  • std::string cfg_path = "/home/john/PycharmProjects/tkDNN_trt/tests/darknet/cfg/yolo4tiny_fire.cfg";
  • std::string name_path = "/home/john/PycharmProjects/tkDNN_trt/fire.names";
  • std::string wgs_path = bin_path + "/layers";
    이 부분이 맞는지 확인해야 함!

또 {tkDNN}/tests/darknet/cfg/{need_model}.cfg ⇒ 학습 때 사용한 cfg를 복붙해도 됨

  • 이 이후에 다시 빌드하는 과정을 거치면 된다.
  • ./test_{need_model} ⇒ 실행하면 trt가 튀어나옴 (에러시에는 검색하거나 디버그 모드로 다시 실행)
  • ./demo darknet_fp32.rt ../demo/yolo_test.mp4 y

0개의 댓글