YOLOX代码、预测(使用摄像头实时预测)及其添加SE注意力前后的实验结果
创始人
2024-02-07 14:28:01
0

1. 代码获取

https://github.com/Le0v1n/ml_code/tree/main/ObjectDetection/YOLOX

如果代码对你有用,请star一下❤️

2. 预测

2.1 图片预测

  1. 下载权值文件:https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
  2. 将权值文件放在weights目录下
  3. 运行以下命令
python tools/demo.py image -n yolox-s -c ./weights/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

之后可以得到图片的结果。

2.2 视频预测

执行的命令进行更改:

python tools/demo.py webcam -n yolox-s -c ./weights/yolox_s.pth --conf 0.25 --nms 0.45 --tsize 640 --device gpu

3. 模型训练 —— 以口罩检测数据集为例

3.1 数据集下载

https://www.kaggle.com/datasets/andrewmvd/face-mask-detection

3.2 数据集处理

  1. 将标签文件夹名改为Annotations
  2. 将图片存放文件夹改名为JPEGImages
  3. 创建文件夹VOCdevkit/VOC2012
  4. 将口罩数据集放到创建的VOC2012文件夹中
  5. 运行get_trainval_test_txt.py文件夹
└─VOCdevkit├─VOC2012├─Annotations├─ImageSets│  └─Main└─JPEGImages

3.3 修改参数(Epoch、WarmUp、Eval_Epoch…)

yolox\yolox\exp\yolox_base.py文件中修改!

4. 实验结果

训练命令:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -b 8 --fp16 -expn maskdataset_pretrained -c weights/yolox_s.pth

其中:

  • -f: 实验配置文件
  • -b: Batch Size
  • --fp16: 是否使用AMP
  • -expn: 本次训练的名称
  • -c: ckpt路径

  • 网络:YOLOX-s
  • Batch Size:8
  • Epoch:100
  • basic_lr_per_img:0.00015625
  • num_classes: 3
  • warmup_epoch: 0
  • min_lr_ratio: 0.05
  • scheduler: yoloxwarmcos -> Cosine
  • EMA: True
  • no_aug_epochs: 15
  • weight_decay: 0.0005
  • momentum: 0.9
  • eval_interval: 1
  • depth: 0.33
  • act: SILU
  • num_workers: 4
  • input_size: (640, 640)
  • test_size: (640, 640)
  • test_conf: 0.01
  • nms_threash: 0.65
  • mosaic_prob: 1.0
  • mixup_prob: 1.0
  • flip_prob: 0.5

4.1 从头开始训练

在这里插入图片描述

很明显模型并没有拟合,不想跑了😂

4.2 迁移学习

  • map_5095: 0.6153292356822907
  • map_50: 0.8694843116680683

在这里插入图片描述
可以看到,添加预训练模型后,模型收敛的确快!

4.3 添加SE注意力机制后

yolox\yolox\models\network_blocks.py中的attention改为True即可开启SE注意力,如下:

        module_list = [Bottleneck(hidden_channels, hidden_channels, shortcut, 1.0, depthwise, act=act, attention=True)for _ in range(n)]
  • map_5095: 0.536522477369094
  • map_50: 0.8082459511249596

在这里插入图片描述
由于100个Epoch使得模型欠拟合,所以添加了SE注意力只能有微小的提升,结果证明并不充分,有条件的可以多训练几次。

5. 总结

  1. YOLOX训练速度的确很慢,原因可能是使用了大量的数据增强方式
  2. YOLOX的backbone和YOLO v5是一样的,因此修改起来比较容易
  3. YOLOX提供了NANO和Tiny规格的模型,因此更有利于模型的部署
  4. YOLOX提供了很多部署方法,如TensorRT

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...