当前位置:首页 > 智能硬件 > 人工智能AI
[导读] Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构,大大降低了开发难度,利用现成的网络结构,无论fine-tuning还是重新训练方便了不少。而且T

Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构,大大降低了开发难度,利用现成的网络结构,无论fine-tuning还是重新训练方便了不少。而且TensorFlow内包含了一个强大的物体检测API,我们可以利用这API来训练自己的数据集实现特殊的目标检测。最近笔者终于跑通TensorFlow Object DetecTIon API的ssd_mobilenet_v1模型,这里记录下如何完整跑通数据准备到模型使用的整个过程,相信对大家能有所帮助。

Object DetecTIon API提供了5种网络结构的预训练的权重,全部是用数据集进行训练,这五种模型分别是SSD+mobilenet、SSD+incepTIon_v2、R-FCN+resnet101、faster RCNN+resnet101、faster RCNN+incepTIon+resnet101。各个模型的精度和计算所需时间如下。下面及介绍下如何使用Object Detection去训练自己的模型。

这里TensorFlow的安装就不再说明了,网上的教程一大把,大家可以找到很详尽的安装TensorFlow的文档。

tensorflow 训练模型训练前准备工作

使用protobuf来配置模型和训练参数,所以API正常使用必须先编译protobuf库,这里可以下载直接编译好的pb库( https://github.com/google/protobuf/releases ),解压压缩包后,把protoc加入到环境变量中:
$ cd tensorflow/models

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

(我是把protoc加到环境变量中,遇到找不到*.proto文件的报错,后来把protoc.exe放到models/object_detection目录下,重新执行才可以)

然后将models和slim(tf高级框架)加入python环境变量:
PYTHONPATH=$PYTHONPATH:/your/path/to/tensorflow/models:/your/path/to/tensorflow/models/slim

tensorflow 训练模型数据准备

数据集需要转化成PASCAL VOC结构,API提供了create_pascal_tf_record.py,把VOC结构数据集转换成.record格式。不过我们发现更简单的方式,Datitran提供一种更简单生产.record格式的方法。

首先需要先要标注图像相应标签,这里可以使用labelImg工具。每标注一张样本,即生成一个xml的标注文件。然后,把这些标注的xml文件,按训练集与验证集分别放置到两个目录下,在Datitran提供了xml_to_csv.py脚本。这里只要指定标注的目录名即可。接下来,然后需要我们把对应的csv格式转换成.record格式。

def main():
# image_path = os.path.join(os.getcwd(), 'annotations')
image_path = r'D: raining-setsobject-detectionsunglasseslabel est'
xml_df = xml_to_csv(image_path)
xml_df.to_csv('sunglasses_test_labels.csv', index=None)
print('Successfully converted xml to csv.')

调用generate_tfrecord.py,注意要指定--csv_input与--output_path这两个参数。执行下面命令:
python generate_tfrecord.py --csv_input=sunglasses_test_labels.csv --output_path=sunglass_test.record

这样就生成了训练及验证用的train.record与test.record。接下来指定标签名称,仿照models/ object_detection/data/ pet_label_map.pbtxt,重新创建一个文件,指定标签名。
item {
id: 1
name: 'sunglasses'
}

tensorflow 训练模型训练教程

根据自己的需要,选择一款用coco数据集预训练的模型,把前缀model.ckpt放置在待训练的目录,这里meta文件保存了graph和metadata,ckpt保存了网络的weights,这几个文件表示预训练模型的初始状态。

打开ssd_mobilenet_v1_pets.config文件,并做如下修改:

num_classes:修改为自己的classes num

将所有PATH_TO_BE_CONFIGURED的地方修改为自己之前设置的路径(共5处)

其他参数均保持默认参数。

准备好上述文件后就可以直接调用train文件进行训练。
python object_detection/train.py
--logtostderr
--pipeline_config_path= D:/training-sets /data-translate/training/ssd_mobilenet_v1_pets.config
--train_dir=D:/training-sets/data-translate/training

TensorBoard监控:

通过tensorboard工具,可以监控训练过程,输入西面指令后,在浏览器输入localhost:6006(默认)即可。
tensorboard --logdir= D:/training-sets/data-translate/training

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

近年来,随着现代医疗技术的进步,人类的平均寿命不断延长,导致人口老龄化危机加剧[1]。在这一背景下,中风发病率预计将呈上升趋势,为提高患者的运动能力,机器人在康复领域得到了广泛的应用,尤其是下肢外骨骼机器人[2]。这类机...

关键字: 脑机接口 SSVEP 深度学习

以下内容中,小编将对机器学习的相关内容进行着重介绍和阐述,希望本文能帮您增进对机器学习的了解,和小编一起来看看吧。

关键字: 机器学习 深度学习

今天,小编将在这篇文章中为大家带来机器学习的有关报道,通过阅读这篇文章,大家可以对机器学习具备清晰的认识,主要内容如下。

关键字: 机器学习 深度学习

随着科技的不断进步,人工智能(AI)已成为当今世界的热门话题。它以其强大的计算能力和深度学习能力,在多个领域展现出巨大的应用潜力。本文将对人工智能技术进行详细的探究,包括其定义、发展历程、主要技术、应用领域以及面临的挑战...

关键字: 人工智能 深度学习 计算机

语音识别这一技术也越来越受到关注。尤其,随着深度学习技术应用在语音识别技术中,使得语音识别的性能得到了显著提升,也使得语音识别技术的普及成为了现实。

关键字: 语音识别 深度学习 Audry系统

在监督学习中,我们有一组带有标签的数据,其中包含了输入和输出的对应关系。我们的目标是通过训练模型,使其能够根据输入预测正确的输出。常见的监督学习算法包括线性回归、逻辑回归和支持向量机(SVM)等。

关键字: 经典机器学习 训练模型 线性回归

本文中,小编将对机器学习予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 机器学习 深度学习

随着信息技术和算法研究的不断深入,人工智能(Artificial Intelligence, AI)已逐渐从理论构想走向现实应用,并在全球范围内引发了科技革命。当前阶段的人工智能正处于一个快速发展且日益成熟的时期,我们将...

关键字: 人工智能 深度学习

随着信息技术的飞速发展,人工智能(Artificial Intelligence, AI)作为一门综合了计算机科学、数学、统计学、认知科学和神经科学等多个学科知识的前沿技术领域,正以前所未有的速度改变着世界。本文将系统梳...

关键字: 人工智能 深度学习

一直以来,机器学习都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来机器学习的相关介绍,详细内容请看下文。

关键字: 机器学习 深度学习
关闭
关闭