YOLOX从训练到NCNN部署全流程(1)——环境配置
YOLOX从训练到NCNN部署全流程(2)——代码训练
YOLOX从训练到NCNN部署全流程(3)——模型转化与量化
YOLOX从训练到NCNN部署全流程(4)——模型修改
YOLOX从训练到NCNN部署全流程(5)——创建demo工程
YOLOX从训练到NCNN部署全流程(6)——模型部署
YOLOX从训练到NCNN部署全流程(7)——模型部署测试
YOLOX从训练到NCNN部署全流程(8)——生成so库与jar包
YOLOX从训练到NCNN部署全流程(9)——使用so库和jar包
- 1、下载代码
- 官网下载
- 大佬Pytorch复现版
- 2、安装依赖包
- 激活yolox环境
- 安装依赖
- 3、自制数据集准备
- 4、主要参数解析
- 5、模型训练
这里使用的是大佬Pytorch复现版,因为代码中有大量的注释,可读性极高,有利于小白学习。
代码文件组织结构如下:
conda activate yolox安装依赖
cd path/to/yolox pip install requirements.txt3、自制数据集准备
训练自己的模型首先需要准备自己的数据集,使用labelimg对图片进行标注,得到voc格式的标签文件,然后将标注好的数据放到指定的文件夹中。输入图片为jpg图片,无需固定大小,传入网络前会先进行resize。灰度图也会转成RGB图片进行训练,无需提前修改。代码目录如下图所示:
将图片放在VOCdevkitVOC2007JPGImages文件夹中,将xml文件放在VOCdevkitVOC2007Annotations文件夹中。
然后在model_data目录下创建一个txt文件,在文件中输入自己所要检测的类别名
打开voc_annotation.py文件,将classes_path改成刚创建的txt文件路径,并设置 train:val:test 的比例,然后运行voc_annotation.py,即可生成相应需要的txt文件。至此,数据集就算准备好了。
打开train.py文件,对其中的一些参数进行修改后即可运行train.py进行训练。
Cuda = True # 是否使用Cuda,没有GPU可以设置成False classes_path = 'model_data/my_classes.txt' # 修改classes_path,使其对应自己的数据集 model_path = 'model_data/yolox_nano.pth' # 修改model_path,使其对应自己的预训练模型,不使用则设为'' input_shape = [256, 256] # 输入的shape大小,一定要是32的倍数,为了顺利部署,设为正方形尺寸 phi = 'nano' # 所使用的YoloX的版本。nano、tiny、s、m、l、x mosaic = False #马赛克数据增强 True or False Cosine_scheduler = False #余弦退火学习率 True or False #----------------------------------------------------# # 冻结阶段训练参数 # 此时模型的主干被冻结了,特征提取网络不发生改变 # 占用的显存较小,仅对网络进行微调 #----------------------------------------------------# Init_Epoch = 0 Freeze_Epoch = 50 Freeze_batch_size = 32 # 最小为 2 Freeze_lr = 1e-3 #----------------------------------------------------# # 解冻阶段训练参数 # 此时模型的主干不被冻结了,特征提取网络会发生改变 # 占用的显存较大,网络所有的参数都会发生改变 #----------------------------------------------------# UnFreeze_Epoch = 100 Unfreeze_batch_size = 32 Unfreeze_lr = 1e-4 #------------------------------------------------------# Freeze_Train = True # 是否进行冻结训练 num_workers = 4 # 线程数 train_annotation_path = '2007_train.txt' # 获得图片路径和标签 val_annotation_path = '2007_val.txt' # 获得图片路径和标签
需要注意的是:
- input_shape一定要设置为32的倍数,这是由网络本身决定的,也可以不是正方形,但是为了部署方便最好设为正方形;
- 若显存不够,则将batch_size设置更小一点,但不能小于2;
- 若内存不够,则将num_works设置更小一点,甚至可以设置为0;
以yolox_nano为例,下载预训练模型yolox_nano,并将yolox_nano.pth文件放在model_data文件夹中。(注意:参数model_path 就是填这个文件的相对路径)
预训练模型
把train.py脚本中的参数设置完后,就可以开始训练我们的模型了
python train.py
写博客不易,看官给个赞再走呗,哈哈哈哈!!!!



