欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windows10 tensorflow_(object_detection) 实现三(快速上手)

程序员文章站 2024-03-14 08:47:28
...

2019.11.11日,由于之前的conda环境遭到破坏,重头开始装环境,并运行tf官方目标检测示例;

1.下载Anaconda3-2019.10-Windows-x86_64.exe并安装。

安装完成之后,并不想将其添加到系统环境变量,点击左下侧的windows开始按钮,点击Anaconda Prompt

windows10 tensorflow_(object_detection) 实现三(快速上手)

2.创建用于实现tf的目标检测的虚拟环境:tf_object_detection

运行如下命令:

conda create --name tf_object_detection python=3.6.8

如下图:

windows10 tensorflow_(object_detection) 实现三(快速上手)

输入y:

windows10 tensorflow_(object_detection) 实现三(快速上手)

如上即安装完成。

3.**虚拟环境安装依赖包:

执行activate  tf_object_detection

3.1 安装pycocotools 2.0

(注意:之前电脑里已经安装了Visual C++ 2015 build tools

如果你没有安装,请参考https://github.com/philferriere/cocoapi提供的下载接口,即:

https://go.microsoft.com/fwlink/?LinkId=691126 下载visualcppbuildtools_full.exe,然后运行该exe,并选择默认选项。

并且也安装了git,  version 2.22.0.windows.1)

3.1.1  pip  install Cython (编译的时候,依赖这个三方包)

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

3.1.2 安装pycocotools

使用pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI成功,如下:

windows10 tensorflow_(object_detection) 实现三(快速上手)

请特别耐心等待,上面的过程慢得吐血!

如果你下载了cocoapi-master.zip,手动解压,重复上诉过程1,**虚拟环境activate  tf_object_detection  然后cd 进入解压文件夹cocoapi-master\PythonAPI

通过以下两种方式安装:

# install pycocotools locally

python setup.py build_ext --inplace

# install pycocotools to the Python site-packages

python setup.py build_ext install

3.2 安装支持avx2的tesorflow:

参见以下网站:

https://github.com/fo40225/tensorflow-windows-wheel

例如以下是tensorflow版本1.12.0,支持python36,支持CPU指令集avx2;

https://raw.githubusercontent.com/fo40225/tensorflow-windows-wheel/master/1.12.0/py36/CPU/avx2/tensorflow-1.12.0-cp36-cp36m-win_amd64.whl

 

如果你安装失败,你可以通过先安装pypi上的官方tensorflow-1.12.0-cp36-cp36m-win_amd64.whl,安装成功之后,在卸载pip uninstall tensorflow;然后再安装编译的支持AVX2指令集的whl文件。已经在python3.6.8、3.6.9环境中成功安装了支持AVX2的TF。

4 下载TF目标检测源码

使用TF官方提供的object_detection进行目标检测,比较方便,请进入官网下载相关代码,地址https://github.com/tensorflow/models

使用git 下载:

windows10 tensorflow_(object_detection) 实现三(快速上手)

或者直接点击官网的Clone  or  download下载,将下载的models-master.zip解压并命令为20191112_models-master,文件放置D:\class5_project文件夹下。即:D:\class5_project\20191112_models-master

5.下载protoc-3.3.0-win32.zip(支持64bit)

网址https://github.com/protocolbuffers/protobuf/releases

将下载protoc-3.3.0-win32.zip文件解压并至D:\class5_project\20191112_ObjectDetection_demo文件夹下,即:D:\class5_project\20191112_ObjectDetection_demo\protoc-3.3.0-win32

6.*.proto文件转成*.py文件

在D:\class5_project\20191112_models-master\research\object_detection\protos文件夹下有32个*.proto文件,需要将其转换成*.py文件

6.1 将D:\class5_project\20191112_models-master\research下的object_detection文件夹剪切至D:\class5_project\20191112_ObjectDetection_demo\protoc-3.3.0-win32\bin目录下;

6.2 cmd 执行转换

windows+r-->cmd 打开操作系统的终端,分别如下操作:

D:

cd D:\class5_project\20191112_ObjectDetection_demo\protoc-3.3.0-win32\bin

protoc object_detection/protos/*.proto --python_out=.

 

如下图:

windows10 tensorflow_(object_detection) 实现三(快速上手)

运行结束后,所有的*.proto文件转成*.py文件,如下图:

windows10 tensorflow_(object_detection) 实现三(快速上手)

6.3 将D:\class5_project\20191112_ObjectDetection_demo\protoc-3.3.0-win32\bin文件夹下的object_detection文件夹拷贝或剪切回 D:\class5_project\20191112_models-master\research文件夹下;

7.关于三方包导出:

pip  freeze >  .\tf_object_detection_20191113.txt

即:

absl-py==0.8.1

astor==0.8.0

certifi==2019.3.9

chardet==3.0.4

cycler==0.10.0

Cython==0.29.14

decorator==4.4.0

defusedxml==0.6.0

gast==0.3.2

grpcio==1.25.0

h5py==2.10.0

idna==2.8

Keras-Applications==1.0.8

Keras-Preprocessing==1.1.0

kiwisolver==1.1.0

Markdown==3.1.1

matplotlib==3.1.1

numpy==1.16.3

Pillow==6.2.1

protobuf==3.10.0

pycocotools==2.0

pyparsing==2.4.5

python-dateutil==2.8.1

PyYAML==5.1

requests==2.21.0

six==1.12.0

tensorboard==1.12.2

tensorflow==1.12.0

termcolor==1.1.0

test-generator==0.1.1

urllib3==1.24.2

Werkzeug==0.16.0

wincertstore==0.2

你可以通过pip install tf_object_detection_20191113.txt安装上诉的大部分python三方包;

8.演示ssd_mobilents

8.1  创建演示文件夹20191113__(train_ssd_mobilenet)

即:D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)

 

8.2 将nets文件夹拷贝

即将D:\class5_project\20191112_models-master\research\slim文件夹下的nets拷贝至

D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)文件夹下,即:D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\nets

8.3 准备图片以及标签数据

8.3-a 推荐使用开源工具labelimg对图片进行打标,注意:标签文件与图片文件同名,后缀分别为JPG、xml。将打标完的图片以及标签数据按照以下比例进行划分:

train_set(训练集):val_set(交叉验证集合):test_set(测试集)=62:2

注意,以上为建议,模型的调优过程,请阅读相关文献,调优。

将划分好的train_set、val_set、test_set分别剪切至:

D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\data_set文件夹下。

 

8.3-b  将训练集和交叉验证集的图片、xml转成csv

需要安装三方包:

pip install pandas

分别运行D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\data_set文件夹下的train_xml_to_csv.py、val_xml_to_csv.py

注:可以运行以下代码读取csv文件,并将csv文件所有的类别提取出来:

 

import csv

import sys

path=r".\labels_train.csv"

csv_reader=csv.reader(open(path,encoding='utf-8'))

list1=[]

for row in csv_reader:

    if row[3] !="class":

        list1.append(row[3])

set_class=set(list1)

print(set_class)

#{'Empty', 'Cap_Side_B_OK', 'Cap_Side_A', 'Cap_Side_B_NG'}

 

8.3-c  将csv(labels_train.csv、labels_val.csv) 转化成record

分别运行D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\data_set文件夹下的train_generate_tfrecord.py、train_xml_to_csv.py。

最后得到训练需要的train.record、val.record文件。

 

8.3-d 生成pbtxt文件

运行D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\data_set文件夹下的generate_label_map.pbtxt.py生成label_map.pbtxt

 

8.4 创建output_model文件夹

在data_set的同级目录下创建output_model文件夹,即D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\output_model

备注:此文件夹的作用是训练模型过程输出的模型

 

8.5-a  创建pre_model文件夹

在data_set的同级目录下创建pre_model文件夹,即

D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)\pre_model

备注:此文件夹的作用是加载tensorflow在COCO dataset,  Kitti dataset,Open Images dataset上的预训练模型。重要提示: 需要在Tensorflow 1.5 以上!!!

 

8.5-b 下载预训练的模型

下载链接:

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

 

比如下载一个ssd_mobilenet_v1在coco数据集训练的模型,即ssd_mobilenet_v1_coco_2018_01_28.tar.gz,将其解压后的文件剪切至pre_model文件夹,如下:

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

8.5-c 配置pipline.config参数

pre_model文件夹下的pipline.config对应ssd_mobilenet_v1_coco_2018_01_28.tar.gz训练的模型,与D:\class5_project\20191112_models-master\research\object_detection\samples\configs\ssd_mobilenet_v1_coco.config是一致的,其参数的配置可以参考ssd_mobilenet_v1_coco.config的内容:

 
# SSD with Mobilenet v1 configuration for MSCOCO Dataset.

# Users should configure the fine_tune_checkpoint field in the train config as

# well as the label_map_path and input_path fields in the train_input_reader and

# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that

# should be configured.

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

分别更改如下:

更改1:

windows10 tensorflow_(object_detection) 实现三(快速上手)

更改2-3:

windows10 tensorflow_(object_detection) 实现三(快速上手)

更改4-5:

windows10 tensorflow_(object_detection) 实现三(快速上手)

9. 训练(IDE运行)

运行model_main.py执行fine_tune微调训练。

具体步骤:

9.1将

D:\class5_project\20191112_models-master\research\object_detection\ model_main.py

拷贝至D:\class5_project\20191112_ObjectDetection_demo\20191113__(train_ssd_mobilenet)文件夹下。

9.2 修改model_main.py中参数

9.2–A、event and checkpoint files文件的输出文件夹:

windows10 tensorflow_(object_detection) 实现三(快速上手)

9.2–B、config路径:

windows10 tensorflow_(object_detection) 实现三(快速上手)

9.2–C、训练迭代步数

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

9.2–D、计算训练数据的损失

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

9.2–E、其他
tf.logging.set_verbosity(tf.logging.INFO)

import sys

sys.path.append(r"D:\class5_project\20191112_models-master\research")

sys.path.append(r"D:\class5_project\20191112_models-master\research\object_detection\protos")

增加后如下图:

windows10 tensorflow_(object_detection) 实现三(快速上手)

 

9.3 运行model_main.py,训练的部分截图如下:

windows10 tensorflow_(object_detection) 实现三(快速上手)

注意:以上步骤较为详细,条条道路通罗马,以上可实现TF目标检测的演示,欢迎评论~