利用tensorflow object_detection API 训练自己的数据集及测试的完整过程(涉及到cuda和tensorflow版本的切换)

本文详细介绍了如何在Ubuntu16.04环境下,利用TensorFlow Object Detection API结合CUDA9.0和cudnn7.1.4训练自定义数据集的过程,包括环境配置、数据集准备、训练和测试。遇到的问题如tensorflow版本、cuda版本切换等也进行了说明。
摘要由CSDN通过智能技术生成

前言

环境准备:ubuntu16.04,Python2.7 ,cuda9.0 ,cudnn7.1.4,tensorflow 1.8.0

一、安装 TensorFlow Object Detection API

参考:https://blog.csdn.net/chenmaolin88/article/details/79371891

不同的是我这里的tensorflow版本是1.8.0,编译Protobuf的版本是3.3,下载好Protobuf之后,

cd ~/tensorflow/models/research/
/home/wlw/Downloads/protoc_3.3/protoc-3.3.0-linux-x86_64/bin/protoc(前面是可执行文件的地址) object_detection/protos/*.proto --python_out=.

其他步骤与上面参考教程类似。

二、安装cuda9.0+cudnn7.1.4,与cuda8.0共存,可随意切换

参考:https://blog.csdn.net/tunhuzhuang1836/article/details/79545625

安装cuda9.0

因为之前系统中已经有cuda8.0,所以在安装cuda9.0时,务必选择runfile安装

下载好cuda9.0后(下载地址),进入终端:

# if deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-rc_9.0.103-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

# if runfile
sudo chmod +x cuda_9.0.176_384.81_linux.run
./cuda_9.0.176_384.81_linux.run

安装好后我们可以去/usr/local/下看到安装好的cuda-9.0文件夹:

安装cudnn

其次我们需要安装cudnn,同理去nvidia官网下载cudnn。这里我们安装的是cudnn7.1.4

注意,我们这里选择cuda9.0下cuDNN v7.1.4 Library for Linux。下载好后直接命令行解压然后复制lib64和include文件夹到usr/local/cuda-9.0,命令如下:

sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

cuda版本的自由切换

按上述过程安装好后,命令行sudo gedit ~/.bashrc打开.bashrc,因为之前已经装过cuda8.0,则.bashrc下将所有cuda8.0改为cuda:(前两行是在前面安装tf的目标检测API时候添加的)

下面我们只需要根据需求随意切换cuda8.0或9.0即可,命令行如下:

sudo rm -rf /usr/local/cuda 
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda 

下面我们可以查看当前版本的情况:

至此,cuda9.0就安装完成。

注意:cuda9.0对应的cudnn以及tensorflow版本一定要符合要求,后面训练自己的数据集时会深刻体现。

三、正式训练自己的数据集

准备数据集

主要包括制成pascal_voc格式、制作XML标签文件、图片命名以及划分数据集等操作,与利用py-faster-rcnn制作数据集过程相同,见我之前的博客:py-faster-rcnn用自己的数据训练模型

训练环境准备

(1)首先新建一个项目文件夹:tensorflow_api_learn,在当前项目文件夹下新建一个dataset文件夹,里面存放上面中制作好的数据集,命名为myVOC

(2)接着复制models\research\object_detection\dataset_tools\create_pascal_tf_record.py文件到dataset,

(3)复制models\research\object_detection\data\pascal_label_map.pbtxt文件到dataset

(4)在项目文件夹下新建一个model文件夹,下载预训练模型ssd_mobilenet_v1_coco_11_06_2017放如model文件下,预训练模型文件下包括:

 

(5)复制models\research\object_detection\samples\configs\ssd_mobilenet_v1_pets.config到项目根目录下。

(6)复制models\research\object_detection目录下的train.py、eval.py和export_inference_graph.py文件到项目根目录下

(7)复制models\research\object_detection文件夹下的utils目录到项目根目录下,create_pascal_tf_record.py会用到。

(8)新建record文件夹,用于存放TFrecord数据。

修改配置文件

(1)修改pascal_label_map.pbtxt中类标名,根据自己数据集修改

(2)修改dataset中的create_pascal_tf_record.py,修改后如下:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import hashlib
import io
import logging
import os

from lxml import etree
import PIL.Image
import tensorflow as tf

from object_detection.utils import dataset_util
from object_detection.utils import label_map_util


flags = tf.app.flags
flags.DEFINE_string('data_dir', '', 'Root directory to raw PASCAL VOC dataset.')
flags.DEFINE_string('set', 'train', 'Convert training set, validation set or '
                    'merged set.')
flags.DEFINE_string('annotations_dir', 'Annotations',
                    '(Relative) path to annotations directory.')
flags.DEFINE_string('
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值