YOLOv5下载编译运行-口罩检测

目录

一、YOLOv5程序下载

        1. yolov5程序下载

        2.口罩数据集下载 

二、编译运行代码 

        1.使用pycharm打开上面的文件夹 

        2.pycharm训练参数配置 

        3.编译运行

三、使用训练好的模型进行预测

        1. 预测环境配置 

四、训练和预测过程遇到的错误及解决办法

        1. 训练遇到的报错 

        2. 预测编译遇到的错误及解决办法 

        3. 一些其它错误的解决办法 

        4. YOLOv5训练不显示GFLOPs问题



一、YOLOv5程序下载

        1. yolov5程序下载

GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

YOLOv5下载编译运行-口罩检测_第1张图片

      依赖包安装 

     在命令行下进入yolov5目录,执行下面的命令,会把依赖包安装

pip install -r requirements.txt  # install

而我的环境有的依赖包已经安装过,不执行,编译遇到缺少什么,就安装什么 

        2.口罩数据集下载 

 链接:https://pan.baidu.com/s/1RP3wXuQnGsO87JqgK_bK3g 
提取码:j236 
--来自百度网盘超级会员V1的分享 

解压后文件夹如下,标出来的就是数据集,解压下来的yolov5代码是旧版的,不用,只要数据集。 

YOLOv5下载编译运行-口罩检测_第2张图片

将上面两步得到的代码和数据集放到同一个目录 

YOLOv5下载编译运行-口罩检测_第3张图片

二、编译运行代码 

        1.使用pycharm打开上面的文件夹 

YOLOv5下载编译运行-口罩检测_第4张图片

        2.pycharm训练参数配置 

 YOLOv5下载编译运行-口罩检测_第5张图片

上图第2步的参数设置如下

--data
D:/deep_learn/yolov5_20230418/MaskDataSet/data.yaml
--weights
''
--cfg
D:/deep_learn/yolov5_20230418/yolov5-master/models/yolov5s.yaml

 --data   数据集指定, --weights 预训练权重,用单引号‘ ’代码不使用迁移学习,从0开始训练 

-- cfg    模型配置文件,其它参数不设置就使用默认的。

  下图是官方的训练参数配置

YOLOv5下载编译运行-口罩检测_第6张图片

 注意--workers 的default值需要修改为0,否则编译报错。

 YOLOv5下载编译运行-口罩检测_第7张图片

关于编译遇到的报错,在最后有说明 

        3.编译运行

         编译结束后log信息如下,训练好的模型保存在Results saved to runs\train\exp2

   100 epochs completed in 0.167 hours.
Optimizer stripped from runs\train\exp2\weights\last.pt, 14.5MB
Optimizer stripped from runs\train\exp2\weights\best.pt, 14.5MB

Validating runs\train\exp2\weights\best.pt...
Fusing layers... 
YOLOv5s summary: 157 layers, 7015519 parameters, 0 gradients
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 1/1 [00:00<00:00,  1.79it/s]
                   all         29        162      0.878      0.349      0.439      0.211
                  mask         29        142      0.755      0.697       0.72      0.342
               no-mask         29         20          1          0      0.159     0.0807
Results saved to runs\train\exp2

三、使用训练好的模型进行预测

        1. 预测环境配置 

 YOLOv5下载编译运行-口罩检测_第8张图片

参数详细设置

--weights
D:/deep_learn/yolov5_20230418/yolov5-master/runs/train/exp2/weights/best.pt
--source
D:/deep_learn/yolov5_20230418/yolov5-master/data/images

 预测时指定使用训练好的模型路径和待预测的图像数据

   待预测的图像如下 

YOLOv5下载编译运行-口罩检测_第9张图片

预测结果如下

YOLOv5下载编译运行-口罩检测_第10张图片

四、训练和预测过程遇到的错误及解决办法

        1. 训练遇到的报错 

使用train.py报错使用
1.
requirements: YOLOv5 requirement "gitpython" not found, attempting AutoUpdate...
requirements:  AutoUpdate skipped (offline)
Traceback (most recent call last):
  File "D:\deep_learn\yolov5_20230418\yolov5-master\train.py", line 67, in 
    GIT_INFO = check_git_info()
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\contextlib.py", line 75, in inner
    return func(*args, **kwds)
  File "D:\deep_learn\yolov5_20230418\yolov5-master\utils\general.py", line 359, in check_git_info
    import git
ModuleNotFoundError: No module named 'git'
解决办法:pip install gitpython

2. 
  Traceback (most recent call last):
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\git\__init__.py", line 89, in 
    refresh()
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\git\__init__.py", line 76, in refresh
    if not Git.refresh(path=path):
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\git\cmd.py", line 392, in refresh
    raise ImportError(err)
ImportError: Bad git executable.
解决办法:按照报错所在文件,在执行git代码前面添加下方代码
  os.environ['GIT_PYTHON_REFRESH'] = 'quiet'
例子:
如:os.environ['GIT_PYTHON_REFRESH'] = 'quiet'  #添加代码
    if not Git.refresh(path=path):
        return
		
3.
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\torch\__init__.py", line 129, in 
    raise err
OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\torch\lib\cufft64_10.dll" or one of its dependencies.
解决办法
   修改train.py中配置项workers的默认值,从初始值8修改为0(也可以试试1或2等较小的数)。

        2. 预测编译遇到的错误及解决办法 

使用detect.py报错
1.
  File "D:\deep_learn\yolov5_20230418\yolov5-master\utils\dataloaders.py", line 22, in 
    import psutil
ModuleNotFoundError: No module named 'psutil'
解决办法:
pip install psutil

2.
  File "D:\deep_learn\yolov5_20230418\yolov5-master\utils\plots.py", line 18, in 
    import seaborn as sn
ModuleNotFoundError: No module named 'seaborn'
解决办法:
pip install seaborn

 这就是缺少什么就安装什么

        3. 一些其它错误的解决办法 

编译报错
File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\torch\nn\modules\activation.py", line 472, in forward
    return F.hardswish(input, self.inplace)
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\torch\nn\modules\module.py", line 1207, in __getattr__
    raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'Hardswish' object has no attribute 'inplace'

修改代码
    def forward(self, input: Tensor) -> Tensor:
#        return F.hardswish(input, self.inplace)   #原来的代码
         return F.hardswish(input)                 #修改后的代码


训练报错

File "D:\BaiduNetdiskDownload\YOLO5\yolov5-master\models\yolo.py", line 150, in _initialize_biases
    b[:, 4] += math.log(8 / (640 / s) ** 2)  # obj (8 objects per 640 image)
RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.

修改
  for mi, s in zip(m.m, m.stride):  # from
            b = mi.bias.view(m.na, -1)  # conv.bias(255) to (3,85)
            with torch.no_grad():  #报错,增加这个代码
                 b[:, 4] += math.log(8 / (640 / s) ** 2)  # obj (8 objects per 640 image) #缩进
                 b[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) #缩进  # cls
            mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True)

报错
 File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\numpy\__init__.py", line 305, in __getattr__
    raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'int'.

原因:numpy.int在NumPy 1.20中已弃用,在NumPy 1.24中已删除。

解决方式:将numpy.int更改为numpy.int_,int。

方法:点击出现错误代码链接会自动跳转到相应numpy.int的位置

File "D:\BaiduNetdiskDownload\YOLO5\yolov5-master\utils\datasets.py", line 406, in __init__
    self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride
  File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\numpy\__init__.py", line 305, in __getattr__
    raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'int'.
修改
#            self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride
             self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int_) * stride
 所有的np.int 改为  np.int_
 
报错 
TypeError: No loop matching the specified signature and casting was found for ufunc greater
    报错那一行,把dtype=np.float64,去掉。

报错
File "D:\SoftInstall\Anaconda\envs\openmmlab\lib\site-packages\torch\_tensor.py", line 757, in __array__
    return self.numpy()
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

意思是:如果想把CUDA tensor格式的数据改成numpy时
,需要先将其转换成cpu float-tensor随后再转到numpy格式。 numpy不能读取CUDA tensor 需要将它转化为 CPU tensor

   #            return self.numpy()   #原来的代码
            return self.cpu().numpy()   #修改后代码

        4. YOLOv5训练不显示GFLOPs问题

 安装pip install thop ,训练时就会看到GFLOPs


 

你可能感兴趣的:(YOLO目标检测,YOLO,pytorch,深度学习)