想了解更多好玩的人工智能应用,请关注公众号“机器AI学习 数据AI挖掘”,”智能应用"菜单中包括:颜值检测、植物花卉识别、文字识别、人脸美妆等有趣的智能应用。。
本文介绍如下三个方面的知识:
1、如何将pascal voc数据集转化为TensorFlow的tfrecord文件?
2、如何使用lxml解析xml文件?
3、如何使用opencv在图片上画出目标边框?
【第一部分】将pascal voc数据集转化为TensorFlow的tfrecord文件
pascal voc数据集下载地址为:
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html
其中的name与label数字标签的映射关系文件下载地址为:
https://github.com/tensorflow/models
位于:models-master\research\object_detection\data\pascal_label_map.pbtxt
整个解析过程分为三步:
1.将name与label的映射文件pascal_label_map.pbtxt解析为字典格式数据,即name---label格式
2.将xml文件使用lxml读取出来后,将其解析为字典格式的数据。
3.将原始图片数据与annotation数据转为tfrecord文件格式数据。
代码如下:
import tensorflow
【第二部分】读取目标检测tfrecord数据并使用opencv在图片上画出目标边框
整个过程分为如下两步:
1.编写tfrecord解析函数,即反序列化函数。
2.获取图片标注数据,并使用OpenCV绘制边框。
具体代码如下:
import tensorflow
效果如下图:
PS:在解析tfrecord数据文件时,由于在解析函数中拿到的都是tensor,而不是数据本身,又由于session无法传递到解析函数中,所以许多预处理操作在解析函数中无法实施,需要在外面拿到数据后,在利用numpy等对数据进行预处理。