本文主要参考这个网址,本文是对这个网址所遇到错误的总结,如有侵权,请与我联系。

0.配置深度学习环境

安装之前,你要知道tensorflow的安装环境,见官网:
https://tensorflow.google.cn/install/source_windows#install_visual_c_build_tools_2015

MSVC+CUDA+cuDNN+python的版本都要正确

0.1  MSVC是VS附带的软件包:Microsoft Visual C++ 2015 Redistributable和Microsoft 生成工具 2015,tensorflow官网上说可以不用下载VS可以直接单独下载它,但是你最好还是安装一个VisualStudio2015,VS会附带这两个东西。我尝试了很多次只安装Microsoft Visual C++ 2015 Redistributable和Microsoft 生成工具 2015,结果CUDA装不上

VS2015免费版的下载可以去这个微信公众号找:软件安装管家

tensorflow官网里有单独的MSVC2015的下载地址,我这里也把它给出吧:

安装 Visual C++ 生成工具 2015。此软件包随附在 Visual Studio 2015 中,但可以单独安装:

  1. 转到 Visual Studio 下载页面,
  2. 选择“可再发行组件和生成工具”,
  3. 下载并安装:
    • Microsoft Visual C++ 2015 Redistributable 更新 3
    • Microsoft 生成工具 2015 更新 3

这里可以看到:

选择x64的,x64是给64位的系统用的,x86是给32位系统用的。

0.2  关于CUDA的安装可以参考这个网址里的CUDA安装方法:

WIN10安装TENSORFLOW(GPU版本)详解(超详细,从零开始) - 知乎

关于cuDNN的安装你可以参考这个网址的安装方法:

Win10+cuda8.0+cudnn5.1+tensorflow-gpu1.2.0+gtx1050ti,tensorflow环境搭建与配置_angzhangzhang123的博客-CSDN博客_gtx1050ti tensorflow

0.3   至于python我是下载了一个anaconda3,它的默认python版本是3.5,然后我就用Anaconda Prompt当cmd用

1.下载代码

本篇博客对应的旧代码:

带模型版665.5MB+:

百度网盘链接 提取码: bre5

只含代码版5MB:

tensorflow_yolov3_mud.rar - 蓝奏云

或者可以去看原作者的新代码,这个代码有更新,如果选择使用新代码,则本篇博客不适用新代码,要根据github上的readme.md来走:

https://github.com/YunYang1994/tensorflow-yolov3.git

2.安装第三方库

这一步的目的就是安装运行代码所需要的第三方库,requirements.txt里面就是各种依赖库对应的版本。

cd tensorflow-yolov3
pip install -r ./docs/requirements.txt

命令行下(本人用的是Anaconda Prompt)输入:pip install -r ./docs/requirements.txt的时候遇到很多错误,你可能需要符合以下两点要求:
(1)首先是你的命令行要到tensorflow-yolov3这个目录,
(2)然后要保证你的命令行下的python版本在3.5到3.6之间(直接输入python查看版本)。

当然你也可以用Anaconda Prompt命令行来一步一步安装requirements.txt里安装不了的依赖包。

(3)这个requirement.txt文件里安装的tensorflow版本是GPU,1.11.0,它对你的显卡的算力,也就是compute capability的要求是3.7以上,我的Tesla k40m的算力是3.5,每次运行demo时都不能使用GPU,都自动跑的CPU版本,所以我卸载了这个版本,换了更低的版本,如果你的tensorflow能跑下面的那个示例代码就不用执行这一步来卸载重装其它版本的tensorflow了。关于你的显卡的compute capability可以在官网上搜。

pip uninstall tensorflow-gpu==1.11.0
pip install tensorflow-gpu==1.10.0

我NVIDIA GTX 1060的显卡安装tensorflow-gpu==1.12.0、tensorflow-cpu==1.12.0、tensorflow-cpu==1.5.0也可以,2.0的tensorflow则不行了。

运行这个示例代码看看,你的tensorflow是否安装成功以及是在GPU还是CPU上跑:

import tensorflow as tf
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print (sess.run(c))
sess.close()

tensorflow安装成功,并可以看到我的是在GPU上跑的。

tensorflow-cpu版的话就是这样:


3.导出.pb模型文件

第3步把加载好的COCO权重导出为TF checkpoint (yolov3.ckpt) 和 frozen graph (yolov3_gpu_nms.pb) 。
关于这一步,它这一句话只是解释说明你现在做的事,并不是指导你去做什么,你照着它下面的指示做就好了,不用管这句话。

如果你没有yolov3.weights的话,去下载,然后放到./checkpoint目录下。下载地址是:

https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz

接着anaconda prompt下或cmd下输入命令:

python convert_weight.py --convert --freeze

这一步是把作者的这个yolov3.weights转化成识别的时候使用的.pb文件,这个.pb文件可以识别生活中常见的物体,如果你是用yunyang1994在github上的新代码的话就不能运行,必须使用我的旧代码。

4.视频识别

第4步:然后,./checkpoint目录下就会出现一些.pb文件。现在可以跑Demo脚本了:

python nms_demo.py
python video_demo.py # if use camera, set video_path = 0

输入第一个命令会报错:ModuleNotFoundError: No module named 'cv2',则输入命令安装opencv2:

pip install opencv-python

输入第二个命令时,你可能会报错:python video_demo.py # if use camera, set video_path = 0
因为你的电脑没有摄像头,这样的话可以不用管。如果你的电脑有摄像头的话,这个命令就是开启你的摄像头实时识别现实中的物体

假如你在使用摄像头时出现错误:

Traceback (most recent call last):
  File "video_demo.py", line 29, in <module>
    ["Placeholder:0", "concat_9:0", "mul_6:0"])
  File "D:\tensorflow-yolov3-master\core\utils.py", line 220, in read_pb_return_tensors
    return_elements=return_elements)
  File "D:\Pro2\Anaconda3\lib\site-packages\tensorflow\python\framework\importer.py", line 283, in import_graph_def
    raise ValueError('No op named %s in defined operations.' % node.op)
ValueError: No op named GatherV2 in defined operations.

说明你的tensorflow版本太低,需升级,如果出现了其他的错误,检查你的video_demo.py文件里使用的那个nms.pb文件是cpu还是gpu版本的,是否与你的tensorflow-cpu或gpu相匹配。

5.训练VOC或COCO格式的数据

到了这一步,如果你要弄VOC格式的数据集,你可以不往下看了,可以转到下面这篇博客,而且强烈建议跳到这里,因为下面这篇博客更详细:

tenforflow版YOLOv3下VOC数据集的准备和训练_UryWu的博客-CSDN博客

如果你要弄COCO格式的数据集:

官网:

http://cocodataset.org/

5.1下载的数据图像集是那个COCO官网的--》Dataset下的--》Download--》Images的--》2017 Train images [118K/18GB]

但是官网上的很慢,可以去这个网址下载。
强烈推荐用迅雷下载,因为下载到一半突然网络错误是很痛苦的。我就踩了不用迅雷的坑。

上面那个数据集太大,建议用这个小数据集算了:

5.2下载的标注集是COCO官网的--》Dataset下的--》Download--》Images的--》2017 Train/Val annotations [241MB]

6.提取COCO数据集为txt

然后,就要从数据集里提取一些有用的信息了,比如边界框,拿这些信息生成你自己的.txt文件。

python core/extract_coco.py --dataset_info_path ./data/train_data/COCO/train2017.txt

在这个目录里用的cmd命令行窗口里输入上面那个命令后,报错:

python: can't open file 'core/extract_coco.py': [Errno 2] No such file or directory

于是我去scipts这个目录下找到这个缺失的文件,并把它放到指定的core目录下。

根据教程输入命令:

python core/extract_coco.py --dataset_info_path ./data/train_data/COCO/train2017.txt

错误:

File "core/extract_coco.py", line 30, in main
    labels = json.load(open(flags.json_path, encoding='utf-8'))
FileNotFoundError: [Errno 2] No such file or directory: '/home/yang/test/COCO/annotations/instances_train2017.json

应该是这个文件里的路径不对,我去改一下路径。

可以看到源文件中有三个路径对于我的文件目录都要改

我的三个路径:

7.txt转tfrecord

生成那个train2017.txt文件后,

接下来,要把图像数据集转成.tfrecord,就是用二进制来保存数据。

python core/convert_tfrecord.py --dataset_txt ./data/train_data/COCO/train2017.txt  --tfrecord_path_prefix ./data/train_data/COCO/tfrecords/coco

txt文件里就是数据,它的格式如下:

--xxxx是参数标识符,这个后面就是路径参数,列如这里的--dataset_txt是路径参数标识符,它的后面就是用来输入的txt文件的路径。你的路径一定要存在,不存在的更换路径或是自己创建这个目录。后面的--tfrecord_path_prefix就是输出的tfrecord文件的地址,我这里是./data/train_data/COCO/tfrecords/coco,我用的是相对路径,最后面的这个coco是生成的tfrecord文件名,这个不是文件夹。
参考网址

这一步可能会报错:

convert_tfrecord.py: error: unrecognized arguments: --num_tfrecords 100

于是我把这个--num_tfrecords 100配置参数去掉了,因为报错的这个convert_tfrecord.py文件里:

它的参数中

不包括这个--num_tfrecords

继续输入7.开头的那个命令,继续报错:

compat.as_bytes(path), compat.as_bytes(compression_type), status)
  File "E:\Anaconda3-5.2.0-Windows-x86_64\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 526, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a NewWriteableFile: ./data/train_data/COCO/tfrecords/coco.tfrecords : ϵͳ\udcd5Ҳ\udcbb\udcb5\udcbdָ\udcb6\udca8\udcb5\udcc4·\udcbe\udcb6\udca1\udca3
; No such process

根据这个网址的提示:error when generate tfrecord · Issue #41 · datitran/raccoon_dataset · GitHub

要修改输入输出路径,我觉得就是这个文件convert_tfrecord.py里的路径错误,上面那个是保存数据图片名字和标注的txt文件的路径,下面是输出打包后tfrecords文件的目录,没有这个保存目录它会自己创建:

我改成了:

继续输入7.开头的那个命令,开始生成tfrecord文件,tfrecord文件就是把那些Images数据和标注好的annotations标注打包起来,生成一个tfrecord文件,并用于训练:

为了好看,我把它的名字改成了tain2017.tfrecords

之后,在这下面两个网址下载用来测试的图片和标注。

http://images.cocodataset.org/zips/test2017.zip
wget http://images.cocodataset.org/annotations/image_info_test2017.zip

根据上面第7、8的步骤,用同样的方法生成tfrecord文件,我取名为test2017.tfrecords

8.模型训练、测试与评估

然后打开tensorflow-yolo3下面的quick_train.py文件:

1.   BATCH_SIZE是总共训练包的个数,但你训练时出现显存不够(Out of range),或是蓝屏、程序崩溃的时候可以尝试把这个参数调小。

2.    STEPS是迭代次数的多少,低则识别率低,反之则否,我用3000幅左右的图片来训练并且迭代2500次用了一个半小时,我迭代50000次则用了25个小时左右。

3.    CLASSES之后的路径是存放你要识别的类别的txt文件。

4.    ANCHORS之后的路径是你训练的网络单元的权重文件,这个txt文件名含有anchors,我们用的是VOC格式的数据,这里要改为voc_anchors.txt。

最下面的两个train_tfrecord和test_tfrecord是之前生成的,改好路径。改为:

注意这两个tfrecords文件的路径,你的路径不一定和我的相同,但一定要保证你有你自己的这个路径,并且存在这两个文件。

然后在anaconda prompt中进入tensorflow-yolo3的根目录,输入命令开始训练:

python quick_train.py

最后会在tensorflow-yolo3/checkpoint目录下生成三个ckpt文件,这个就是训练好的模型。

然后在anaconda prompt中输入命令生成模型应用文件:

python convert_weight.py -cf ./checkpoint/yolov3.ckpt-2500 -nc 1 -ap ./data/coco_anchors.txt --freeze

此命令会利用上面的ckpt文件生成*cpu_nms.pb和*gpu_nms.pb文件。

然后打开文件:tensorflow-yolov3/quick_test.py

anaconda prompt下输入命令来测试:

python quick_test.py

这时候等一会儿,会出现那幅测试的图片,被识别出来的物体会被框出来。

然后是评估模型,打开tensorflow-yolov3/evaluate.py:

anaconda prompt下输入命令来评估:

python evaluate.py

这个mAP就是识别率。

*****完结撒花*****

另附参考博客:

Github 项目 - YOLOV3 的 TensorFlow 复现 - AI备忘录

Win10安装YOLOv3.0相关推荐

  1. WIN10安装VC6.0无法使用的解决办法

    WIN10安装VC6.0无法使用的解决办法 VC6.0确实已经太老了 VC6.0实在是很久以前的开发工具了,现在的win10已经对该软件不兼容,但是为了能使抱着怀旧情节的初学者们能像教科书或老前辈们一 ...

  2. Win10安装mysql-8.0.11-winx64详细步骤

    1.进入地址:https://dev.mysql.com/downloads/mysql/ 下载mysql-8.0.11-winx64 2.解压zip包,并将解压文件放入一个文件夹下,如图: 3.配置 ...

  3. vb6.0服务器组件安装失败,win10安装vb6.0总是失败怎么办?win10 vb6.0安装不了的解决办法...

    VB6.0已经10几年了,现在最新的win10系统无法安装,安装会卡死,怎么办?下面给大家介绍一下怎么在win10下完整安装vb6.0.供大家参考! 1.本文以vb6.0企业版为例,其他版本同此理!进 ...

  4. Proteus软件下载安装(包含win10安装proteus8.0+报错问题解决)

    文章目录 1.软件下载 2.软件安装 3.问题解决 3-1.win10安装Proteus出现There is a problem with this Windows Installer package ...

  5. win10 安装 mysql-8.0.12

    安装mysql 8 1.下载 https://dev.mysql.com/downloads/mysql/ 2.设置环境变量 将你解压后的文件里边的bin目录加入到path中.例如:D:\develo ...

  6. Win10 安装 UG10.0 UG8.5教程 --(及安装错误问题解决)--NX 8.5 NX 10.0 安装教程

    UG 8.5  32位安装包 : 链接:https://pan.baidu.com/s/1Z1XIEp95qLUgVDluD1c8nQ 密码:i5pa(失效) UG 10.0 64位安装包:链接:ht ...

  7. win10安装cuda9.0,cudann

    CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用. cuDNN(CU ...

  8. Win7和Win10安装VC6.0注意事项

    Win10版本: 数据访问这里需要把ADO和RDS取消勾选 Win7版本: Tools中把OLE/Com Object Viewer取消勾选

  9. cpu win10 安装yolo_Win10+YOLOv3完整安装过程(亲测可运行)

    最近了解并尝试在Win10安装YOLOv3,参考了十几篇文章,发现每个人都有自己的安装方式,最初尝试用cmake编译,虽然安装完成,但无法使用GPU,坑非常多,经2天努力终于安装成功,分享并记录自己的 ...

最新文章

  1. vsftpd学习笔记
  2. 国产360等浏览器安装完flash升级程序不起作用的解决方案
  3. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
  4. python学号怎么编写_用python编写学生管理系统
  5. veth-pair技术在docker中的应用(docker网络通信)及tomcat Dockerfile示例
  6. 【Python】浅谈 multiprocessing
  7. Windows 7 64位系统上搭建Hadoop伪分布式环境(很详细)
  8. 机器学习:神经网络的代价函数及反向传播算法
  9. 雷达初学者必读 | 毫米波雷达信号处理入门教程
  10. U盘故障恢复--“文件或目录损坏且无法读取”
  11. 新品迭出,史上最强:三星电子发布会直击
  12. 未能解决并且期待解决的第二个诡异事件----HashMap相关方法
  13. Sugar BI数据可视化图表标注
  14. 上交所实时行情文件汇总
  15. Unity3D-人物角色选择
  16. 中国人工智能学会通讯——搜狗搜索:从搜索到问答 1.2 搜狗汪仔——具备问答能力的机器人...
  17. 关于“未使用GUID分区表”无法安装的解决方案
  18. php slik转wav_silk转mp3(小程序音频silk转普通mp3接口)
  19. java监听微信_一种基于java后台应用监控微信小程序的用户访问量的方法与流程...
  20. 完数什么意思_完美数是什么?

热门文章

  1. 广义表((a,b),c,d)表头和表尾分别是什么?
  2. 【论文复现,含代码】MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
  3. Yuga Labs收购CryptoPunks 的始末是怎么样的?
  4. 未来计算机手抄报图片,小学生科技创造未来手抄报图片简单又漂亮
  5. 【NOIP2018】旅行 (洛谷P5049 / P5022) O(nlogn)题解
  6. css 鼠标经过显示禁止符号
  7. excel怎么算复购率(EXCEL怎么算平均分)
  8. java取余(java取余数的函数)
  9. 80后的罗敏已经在创业路上走了十几年
  10. Android系统完整的启动流程