栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

YOLOX从训练到NCNN部署全流程(2)——代码训练

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

YOLOX从训练到NCNN部署全流程(2)——代码训练

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包

YOLOX从训练到NCNN部署全流程(2)——代码训练
  • 1、下载代码
    • 官网下载
    • 大佬Pytorch复现版
  • 2、安装依赖包
    • 激活yolox环境
    • 安装依赖
  • 3、自制数据集准备
  • 4、主要参数解析
  • 5、模型训练

1、下载代码 官网下载 大佬Pytorch复现版

   这里使用的是大佬Pytorch复现版,因为代码中有大量的注释,可读性极高,有利于小白学习。
代码文件组织结构如下:

2、安装依赖包 激活yolox环境
conda activate yolox
安装依赖
cd path/to/yolox
pip install requirements.txt
3、自制数据集准备

   训练自己的模型首先需要准备自己的数据集,使用labelimg对图片进行标注,得到voc格式的标签文件,然后将标注好的数据放到指定的文件夹中。输入图片为jpg图片,无需固定大小,传入网络前会先进行resize。灰度图也会转成RGB图片进行训练,无需提前修改。代码目录如下图所示:

   将图片放在VOCdevkitVOC2007JPGImages文件夹中,将xml文件放在VOCdevkitVOC2007Annotations文件夹中。
   然后在model_data目录下创建一个txt文件,在文件中输入自己所要检测的类别名

   打开voc_annotation.py文件,将classes_path改成刚创建的txt文件路径,并设置 train:val:test 的比例,然后运行voc_annotation.py,即可生成相应需要的txt文件。至此,数据集就算准备好了。

4、主要参数解析

   打开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'      #   获得图片路径和标签

需要注意的是:

  1. input_shape一定要设置为32的倍数,这是由网络本身决定的,也可以不是正方形,但是为了部署方便最好设为正方形;
  2. 若显存不够,则将batch_size设置更小一点,但不能小于2;
  3. 若内存不够,则将num_works设置更小一点,甚至可以设置为0;
5、模型训练

   以yolox_nano为例,下载预训练模型yolox_nano,并将yolox_nano.pth文件放在model_data文件夹中。(注意:参数model_path 就是填这个文件的相对路径)
预训练模型
把train.py脚本中的参数设置完后,就可以开始训练我们的模型了

python train.py

写博客不易,看官给个赞再走呗,哈哈哈哈!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号