前言

       最近在进行一个工程项目,需要使用yolo算法来实现。首先就选择了yolov3来进行demo实现,因为yolov3在YOLO系列中也是非常经典的一个版本。网上有很多环境配置教程,但是很多教程的讲述也是非常片面,前因后果没有交代清楚,导致我们在安装的时候会踩非常多的坑。自己总算流程走通了,这里做一个记录,以供他人参考。

电脑配置

  • CPU:i7-10750H
  • 内存:16G
  • 显卡:GTX1650 4G
  • Anaconda:4.9.2

1.版本问题

    YOLOV3-pytorch使用的是Ultralytics版本,在github上搜索YOLOV3,在搜索的前面几个结果中就可以看到了。Ultralytics版本的YOLOV3可以说是YOLOV3中维护最好的一个版本了。后面的YOLOV5也是这个团队推出来的版本,和YOLOV4相比YOLOV5更加偏工程一些,算法实现的还是相当牛,甚至被广泛的运用在很多商业工程中。把代码拷贝下来,同时可以找到对应权重,进行下载,yolov3s.pt,yolov3m.pt,yolov3l.pt,等,因为后面demo的运行需要用到权重文件,将权重放在yolov3的主目录文件下。

 2.查询cuda和可以安装的torch版本

     查询自己的机器可以使用什么样的cuda版本。本人自己的CUDA版本是11.1,对于CUDA10.2和CUDA10.1版本都可以使用。同时也需要查看一些对应CUDA版本可以使用什么版本的torch。这个百度就可以看到很多了。

 3.Torch和torchvision版本需要对应

a百度可以查看到很多对应版本

b还可以在pytorch官网上查询:在官网界面

这里我们就可以看到非常多的对应版本。

4.torch和torchvision的下载网站

下载离线版torch和torchvision我这里采用的是下载离线文件,手动安装的方式,因为这样的=速度快一些 

5.一开始就最好把conda源换成国内源,下载的会更快

查看当前下载源
conda config --show-sources
添加源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
如果出现国内源挂掉的情况,就换回默认源
conda config --remove-key channels

6查看虚拟环境

conda info -e

7新建虚拟环境

conda create -n YOLOV3-Ultralytics python=3.7

8.查看虚拟环境

conda info -e

新建成功。

9.激活虚拟环境

activate YOLOV3-Ultralytics

10.安装torch和torchvision

使用anaconda prompt路径跳转到刚才下载t存放orch和torchvision文件的位置。使用命令

pip install torch......whl

pip install torchvision......whl

11.或者这样直接安装

不下载whl离线文件,直接在线安装,速度有一点慢

conda install pytorch==1.7.1  torchvision==0.8.2 cudatoolkit=10.2

12.验证

python
import torch
#查看版本
print(torch.__version__)
#查看gpu是否可用
torch.cuda.is_available()
#返回Ture就说明GPU版的torch已经安装好了
#返回设备gpu个数
torch.cuda.device_count()

13.安装相关库

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

14.图像检测

python detect.py

 

15.调用摄像头

python detect.py --source 0

遇到报错:

File "D:\BIG-YOLO\YOLOV3\yolov3-master\yolov3-master\utils\datasets.py", line 279, in __init__ 

 if 'youtube.com/' in url or 'youtu.be/' in url:  # if source is YouTube video

TypeError: argument of type 'int' is not iterable

解决办法:

Ultralyticsyolov5-4.0版本中的detect.py和datasets.py来替换yolov3中的相应文件,就可以解决问题。这里的报错就很奇怪,有知道为什么会这个错误的小伙伴欢迎留言进行交流~

过程的其他错误

其他报错1:

File "D:\anaconda\envs\YOLOV3\lib\site-packages\torch\__init__.py", line 81, in <module>

    from torch._C import *

ImportError: DLL load failed: 找不到指定的程序。

解决办法:

如果是,请更新python至少为python3.6.2

conda create -n YOLOV3 python==3.6.5

其他报错2:在新建anaconda虚拟环境的时候报错

An unexpected error has occurred. Conda has prepared the above report.

If submitted, this report will be used by core maintainers to improve

future releases of conda.

Would you like conda to send this report to the core maintainers?

解决办法:conda clean -i

版本试验

对于python、torch、torchvision和CUDA的版本试了多种

python = 3.6.5  torch = 1.8.1   torchvision  = 0.9.1   cuda   10.1   ok

python = 3.7    torch = 1.7.1   torchvision = 0.8.2    cuda  10.2     ok

python  = 3.6.5   torch  =  1.4.0   torchvision = 0.5.0   cuda = 10.1这个版本不行

报错:

ImportError: cannot import name 'amp' from 'torch.cuda'

(D:\anaconda\envs\YOLOV3-Ultralytics\lib\site-packages\torch\cuda\__init__.py)

原因:torch版本太低

结束语

   在github上开源的代码首先是在linux的环境上,有的没有考虑在windows上的环境。所以在windows上的环境开发会遇到一系列问题,会踩很多坑。建议在linux环境上进行开发。环境的配置真是一段血泪史,在不断debug。同时在解决问题的时候也在不但成长。在过程中有多大的困难,最后就会有多大的成就感。欢迎小伙伴一起来交流yolo系列算法,如果觉得本人写的对你有帮助,或者想让小编接着写YOLO系列的文章,帮忙点个赞,小伙伴的认可是小编的动力~

欢迎关注公众号:(公众号的目的纯粹是为了进行科研分享和交流)

 

 

 

 

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐