打字的小强 发表于 2020-6-8 12:40

一个简单的零基础的机器学习教程,Pytorch搭建Faster R-CNN目标检测平台

本帖最后由 打字的小强 于 2020-6-8 14:21 编辑

按照别人教程来的机器学习教程。完全不需要高数知识,我做一下简单直白的补充说明,并且做部分修正,尽量做到简单通俗易懂。


自己看了老多教程都半途而废,比如图像处理,高数,前置知识等等,一直没有实验,感觉自己很垃圾,很没意思,屡受打击啊。最近看见B站的Bubbliiiing的视频还有博客教程感觉可以自己实验一下。想弄点结果出来再去研究本质。
先把相关的参考教程链接放出来,大家尝试的时候可以参考:


神经网络学习小记录48——windows下的torch=1.2.0环境配置:https://blog.csdn.net/weixin_44791964/article/details/106037141
睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台:https://blog.csdn.net/weixin_44791964/article/details/105739918
Pytorch 搭建自己的Faster-RCNN目标检测平台(Bubbliiiing 深度学习 教程):https://www.bilibili.com/video/BV1BK41157Vs?p=13

bubbliiiing/faster-rcnn-pytorch:https://github.com/bubbliiiing/faster-rcnn-pytorch

一.搭建环境


首先是在windows下搭建touch = 1.2.0环境。
教程是说装旧的anoconda环境,我是新的,没有用教程推荐的conda老版本,我自己的版本是4.8.3,也可以,Anaconda的安装网上很多教程,可以参考,我这里不赘述了,记得选择Add Anaconda to my PATH environment variable,把conda填入全局变量里面,很方便。


接下来装cudnn和cuda,这里需要英伟达的显卡,原帖楼主的显卡的是1660Ti,我的显卡是2070Super。两个很大的安装包,下载链接我最后提供给大家。
torch=1.2.0对应的Cuda版本是10.0,与cuda10.0对应的cudnn是7.4.1.5
下载cuda_10的exe,文件名是cuda_10.0.130_411.31_win10.exe,大小2.04 GB。
直接双击安装。不要更改安装路径,然后安装的时候选择自定义,后面默认就安装成功了。

安装完成找到这个cuda_10的安装路径我们要把cudnn这个安装包解压后的某些东西放到cuda_10里面去
我的cuda_10的安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
我们把cudnn的安装包解压一下,cudnn的安装包是cudnn-10.0-windows10-x64-v7.4.1.5.zip,208 MB 。
解压后图片:

把这里面所有的文件,文件夹复制,粘贴到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 这个目录下面,接下来的截图就像我这样

到目前为止,基础软件安装完毕
接下来配置conda环境,python的各种包依赖非常复杂,conda非常方便,可以解决这个问题,单独创建一个环境来运行代码
首先进入cmd命令框。输入

conda create –n pytorch python=3.6

意思就是新建一个python 版本为3.6,别名为pytorch的环境

activate pytorch

activate就是进入这个名为 pytorch环境,进入环境过后pip就可以安装一些包

pip install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html

这个包特别大,需要等待很长时间,我偷懒就是按照这个命令安装的,很慢看看原教程采用本地安装


安装完成后再pip安装两个包,一个是opencv-python ,一个是matplotlib,这是我补充的内容在实际代码种需要这两个包,不安装,后面测试的时候会出现问题
安装的时候要进入这个环境conda activate pytorch后安装。可以用清华源安装,非常快

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib

二.部署项目

下载github上面的代码(最后会放链接),用vccode打开,我没有按照原教程专门配置vscode,我直接配置python conda环境到vscode


打开项目文件后还需要把预训练权重文件放到这里面去,这个文件可以理解为加快训练速度的文件,也有点大,需要放在项目文件model_data这个文件夹下面,我会单独放在百度云网盘里面,这两个文件可以选择其中一个,我选的是第一个,我也不知道区别有哪些,想用第二个要改一些地方原帖有说明的。


然后还有最重要的voc2007数据集,是一个标准数据标注的数据集,有特定的格式。下载我提供的数据集,也可以用其他的数据集(用其他的数据集比较麻烦。需要改一些东西)。就是一些标注好的图片的标注信息文件和对应的图片文件,一一对应。

解压pascal-voc-2007.zip

我用的是VOCtrainval_06-Nov-2007,这是我自己在百度上找的,进入VOCtrainval_06-Nov-2007文件夹,进入到里面的文件夹找到Annotations和JPEGImages文件夹。把这里面的图片和xml文件复制到项目代码VOCdevkit\VOC2007里面的对应的Annotations和JPEGImages下面去,图片和xml文件各有5000个左右。




软后运行voc2frcnn.py,生成一个训练的txt,这个2007_train.txt就是告诉这个训练框架,这个图片哪个位置有什么东西


不用修改voc_annotation.py里面的classes和model_data里面的voc_classes.txt文件。需要用其他的数据集的时候再修改吧,classes越多,目标分类就越多,训练难度就越大


三.开始训练


找到项目中的train.py,点击运行

如果出现下图就证明正在训练,没有任何报错了






四.训练好的模型进行预测

经过一个晚上的时间训练,训练还没有结束,但是logs文件夹下有31个模型文件了,每一轮都会保存这个训练好的模型,可能分类太复杂了,显卡算力不够,我们来用最后一个模型来测试一下效果怎么样。




我们来测试一下图像的预测
修改frcnn.py里面的引入模型的设置,如图所示,你要修改成你自己的模型,我也会把我自己的模型上传。




接下来运行predict.py,如图所示,填入文件路径。

填入图片路径,图片就会打开。图片上的框框就会显示出来,相似度。类名,大小,很牛啊。



接下来测试一下其他的东西,还不错。



再来测试一下视频,找到video.py,可以获取摄像头,也可以修改视频文件路径,点击运行,帧率感人,就是把视频变成一帧一帧的图片然后预测。









五。相关链接以及总结

百度云链接: https://pan.baidu.com/s/1JKPN49jeJfavPXMY5aF54w 提取码:nml9


Github链接:koala9527/faster-rcnn-pytorch:https://github.com/koala9527/faster-rcnn-pytorch

弄这些没花多长时间,感觉机器比我想象中更强大,虽然没有很完美,看到这些代码在我面前演示很有成就感。每个帖子都会这么说,哈哈,有用记得给star,给评分关注我哦,每当总结的时候总会畅想,要把这些技术用到哪里去呢?大家有啥想法呢?




Vegetabhl 发表于 2020-12-23 12:12

您好,麻烦请问下我运行voc2frcnn.py生成的train.txt文件在main文件夹下,然后我运行那个train.py的时候也把这个annotation_path = './VOCdevkit/VOC2007/ImageSets/Main/train.txt' 改成了这个路径(就是main文件夹下面),但是运行依然会报 FileNotFoundError: No such file or directory: '006849' 这样的错误,并且每次后面的数字还不一样。想问下是还需要改其他地方吗还是说哪里错了?耽误好几天了有点难受不知道怎么改,万分感谢!

打字的小强 发表于 2020-12-23 13:53

Vegetabhl 发表于 2020-12-23 12:12
您好,麻烦请问下我运行voc2frcnn.py生成的train.txt文件在main文件夹下,然后我运行那个train.py的时候也 ...

你在生成train.txt以后,在文件夹目录里找到它的实际位置,和后续代码里调用这个txt的位置不一样,需要改一下,具体哪里调了你找找

千城忆梦 发表于 2020-6-8 13:22

我之前比赛用了一个facebook的github项目,叫detectron2,是一个目标检测和实例分割的平台
https://github.com/facebookresearch/detectron2

打字的小强 发表于 2020-6-8 13:26

千城忆梦 发表于 2020-6-8 13:22
我之前比赛用了一个facebook的github项目,叫detectron2,是一个目标检测和实例分割的平台
https://github ...

10k star ,我去,牛逼,大佬啊

skyward 发表于 2020-6-8 13:55

10K 简直了

流浪星空 发表于 2020-6-8 14:07

感谢分享!

you74222 发表于 2020-6-8 14:28

学习了。thank you

MC阿虎 发表于 2020-6-8 16:19

感谢分享,前来学习一下

圈外人 发表于 2020-6-8 16:53

学习了学习了

chickenbaby 发表于 2020-6-8 17:23

学习了,谢谢分享

ptmaliang 发表于 2020-6-8 17:29

感谢分享!
页: [1] 2 3 4 5
查看完整版本: 一个简单的零基础的机器学习教程,Pytorch搭建Faster R-CNN目标检测平台