OS/Orange PI

Orange Pi 5 Pro (RK3588S) : Darknet 가중치로 된 YOLO v3 모델을 ONNX 모델로 변환하기

파란크리스마스 2025. 12. 8. 20:52
728x90

출처

onnx_tflite_yolov3 소스다운로드

orangepi@orangepi-desktop:~$ cd Llama/
orangepi@orangepi-desktop:~/Llama$ source .venv/bin/activate
(.venv) orangepi@orangepi-desktop:~/Llama$ git clone https://github.com/zldrobit/onnx_tflite_yolov3.git
(.venv) orangepi@orangepi-desktop:~/Llama$ cd onnx_tflite_yolov3/

yolov3.cfg 다운로드

(.venv) orangepi@orangepi-desktop:~/Llama/onnx_tflite_yolov3$ wget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg -O yolov3.cfg

yolov3.weights 다운로드

(.venv) orangepi@orangepi-desktop:~/Llama/onnx_tflite_yolov3$ wget https://pjreddie.com/media/files/yolov3.weights -O yolov3.weights

Darknet 가중치로 된 YOLO v3 모델을 ONNX 모델로 변환하기

(.venv) orangepi@orangepi-desktop:~/Llama/onnx_tflite_yolov3$ python detect.py --cfg yolov3.cfg --weights yolov3.weights
Exported graph: graph(%input.1 : Float(1, 3, 416, 416, strides=[519168, 173056, 416, 1], requires_grad=0, device=cpu),
      %module_list.81.Conv2d.weight : Float(255, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=1, device=cpu),
      %module_list.81.Conv2d.bias : Float(255, strides=[1], requires_grad=1, device=cpu),
      %module_list.93.Conv2d.weight : Float(255, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=1, device=cpu),
      %module_list.93.Conv2d.bias : Float(255, strides=[1], requires_grad=1, device=cpu),
      %module_list.105.Conv2d.weight : Float(255, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=1, device=cpu),
      %module_list.105.Conv2d.bias : Float(255, strides=[1], requires_grad=1, device=cpu),
      %onnx::Conv_771 : Float(32, 3, 3, 3, strides=[27, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_772 : Float(32, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_774 : Float(64, 32, 3, 3, strides=[288, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_775 : Float(64, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_777 : Float(32, 64, 1, 1, strides=[64, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_778 : Float(32, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_780 : Float(64, 32, 3, 3, strides=[288, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_781 : Float(64, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_783 : Float(128, 64, 3, 3, strides=[576, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_784 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_786 : Float(64, 128, 1, 1, strides=[128, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_787 : Float(64, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_789 : Float(128, 64, 3, 3, strides=[576, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_790 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_792 : Float(64, 128, 1, 1, strides=[128, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_793 : Float(64, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_795 : Float(128, 64, 3, 3, strides=[576, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_796 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_798 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_799 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_801 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_802 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_804 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_805 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_807 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_808 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_810 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_811 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_813 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_814 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_816 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_817 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_819 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_820 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_822 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_823 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_825 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_826 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_828 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_829 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_831 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_832 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_834 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_835 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_837 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_838 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_840 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_841 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_843 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_844 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_846 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_847 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_849 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_850 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_852 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_853 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_855 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_856 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_858 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_859 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_861 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_862 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_864 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_865 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_867 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_868 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_870 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_871 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_873 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_874 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_876 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_877 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_879 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_880 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_882 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_883 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_885 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_886 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_888 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_889 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_891 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_892 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_894 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_895 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_897 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_898 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_900 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_901 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_903 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_904 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_906 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_907 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_909 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_910 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_912 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_913 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_915 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_916 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_918 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_919 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_921 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_922 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_924 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_925 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_927 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_928 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_930 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_931 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_933 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_934 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_936 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_937 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_939 : Float(512, 1024, 1, 1, strides=[1024, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_940 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_942 : Float(1024, 512, 3, 3, strides=[4608, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_943 : Float(1024, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_945 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_946 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_948 : Float(256, 768, 1, 1, strides=[768, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_949 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_951 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_952 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_954 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_955 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_957 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_958 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_960 : Float(256, 512, 1, 1, strides=[512, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_961 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_963 : Float(512, 256, 3, 3, strides=[2304, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_964 : Float(512, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_966 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_967 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_969 : Float(128, 384, 1, 1, strides=[384, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_970 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_972 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_973 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_975 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_976 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_978 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_979 : Float(256, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_981 : Float(128, 256, 1, 1, strides=[256, 1, 1, 1], requires_grad=0, device=cpu),
      %onnx::Conv_982 : Float(128, strides=[1], requires_grad=0, device=cpu),
      %onnx::Conv_984 : Float(256, 128, 3, 3, strides=[1152, 9, 3, 1], requires_grad=0, device=cpu),
      %onnx::Conv_985 : Float(256, strides=[1], requires_grad=0, device=cpu)):
 
...
 
Namespace(cfg='yolov3.cfg', data='data/coco.data', weights='yolov3.weights', source='data/samples', output='output', img_size=416, conf_thres=0.3, nms_thres=0.5, fourcc='mp4v', half=False, device='', view_img=False)
Using CPU

_io.shape torch.Size([1, 507, 85])
_io.shape torch.Size([1, 2028, 85])
_io.shape torch.Size([1, 8112, 85])
================ Diagnostic Run torch.onnx.export version 2.0.1 ================
verbose: False, log level: Level.ERROR
======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================

확인

(.venv) orangepi@orangepi-desktop:~/Llama/onnx_tflite_yolov3$ ls -al weights/export.onnx
-rw-rw-r-- 1 orangepi orangepi 248218577 12월  9 00:02 weights/export.onnx
728x90