zoukankan      html  css  js  c++  java
  • 安装yolov5 requirements踩的坑(CPU版本)

    1, 准备工作

    git clone https://github.com/ultralytics/yolov5 # 下载 yolov5 项目
    python3 -c "from yolov5.utils.google_utils import gdrive_download; gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f','coco128.zip')" # 下载官方例子的数据集
    cd yolov5 #进入yolov5 项目文件
    conda install -U -r requirements.txt #安装需求

    2,在安装 requirements的时候狂出错

    2.1 pytorch

      直接用conda install pytorch是不可能安装的了的,你得去pytorch 官网获得下载命令: 

      然并卵,conda install pytorch torchvision torchaudio cpuonly -c pytorch,速度那是相当的慢。找了很多网上的解决办法,清华镜像关掉了,科大镜像也没法用,试了阿里云,还是装不上。各种environment报错,或者各种慢(安装的时候极度崩溃,忘记截屏了)。

      折腾了一整天后还是决定手动下载,可以去清华镜像官网下载,虽然不能直接用镜像,但是安装文件还是一直在更新的,速度飞一般非常赞!

      既然能下载当然是下载最新的1.9.0啦!美滋滋的放到D:Users**anaconda3pkgs文件夹里,开始离线安装 conda install --offline *** 然而,装是装好了,美滋滋要调用的时候开始报错:

        [WinError 126] 找不到指定的模块

       心里哇凉哇凉的又开始找解决办法,有的说没装vc c++,可是我真的装了T_T。有的说要升级conda,于是conda update all, 还是不行。

      最后!!!!!忍痛开始给pytorch降级,查了下载yolov5的requirement文件,好吧,那就擦边吧,

        

      重新去镜像官网下载了

     

      torchvision忘记把降级之前的删了

      再重新安装,于是……

      finally 喜极而泣!

    2.2 又检查了一下,还有thop

      conda install thop 还是不行。有了前面的经验,手动安装(下载地址

      下载最新版后又遇到了问题,有了前面的经验,降级……

      安装的时候又遇到了问题,环境还是不过关?但是用pip安装又没问题,但是!pip安装完用conda list根本看不到,继续网上搜索……终于,这样解决的

      1)先查看虚拟环境名称

        

      2)然后

     

      喜极而泣!!!

    3,用本地摄像头测试一下

    3.1 yolov5s.pt

      将官网yolov5s.pt权重文件下载到yolov5文件夹下,命令:python detect.py --weights yolov5s.pt --source 0

      可以看到自己美美的出现在屏幕上,并且被标注为:person 0.56 ....嗯,郁闷的想哭,我就是半个人么?还是试试5x吧

    3.2 yolov5x.pt

      将官网yolov5x.pt文件下载到yolov5文件夹下,命令:python detect.py --weights yolov5x.pt --source 0,报错了~

       神马叫:Can't get attribute 'SPPF' ?SPPF是神马东东?搜了全网才发现博客https://blog.csdn.net/Steven_Cary/article/details/120886696 的解答,然后孤陋寡闻的我才刚知道权重文件都出到第6版啦?

       

     解决方案是:去Tags6里面的model/common.py里面去找到这个SPPF的类,把它拷过来到你这个Tags5的model/common.py里面,这样你的代码就也有这个类了,还要引入一个warnings包就行了!

     有的同学找不到SPPF这个类,那我现在直接粘贴在这里,你们只需要复制到你们的common.py里面即可,记得把import warnings放在上面去:

    import warnings
    
    class SPPF(nn.Module):
        # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
        def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
            super().__init__()
            c_ = c1 // 2  # hidden channels
            self.cv1 = Conv(c1, c_, 1, 1)
            self.cv2 = Conv(c_ * 4, c2, 1, 1)
            self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
    
        def forward(self, x):
            x = self.cv1(x)
            with warnings.catch_warnings():
                warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
                y1 = self.m(x)
                y2 = self.m(y1)
                return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

      亲测可用,美美的我终于变成 person 0.95了,但实时性实在是比5s差很多

      终于有篇原创的博客了哈哈哈

  • 相关阅读:
    Spring定时任务注解实现定时清空指定文件夹下的文件
    设计模式之单例模式
    在cmd下使用imp命令导入oracle的dmp文件报错ORA-02304
    多态是什么干嘛的
    qt编辑器的问题
    qt中文格式GBK.UTF-8,unicode 之间的转换
    mysql 安装及设置
    mysql触发器
    转载 java开发基础 https://blog.csdn.net/jiangjiewudi/article/details/9565749
    测试 转载
  • 原文地址:https://www.cnblogs.com/boligongzhu/p/15106780.html
Copyright © 2011-2022 走看看