Skip to content

Latest commit

 

History

History

yolox

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

yolox

Input --> Output

Convert

pt --> TorchScript --> pnnx --> ncnn

import os

# 0. 项目下载
os.system("git clone https://github.com/Megvii-BaseDetection/YOLOX.git")

# 1. 模型下载yolox_tiny,yolox_s,yolox_m,yolox_l,yolox_xl,yolox_Darknet53
os.system("wget https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_nano.pth -O yolox_nano.pth")

# 2. pt ---> torchscript
os.system("python3 tools/export_torchscript.py --output-name ts.pt -n yolox-nano -c yolox_nano.pth")

# 3. ts ---> pnnx ---> ncnn
os.system("pnnx ts.pt inputshape=[1,3,416,416] inputshape2=[1,3,640,640]")  # nano 和tiny输入尺寸为416*416.其余为640*640.

生成的param文件里,手动移除Input后面到Contact6层,然后新加一层,最后变为如下效果:

7767517
279 317
Input                    in0                      0 1 in0
YoloV5Focus              focus                    1 1 in0 9

结尾也是一个Contact层,补加一层Permute. 改前:

Concat                   cat_17                   3 1 313 314 315 out0 0=1

改后:

Concat                   cat_17                   3 1 313 314 315 316 0=1
Permute                  Transpose_333            1 1 316 out0 0=1

为什么加这一层?暂不清楚。不加之前输出out0.shape: 8400 85 1 2 原始加上Permute后结果是:85 8400 1 2。 也许不需要这一层处理,但要变更下后处理,个人尝试简单替换w、h是无效的。

Example project

Reference