YOLOX目标检测算法笔记
一、目标检测基础知识
-
目标检测—常用数据集
以这两种数据集比赛的推广,以此产生了对目标检测算法评价的一些类评价标准(AP/mAP),对不同工程师所训练出的模型有着较好且权威的评价指标


-
目标检测—性能指标

loU与Precision,Recall与AP,mAP的关系:
https://blog.csdn.net/qq_36523492/article/details/108469465
二、环境的安装
(参考:https://blog.csdn.net/qq_44442727/article/details/119923070)
- 下载与安装Nvidia显卡驱动

NVIDIA 驱动下载:https://www.nvidia.cn/Download/index.aspx?lang=cn
下载对应你的英伟达显卡驱动。



-
下载并安装CUDA
如果你知道所需安装的环境的CUDA版本,可以根据cuda去找合适的显卡驱动,CUDA与显卡驱动对应关系如下:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-resolved-issues


-
下载并安装cuDNN

安装成功:

-
安装Anaconda
配置Anaconda国内镜像

-
安装pytorch
查看Anaconda中安装的python版本(注意是在Anaconda的小黑窗,而不是Windows)

创建虚拟环境mypytorch
conda create -n mypytorch python=3.8激活虚拟环境
conda activate mypytorch
在所创建的mypytorch环境下安装pytorch, 执行命令:
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
三、克隆与安装YOLOX
-
从GitHub上克隆YOLOX
https://blog.csdn.net/t18438605018/article/details/123600432?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-123600432-blog-124913407.pc_relevant_antiscanv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-123600432-blog-124913407.pc_relevant_antiscanv3&utm_relevant_index=9
(建议开代理服务器进行clone)



python setup.py develop
- 安装pycocotools:
在base环境下存在cython,但在虚拟环境mypytorch环境下无法安装cython(以为虚拟环境中已经由cython)
https://blog.csdn.net/HUAI_BI_TONG/article/details/121742941
pip install cython
cd pycocotools/PythonAPIpython setup.py install --user
最后发现cython在虚拟环境中是没有安装的
报错原因:虚拟环境与base环境的pip版本不同


解决方法:
https://blog.csdn.net/qq_36622009/article/details/118820577(不使用这种方式可能会导致虚拟环境pip环境变量出现问题)
若重装pip后版本还是不一致,升级pip(同一时间结点版本相同)
python -m pip install --upgrade pip注意:
(1)pip无论在什么路径,安装到的路径默认都是https://blog.csdn.net/Gabriel_wei/article/details/108495843?utm_term=pip%E5%AE%89%E8%A3%85%E9%83%BD%E5%AE%89%E8%A3%85%E5%88%B0%E4%BA%86%E5%93%AA%E9%87%8C&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-1-108495843-null-null&spm=3001.4430
(2)虚拟环境在anaconda位置(不同环境下所安装的内容是不同的,例如base与虚拟环境lib包下是不一样的)
-

安装成功:


-
测试YOLOX:
在YOLOX目录下创建weights文件夹,并将权重文件导入

python tools/demo.py image -f exps/default/yolox_s.py -c weights/yolox_s.pth --path assets/dog.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result


疑问:
(1)不同权重文件识别出来的效果不同,权重文件的作用?

(2)为什么没有经过训练,却能够正确识别出?
查看各类配置后发现其实YOLOX种内置训练了20种类别的物体,故能够识别
四、数据集的标注
-
从GitHub上下载labelImg
git clone https://github.com/tzutalin/labelImg E:\AI\lableImg -
启动lableImg
python labelImg.py
注意:
这是在base的环境下安装的lableImg,后续启动lableImg只能在base环境下启动
六、训练模型
https://blog.csdn.net/weixin_43720225/article/details/124271531
- 训练命令

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 16 --fp16 -o -c weights/yolox_s.pth
训练时遇到的错误:

查看了相关资料后:发现问题出在安装的pytorch是CPU版本的
https://blog.csdn.net/xiangduixuexi/article/details/107580108
查看pytorch是CPU版还是GPU版方法:
https://blog.csdn.net/m0_46653437/article/details/109575389?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109575389-blog-122806037.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-109575389-blog-122806037.pc_relevant_paycolumn_v3
https://blog.csdn.net/xinjieyuan/article/details/105100015?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-2-105100015-null-null.pc_agg_new_rank&utm_term=%E6%80%8E%E4%B9%88%E7%9C%8B%E5%AE%89%E8%A3%85%E7%9A%84pytorch%E6%98%AFcpu%E8%BF%98%E6%98%AFGPU&spm=1000.2123.3001.4430

解决方案:
https://blog.csdn.net/qq_36918406/article/details/123849978?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-2-123849978-null-null.pc_agg_new_rank&utm_term=%E5%AE%89%E8%A3%85gpu%E7%9A%84pytorch%E4%B9%8B%E5%89%8D%E8%A6%81%E5%8D%B8%E8%BD%BDcpu%E7%89%88%E6%9C%AC%E7%9A%84pytorch%E5%90%97&spm=1000.2123.3001.4430

https://blog.csdn.net/weixin_43094275/article/details/107393385
还是错误,最终为了防止不必要的麻烦,先卸载CPU版的pytorch,后用pip安装GPU版的pytorch
pip install torch==1.10.2+cu102 torchvision==0.11.2+cu102 torchaudio===0.10.1+cu102 -f https://download.pytorch.org/whl/torch_stable.html

卸载后用conda list命令发现还是存在pytorch的内容
https://blog.csdn.net/qq_43550820/article/details/123708474?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-123708474-blog-123685177.pc_relevant_multi_platform_whitelistv1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-123708474-blog-123685177.pc_relevant_multi_platform_whitelistv1
但pytorch官网又没有下载连接

最后采用离线安装
https://blog.csdn.net/weixin_45800887/article/details/123632809
https://blog.csdn.net/HuangJM3/article/details/123685177?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-123685177-null-null.pc_agg_new_rank&utm_term=%E5%AE%89%E8%A3%85gpu%E7%9A%84pytorch%E4%B9%8B%E5%89%8D%E8%A6%81%E5%8D%B8%E8%BD%BDcpu%E7%89%88%E6%9C%AC%E7%9A%84pytorch%E5%90%97&spm=1000.2123.3001.4430
https://blog.csdn.net/qq_42249466/article/details/121771957?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121771957-blog-124276134.pc_relevant_downloadblacklistv1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121771957-blog-124276134.pc_relevant_downloadblacklistv1
离线包下载地址:
https://download.pytorch.org/whl/torch_stable.html(需挂代理下载,要不然速度很慢)
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
pip安装的是否因为开了代理服务器,没法安装离线的pytorch包
https://blog.csdn.net/Ljh0408abc/article/details/123600526
在离线安装过程中遇到pytorch与YOLOX版本不兼容
https://blog.csdn.net/weixin_45800887/article/details/123632809
最终选用pytorch的版本:

out of memory:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 -c weights/yolox_s.pth
https://blog.csdn.net/universe_R/article/details/124551674
https://blog.csdn.net/qq_40846862/article/details/123961601
更改了batch-size(https://blog.csdn.net/qq_34886403/article/details/82558399)也没什么用
YOLOX batch-size修改:https://blog.csdn.net/qq_40716944/article/details/120409457
https://segmentfault.com/a/1190000041948886?sort=newest
解决方案:
输入这个训练命令:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s_bm.py -d 1 -b 4 -c weights/yolox_s.pth
页面文件太小,无法完成操作(zlt博客有这个错误)

解决方案:
在./yolox/exp目录下,修改yolox_base.py文件:将27行的self.data_num_workers改成0,然后再来输入这个训练命令:
python tools/train.py -f exps/example/yolox_voc/yolox_voc_s_bm.py -d 1 -b 4 -c weights/yolox_s.pth
训练完成:

- Tensorboard可视化时报错:
pkg_resources.DistributionNotFound: The ‘requests<3,>=2.21.0’ distribution was not found and is required by tensorboard
参考:https://blog.csdn.net/m0_65465147/article/details/123741382
解决方案:pip install tensorboard

用TensorBorad所画出的图像

产生疑问:不是以POSCAL VOC格式的图片训练,为什么能够得出COCO数据集评价标准的结果,而不是POSCAL数据集评价标准的结果?
—回顾:

在目标检测—常用数据集中说到COCO数据集的评价标准最为流行,而POSCAL的评价标准现在不是很流行。
在目标检测—性能指标中说到COCO数据集与POSCAL数据集的评判标准区别在于AP与mAP的计算公式是不同的

在修改配置文件中提到修改COCO数据集与POSCAL VOC数据集类别内容

且在查看了一些blog后
https://blog.csdn.net/hxxjxw/article/details/107056770
https://blog.csdn.net/weixin_30609287/article/details/94909238?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-94909238-blog-107056770.pc_relevant_antiscanv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-94909238-blog-107056770.pc_relevant_antiscanv3&utm_relevant_index=2
https://blog.csdn.net/weixin_43804047/article/details/120433479
https://blog.csdn.net/threestooegs/article/details/119456267
猜测:
YOLOX中源码基于COCO的评价标准进行计算AP、mAP等,而不是基于POSCAL来计算,故TensorBoard画出的图是COCO的结果(???但当时修改voc_classes.py,感觉可能也以POSCAL计算了)
(后续验证还需要查看源码才能得知)
https://zhuanlan.zhihu.com/p/411045300?utm_medium=social&utm_oi=1041645338595196928
-
训练结果的查看
在所训练的300代记录中,我们可以得到按照COCO数据集判断标准下数据最优(即识别效果最好)的权重文件作为模型识别预测的权重文件,对样品进行识别。

一开始在安装测试这是利用官方提供的预训练权重文件进行试预测

训练与测试都需要权重
七、测试训练出的网络模型
python tools/demo.py image -f exps/example/yolox_voc/yolox_voc_s.py -c YOLOX_outputs/yolox_voc_s/best_ckpt.pth --path testfiles/img1.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device gpu
对比:

https://blog.csdn.net/Yong_Qi2015/article/details/119122229

1942

被折叠的 条评论
为什么被折叠?



