Linux服务器中Keras 搭建自己的yolo3目标检测平台

配置环境

注:下面需要下载的文件链接都可以直接在window下载,然后上传Linux服务器即可
首先安装anaconda,用来创建独立的虚拟环境,其次安装CUDA和CUDNN这两个版本一定要匹配,否则后期运行会提示版本不匹配,最后就是在anaconda创建的虚拟环境下安装tensorflow和keras。
安装环境这一块可以参考链接: link

下载源码

下面是GitHub源码链接: link.
下面是权值h5文件百度网盘下载链接:[link](https://pan.baidu.com/s/1izPebZ6PVU25q1we1UgSGQ 提取码: tbj3).
在这里插入图片描述
下载voc数据集,这个需要翻墙才能去官网下载,下载速度比较慢,可以直接幅值下载链接,然后通过迅雷下载,速度能够达到好几M。如果不具备翻墙条件,也可以找百度云资源。
链接: link.
在这里插入图片描述
下载完voc数据集,上传到Linux服务器,然后解压即可。在解压之前尽量把VOCdevkit\VOC2007\voc2yolo3.py该文件移动至./目录下,然后将VOCdevkit整个目录删掉(因为解压之后会出现一个XOCdevkit文件夹)。

var xvf VOCtrainval_06-Nov-2007
var xvf VOCtest_06-Nov-2007

下载GitHub源码打开包括这些文件,我简单介绍一下这些文件的作用。
首先贴一张YOLOV3用到的darknet53主干网络以及解码过程图。

在这里插入图片描述
1.nets/darknet53.py:darknet53的主干网络,是一系列的残差网络,为了提取三个特征层网络(13×13、26×26、52×52)
2.nets/yolo3.py:darknet53的解码过程,通过卷积和上采样输出三个特征层网络,分别为((13×13×75)、(26×26×75)、(52×52×75))这里75代表通道数,这里用的是voc数据集75=(4+1+20)×3
3.nets/loss.py:衡量y_pre和y_true之间的对比
y_pre就是一幅图像经过网络之后的输出,内部含有三个特征层的内容;其需要解码才能够在图上作画
y_true就是一个真实图像中,它的每个真实框对应的(13,13)、(26,26)、(52,52)网格上的偏移位置、长宽与种类。其仍需要编码才能与y_pred的结构一致。
4.训练用到的文件:
VOCdevkit/VOC2007/Annotations:图片对应的标签文件。
VOCdevkit/VOC2007/JPEGImages:图片存放位置。
VOCdevkit/VOC2007/ImageSets/Main/train.txt:这个文件是运行VOCdevkit\VOC2007\voc2yolo3.py,它会遍历JPEGImages然后生成train.txt文件。
voc_annotation.py:将train.txt转化为2007_train.txt(内含绝对路径)
2007_train.txt:每一行对应其图片位置及其真实框的位置。这个是通过运行yolo.py文件生成的。
train.py:训练文件。
5.predict.py:测试文件。

修改参数以及训练自己的数据集

注:下面这些操作默认在anaconda创建的虚拟环境(安装tensorflow和keras),/yolo3-keras目录(我将yolo3-keras-master改名为yolo3-keras)下。
因为这个代码是在window运行的,如果在Linux下运行,需要对格式进行一个转换,相当于将DOS格式的文本文件转换成UNIX格式的。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。
通过下面命令安装dos2unix命令,该命令作用将DOS格式的文本文件转换成UNIX格式的。

yum install -y dos2unix

在这里只需要转换一个文件即可,VOCdevkit\VOC2007\voc2yolo3.py

dos2unix voc2yolo3.py

然后将VOCdevkit\VOC2007\voc2yolo3.py移动至./(yolo3-keras目录下)

mv VOCdevkit\VOC2007\voc2yolo3.py ./

执行voc2yolo3.py,生成train.txt文件,该文件位置VOCdevkit\VOC2007\ImageSets\Main\train.txt

python voc2yolo3.py

执行voc_annotation.py,生成2007_train.txt

python voc_annotation.py

执行train.py,然后会出现一系列的错误。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

出现上面的原因大部分是因为CUDA和tensorflow版本不匹配,为了验证是否版本不匹配,执行pip show tensorflow,显示一个提醒,说明确实因为版本不匹配。首先需要检查安装的版本是否匹配,然后如果是在同一个Linux服务器下多用户使用不同的版本的CUDA,这时需要修改自己用户下面的.bashrc。首先执行cd命令切换到自己目录下,然后vim ./.bashrc进入该文件内,在文件最后加上三行命令。

export CUDA_HOME="$HOME/cuda10.0"
export PATH="$PATH:$CUDA_HOME/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CUDA_HOME/lib64"

在这里插入图片描述
现在再进入自己的虚拟环境验证tensorflow,下面显示代表验证成功。
在这里插入图片描述

然后再执行train.py,继续出现错误。
在这里插入图片描述

在这里插入图片描述
出现上面这种情况是因为缺少pillow,接下来安装并更新pillow

pip install pillow
easy_install pillow
pip install -i https://pypi.douban.com/simple pillow

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后再执行train.py,继续出现错误。(这是最后一个错误了)
在这里插入图片描述
在这里插入图片描述
显示上面的错误,是因为没有安装opencv。

pip install opencv-python

在这里插入图片描述
然后再执行train.py,就可以训练自己的模型了。
在这里插入图片描述

测试自己训练的.h5权重

测试之前需要修改一些代码。
1.打开predict.py(测试代码)文件,将文件末尾r_image.show()这句代码注释掉并在后面加上 r_image.save(‘abc.jpg’) (注意尽量不要使用Tab键,用空格键,四个空格代表一层),因为我用Finalshell软件远程连接的服务器,所以不带显示,为了能够得到最终效果,可以将测试结果生成图片,然后下载到本地电脑显示。

vim predict.py

在这里插入图片描述
2.打开yolo.py文件,在class YOLO(object): 代码前加入以下命令,作用是指定运行显卡以及关闭session空出显存,os.environ [“CUDA_VISIBLE_DEVICES”] = “1” 这句命令是指定使用的显卡,因为服务器有时候不止一张显卡,所以可以选择具体的显卡。

from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
os.environ ["CUDA_VISIBLE_DEVICES"] = "1"
sess = tf.Session(config=config)
set_session(sess)
keras.backend.clear_session() #清理session

在这里插入图片描述
如果上面两个文件都已修改,那就可以直接执行predict.py

python predict.py

运行一会就会显示让输入需要测试的图片的路径,这里我选择使用文件夹里面自带的文件,当然也可以上传到服务器自己想测试的图片。之后运行一会就会出现结果,其中包括类别和得分情况,其实到这一步已经测试成功了,为了眼见为实,在yolo3-keras(就是当前文件夹下,这个文件名是我下载Github后修改的,前面文章有提到)生成了abc.jpg文件,可以下载到本地并打开验证。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文参考B站视频“Keras 搭建自己的yolo3目标检测平台(Bubbliiiing 深度学习 教程)”,该up主是在Windows下训练的,我只是做了简单的移植。
链接: link.

完结!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。利用YOLOv4训练完自己的数据集后,如何向大众展示并提供落地的服务呢?  本课程将提供相应的解决方案,具体讲述使用Web应用程序框架Flask进行YOLOv4的Web应用部署。用户可通过客户端浏览器上传图片,经服务器处理后返回图片检测数据并在浏览器绘制检测结果。  本课程的YOLOv4使用AlexyAB/darknet,在Ubuntu系统上做项目演示,并提供在Windows系统上的部署方式文档。 本项目采取前后端分离的系统架构和开发方式,减少前后端的耦合。课程包括:YOLOv4的Flask部署系统架构、YOLOv4的安装及动态链接库的编译、 Flask的安装、YOLOv4的检测API接口python代码、 Flask的服务程序的python代码、前端html代码、CSS代码、Javascript代码、系统部署演示、生产环境部署建议、Windows系统上部署的区别等。 除本课程外,本人推出了有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《YOLOv4目标检测实战:训练自己的数据集》(Ubuntu版) 《YOLOv4目标检测实战:人脸口罩佩戴识别》(Ubuntu版) 《YOLOv4目标检测实战:国交通标志识别》(Ubuntu版) 《YOLOv4目标检测:原理与源码解析》(Ubuntu版) 《YOLOv4-tiny目标检测实战:训练自己的数据集》(Ubuntu版) 《Windows版YOLOv4目标检测实战:训练自己的数据集》 《Windows版YOLOv4目标检测实战:人脸口罩佩戴识别》 《Windows版YOLOv4目标检测实战:国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》 《Windows版YOLOv4-tiny目标检测实战:训练自己的数据集》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值