前言
基于YOLO进行物体检测、对象识别,先和大家分享如何搭建开发环境,会分为CPU版本、GPU版本的两种开发环境,本文会分别详细地介绍搭建环境的过程。
主要使用TensorFlow2.3、opencv-python4.4.0、Pillow、matplotlib 等依赖库。
搭建环境参数
系统:Windows 编程语言:Python 3.8
深度学习框架:TensorFlow 2.3 整合开发环境:Anaconda 开发代码IDE:PyCharm
推荐理由:1)Anaconda +PyCharm,能适应较多的开发环境,比如,创建一个TensorFlow2.3的环境,创建一个TensorFlow1.5的环境,是不会相互影响的,而且切换很方便。相对来说VScode在环境配置和切换就差一些了,尽管我也挺喜欢VScode的。
2)使用Python语言相对C、C++更好上手,易于理解。
一、安装Anaconda
大家到官网下载Windows 版本的Anaconda,选择电脑的位数(32位 / 64位):目前最新默认使用Python 3.8了,没关系的,等下我们可以创建一个独立的conda开发环境,安装Python 3.6就好啦。
编辑
在网页中拉到底下,即可看到上图页面;比如,电脑系统是Windows的64位,选择红色框框的;如果是32位的,选择红框下一个。下载好后,其是一个可执行文件,例如:Anaconda3-2020.07-Windows-x86_64.exe。
双击可执行文件,进行安装,过程安装引导安装即可;(同意,下一步)
需要注意:添加环境变量的需要勾上√,如果默认使用PYthon3.8的第二个勾上,
后面默认直至安装完成。
二、安装TensorFlow
这里是在Anaconda中安装TensorFlow 2.3的,大家可以想象Anaconda为一个资源管理器,在支持PYthon3 的基础上,安装许多深度学习用到的包或依赖库,然后封装成一个独立的开发环境;最好后在PyCharm直接使用封装好的开发环境。
首先在应用程序中打开“Anaconda Prompt(naconda3)”:
大家先选择一下,是安装CPU环境,还是GPU环境,建议尽量安装GPU环境,这样做YOLO的物体检测、目标识别时会更快和流畅。先看下是否符合GPU环境的要求:
GPU 前提条件:电脑中有显卡,NVIDIA品牌;而且在windows中的显卡驱动的版本 >=418.96
1)如果满足这个条件的朋友,恭喜你可以布置GPU加速环境,训练神经网络时可以用到GPU进行加速。
2)如果不满足这个条件的朋友,先去看看我这边博客:一篇文章清晰了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV) 这里面有介绍较旧的显卡(例如我的旧电脑是GTX950M),安装较新版本的显卡驱动(445.87版本);从而实现使用GTX950M显卡进行加速神经网络训练等。新电脑的显卡是GTX1660了。
3)如果电脑没显卡,或不想使用GPU加速的朋友,可以跳过布置GPU加速环境
1、YOLO开发环境——CPU版本
1)新建一个名为 YOLO3-CPU-TensorFlow2 的开发环境,使用PYthon3.8
conda create -n YOLO3-CPU-TensorFlow2 python=3.8
安装过程询问y / n; 输入y 同意安装
等待安装完成即可。
2)进入刚才创建的环境
conda activate YOLO3-CPU-TensorFlow2
3)安装TensorFlow2.3.1
pip install tensorflow==2.3.1 -i https://mirrors.aliyun.com/pypi/simple/
这里等待安装完成即可; 分析-i https://mirrors.aliyun.com/pypi/simple/ 是指定国内的软件源来下载,这样比较快。
4)验证是否环境安装成功
进入Python环境:
python
输入命令导入TensorFlow库:import tensorflow as tf
查看其版本:tf.__version__
2、YOLO开发环境——GPU版本
前提条件:电脑中有显卡,NVIDIA品牌;而且在windows中的显卡驱动的版本 >=418.96
1)新建一个名为 YOLO3-GPU-TensorFlow2 的环境,使用PYthon3.8
conda create -n YOLO3-GPU-TensorFlow2 python=3.8
安装过程询问y / n; 输入y 同意安装
等待安装完成即可。
2)进入刚才创建的环境
conda activate YOLO3-GPU-TensorFlow2
3)安装TensorFlow2.3.1
pip install tensorflow-gpu==2.3.1 -i https://mirrors.aliyun.com/pypi/simple/
这里等待安装完成即可; 分析 -i https://mirrors.aliyun.com/pypi/simple/ 是指定国内的软件源来下载,这样比较快。
等待安装完成;
下面安装英伟达的cudatoolkit、和英伟达深度学习软件包cudnn
a)安装英伟达的cudatoolkit 10.1版本
conda install cudatoolkit=10.1
安装过程需要选择y,等待安装完成。
b)安装英伟达深度学习软件包7.6版本
conda install cudnn==7.6.*
如果上面cudatoolkit、cudnn两条语句顺利安装没报错,恭喜你啊,布置GPU加速环境成功啦。
4)验证是否环境安装成功
进入Python环境:
python
输入命令导入TensorFlow库:import tensorflow as tf
查看其版本:tf.__version__
完成啦!!
三、安装PyCharm
我们到官方下载社区版的PyCharm,无需在网上找破解版的;
Download PyCharm: Python IDE for Professional Developers by JetBrains
然后来到下图页面:
下载好后是一个可执行文件,例如:pycharm-community-2020.1.exe
双击可执行文件进行安装,默认安装即可,需要注意的下图:
然后等待安装完成后,需要重启电脑哦。
四、安装YOLO3用到的依赖库
主要安装python版本的OpenCV、Keras、Pillow、matplotlib;建议大家根据下面的命令进行安装,下面的依赖库指定的版本是通过测试的。其中 -i https://pypi.mirrors.ustc.edu.cn/simple 主要是指定pip 为国内软件源安装,提升安装速度。
下面依赖库安装通常是没什么问题的,就不截图安装过程了
pip install opencv-python==4.4.0.44 -i https://mirrors.aliyun.com/pypi/simple/
pip install Pillow -i https://mirrors.aliyun.com/pypi/simple/
pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
五、配置PyCharm开发环境
1)打开PyCharm,新建工程;
2)然后选择 1 工程所放目录路径;2 点击查看详情配置; 3点击选择创建的开发环境
3)设置开发环境,使用之前在Anaconda创建好的环境:YOLO3-GPU-Tensoflow2
点击OK,然后点击create。
测试环境
新建一个python文件,编写测试程序:
测试代码:
import tensorflow as tf tensorflow_version = tf.__version__ #以下两行代码适合有“布置GPU环境的” gpu_available = tf.test.is_gpu_available() print("tensorflow version:", tensorflow_version, "\tGPU available:", gpu_available) #以下一行代码适合没有“布置GPU环境的”,纯CPU版本的 #print("tensorflow version:", tensorflow_version) a = tf.constant([1.0, 2.0], name="a") b = tf.constant([1.0, 2.0], name="b") result = tf.add(a, b, name="add") print(result)
运行结果:
能看到YOLO的开发环境搭建成功了,恭喜啊。
先看一下LOYOv3 的效果:YOLOv3物体/目标检测之实战篇(Windows系统、Python3、TensorFlow2版本)
1)有四只小猫被检测出来:
使用浅蓝色的框框,把小猫的所在位置框出来,并在框框上方注释标签(类别 置信度)。比如第一只小猫检测出的标签是cat ,置信度是0.95,即有95%的把握认为是cat 猫。
2)一只小狗和一只小猫同时被检测出来:
小猫被检测出是cat,1.00;有100%的把握认为是cat 猫;
小狗被检测出是dog,0.97;有97%的把握认为是cat 猫;
3)在复杂的十字路口,有许多行人和车辆被检测出来了:
大家可以看到大部分的行人、小汽车和公交车是被检测出来了,存在小部分没有被检测出来;如果是做特定场景的目标检测,建议大家后续采购特定场景的数据,重新训练网络,生成稳定且高精度的模型,保存权重文件,便于后续使用。
希望对你有帮助,如果发现文章有误,欢迎指出。