windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结

我主要是使用YOLO V3训练粮虫的自制数据集,该文主要是记录自己在复现YOLO V3中的疑问和程序运行的问题,并记录一下。

目录

  • 1.制作数据集时,图片是否非要按照程序中要求的416*416进行制作?
  • 2.YOLO V3中train.py文件中的main函数中,input_shape=(41.6,416),自己的数据集的图片大小不是这个,需要修改吗?
  • 3.训练模型完成,最后模型保存时出现错误
  • 4.在运行train.py训练自己的数据集时,第一次运行报错,报错信息为:Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED
  • 5.继上面的问题之后,报错信息failed to allocate ***G (**bytes) from device:CUDA_ERROR_OUT_OF_MEMORY
  • 6.训练之后,需要进行模型验证,步骤如下
  • 总结

1.制作数据集时,图片是否非要按照程序中要求的416*416进行制作?

根据我目前的自制数据集并程序运行来看,不需要图片按照特定大小,但是数据集中的图片大小尽量一致,图片大小不要太大,不然会造成运行速度慢,我的数据集中图片大小为640*480.

2.YOLO V3中train.py文件中的main函数中,input_shape=(41.6,416),自己的数据集的图片大小不是这个,需要修改吗?

不需要修改,数据集制作好了就可以跑train.py进行训练了,我使用的train.py不是原版程序中的,使用的是https://blog.csdn.net/Patrick_Lxc/article/details/80615433,这个博主提供的文件,亲测能用,但是需要进行修改,后面会进行修改。

3.训练模型完成,最后模型保存时出现错误

一定要在工程目录中创建logs文件夹,在文件加中创建000文件夹,不然花了好多训练的模型,最后保存时出现这个错误,白白浪费了时间,所以在训练前,一定要提前创建好模型保存的文件夹
windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第1张图片

4.在运行train.py训练自己的数据集时,第一次运行报错,报错信息为:Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED

这是使用keras-gpu版本训练时会遇见的问题,使用cpu进行训练时,不会出现这个问题,但是训练的速度很慢,所以根据查找的资料加上,就能解决这个问题了,在train.py开头的位置加上,加上之后如下图所示。

import os
import tensorflow as tf
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第2张图片

5.继上面的问题之后,报错信息failed to allocate ***G (**bytes) from device:CUDA_ERROR_OUT_OF_MEMORY

该问题CUDA_ERROR_OUT_OF_MEMORY出现,代表你的电脑显卡的内存不够,需要你调整batch_size的参数,源代码中batch_size = 32,一直向下调整,最终batch_size = 5时,程序就可以正常运行了,我的 epochs=50,原来是500,我刚开始训练过,发现val_loss下降的很快,所以我就改小到50,但是最终的效果还可以,数据集大小总共为252,测试集和训练集按照0.1和0.9的比例进行分配。

6.训练之后,需要进行模型验证,步骤如下

  1. 经过长时间的模型训练,最终在logs/000/文件夹中生成一个trained_weights.h5,需要把这个文件挪到model_data中,并修改名字为yolo.h5.如下图所示:
    windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第3张图片
  2. 在yolo_video.py程序的开头添加
    import os
    import tensorflow as tf
    os.environ["CUDA_VISIBLE_DEVICES"] = "1"
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
    sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
    
    这段代码和上面的一样,防止出现CUDA_ERROR_OUT_OF_MEMORY,这个报错
  3. 在terminal上输入python yolo_video.py --image,程序会自动运行,中间会有一些FutureWarning,这个不用理会,如下图所示
    windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第4张图片
    4.根据提示,输入图片路径,有两种方式,分别下图所示,然后会出现预测的结果
    windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第5张图片
    windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第6张图片
    最终的预测结果,如下图所示。
    windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结_第7张图片

总结

使用yolo v3训练自己的数据集,目前所遇到的问题已经一一解决,并记录下来,后面还需要继续调整网络结构,使更加符合粮虫的小目标识别目的。

你可能感兴趣的:(windows10+keras-gpu+pycharm使用yolo V3训练粮虫的自制数据集遇到的问题总结)