wudashuo / yolov5

YOLOv5 汉化版,保持官方同步更新
GNU General Public License v3.0
445 stars 100 forks source link

训练出的模型效果不佳 #12

Open jamesbondzhou opened 3 years ago

jamesbondzhou commented 3 years ago

❔Question

我下载的caltech数据集12万张,只检测行人一个类的,然后跑了50个epoch后得到的模型检测时效果不好,想问下我该如何进一步优化呢,是在这个模型的基础上继续加大epoch训练吗还是怎么做呢?求大佬指点一波

Additional context

github-actions[bot] commented 3 years ago

👋 你好 @jamesbondzhou, 如有任何问题,请首先检查你的运行指令有没有问题,如果指令没有问题,请尝试更新作者仓库的最新代码:

  # 如果没下载官方代码
  $ git clone https://github.com/ultralytics/yolov5.git
  $ cd yolov5
  $ pip install -r requirements.txt
  # 如果已下载官方代码
  $ cd yolov5
  $ git reset --hard
  $ git pull
  $ pip install -r requirements.txt

更多请参考⭐️英文官方教程

依赖

Python版本3.6或更高,python依赖库都在requirements.txt 里面,直接pip install -r requirements.txt即可。 如果你使用Windows的话,尽量使用CUDA10.2和对应版本的pytorch,CUDA11+会有些许问题。

环境

下面是已经配置好环境的免费GPU训练环境:

wudashuo commented 3 years ago

加不加epoch你得看你的训练曲线啊,还在上升趋势你就加

jamesbondzhou commented 3 years ago

results

大佬能帮我看看吗,这是最终的训练结果

jamesbondzhou commented 3 years ago

results.txt

wudashuo commented 3 years ago

看你这图,是中间停了又resume了?不要这样,这样会有个大幅下落(跟图中一样)。 而且你这个曲线还没平,还得训,但你别resume训练了,直接从头训练,设一个大的epoch。 你不要吝啬加大epoch啊,100个epoch够干啥的呀,一般都设一个极大值,比如我平常会设1000或者2000,等曲线平了我再手动停,程序会自动保存最好模型的

jamesbondzhou commented 3 years ago

看你这图,是中间停了又resume了?不要这样,这样会有个大幅下落(跟图中一样)。 而且你这个曲线还没平,还得训,但你别resume训练了,直接从头训练,设一个大的epoch。 你不要吝啬加大epoch啊,100个epoch够干啥的呀,一般都设一个极大值,比如我平常会设1000或者2000,等曲线平了我再手动停,程序会自动保存最好模型的

非常感谢您的回答!!! 您说的曲线没平是指precision和Recall的曲线是吗,还有就是单个类的话要训出好的效果mAP0.5:0.95值可以到多少呀,我训了几个都是在0.7左右,epoch都只设了150

wudashuo commented 3 years ago
  1. 你所有的曲线都没平啊,你loss都还在下降,map, recall, precision 都在上升啊。 看下面这张图,mAP基本平行x轴了,loss长时间不下降,验证集loss反而有抬头趋势(过拟合),这时候再停止训练 image

  2. mAP可以到多少跟你数据集难易程度有关系啊,这哪有一个固定的值呢?VOC数据集SOTA的mAP都快到0.9了,COCO的才刚到0.6,比如你让高中生考小学试卷,可以轻轻松松一百分,考大学试卷就完全不会,你现在只问我他考试最多能考多少分,不告诉我他考的什么试、难易水平,我只能说0-100分都有可能。

  3. 你的问题都是最最最基础的简单问题,看得出来你对目标检测和深度学习的了解还比较欠缺,建议你先好好学习一下基础知识,再做工程,不要着急跑程序,不然你会遇到更多的问题