Tensorflow Object_2100:detectionn API, 训练时重复打印信息

Tensorflow object_detection API训练? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。2被浏览81分享邀请回答暂时还没有回答,开始写第一个回答一只弱鸡努力变得不那么弱的路
在安装并使用tensorflow中的Object-detection模块时遇到的一些问题汇总及解决方法
由于一些业务上的原因,需要做目标检测相关的部分。本来的想法是做特征值提取然后模式匹配,然后发现需要检测的目标种类比较多特征值也不太好提取。后来发现了一个名叫YOLO的用来目标检测的神经网络(https://pjreddie.com/darknet/yolo/)。效果非常好,但是似乎使用起来比较麻烦……和我目前用的开发环境不太相符,另外那台机器被我丢在学校了,所以放弃了。
但是相应的,我的目光开始转向机器学习方面,比如tensorflow的目标检测模块,google为windows,macOS,Linux提供了api以及很丰富的资料(虽然官网的自疗非常混乱,但是依然可以发现一些有用的)。但是由于我选择的是windows开发环境,所以在面对前几个版本还不支持windows的tensorflow的时候有些力不从心,在调试配置运行demo的过程中遇到了很多问题,消耗了相当多的时间,仅此记录以为后人前鉴,也算是一份笔记,方便以后重新配置时查看。
·0——官方教程
可以在看到一份官方的配置环境并测试的教程。这份教程也在g3doc文件夹中。
·1——python3.5与Anaconda3
在网上能找到的几乎所有资料里都在推荐Anaconda3,但是需要注意的是,如果你本地已经装有原版的python3.5,请将其卸载,并在Anaconda3安装过程中将"替换本地python"选项(此乃中文翻译,原为英文)勾中。并且重新设置系统变量。值得注意的是,用户变量中有三个关于Anaconda的环境变量,如果没有应当自己添加。
三个目录分别为
..\Anaconda3..\Anaconda3\Scripts..\Anaconda3\Library\bin
如果你希望自己使用的python版本是3.5.2的话,请下载Anaconda3-4.2.0,虽然在官网不太好找,但是聪明的你一定能找到下载的地方。
如果你不希望使用集成开发环境而希望自己安装需要使用到的第三方库的话,请确保你使用的python版本为64位。
·2——openCV3与python
在图像处理方面,毫无疑问的必须要用到opencv。目前支持python3.5的opencv版本为openCV3。
请下载,并将该文件放在Anaconda3的安装目录下的Lib文件夹,使用pip命令安装。
值得注意的是,opencv3在python中的引入方法为 “import cv2”
·3——需要哪些代码以及如何获取
是tensorflow在github上的主页,如果选择clone整个仓库有117MB,显然用不到那么多,我们需要的仅仅是其中的object-detection模块。
是tensorflow在github上的所有公开的模块中类,其中就有我们所需要的object-detection,如果你是git shell用户可以直接下载了,但是如果你是像我一样只是想用浏览器下载的话,请复制这个链接地址到,将地址粘贴进去并下载,注意的是如果你是第一次使用这个网站,需要进行一次授权,根据网站上的教程就好。
·4——其他需要的工具
我们可以下载到官方教程中提到的protoc-3.3.0,解压后将bin目录地址添加进path即可。
·5——其他可能遇到的错误
编译model_build_test.py时找不到object-detection包
在系统变量中新建pythonPath变量,变量值设为你下载的object-detection文件夹的上一级目录即可。
这个变量在遇到其他问题需要添加新的变量,两个变量之间用分号隔开。
编译model_build_test.py时找不到nets包
下载slim文件夹,将slim文件夹添加到pythonPath系统变量中。
-6——如何运行demo
在一个命令行窗口内与运行 jupyter notebook 。在新弹出的浏览器窗口中选择 object_detection_tutorial.ipynb 页面,点击run cells按钮逐步执行。
右上角的python状态显示运行状态,实心是为正在运行,空心为该步运行结束。download部分需要的时间较长,可以一次性点完之后切出去做点别的。
需要注意的是 在最后一个cells中 如果我们想在windows下正常运行,需要修改几行代码。修改方法及地方见。
-7——如何不使用*.ipynb文件运行程序
在file -& download as -& python中 我们可以获取当前ipynb文件导出的python文件。
在代码中 import IPython 并且在命令行界面使用 IPython *****的命令运行文件
没有更多推荐了,在Windows下使用Tensorflow Object Detection API - 简书
在Windows下使用Tensorflow Object Detection API
Tensorflow Object Detection API是Tensorflow官方发布的一个建立在TensorFlow之上的开源框架,可以轻松构建,训练和部署对象检测模型。TensorFlow官方使用TensorFlow Slim项目框实现了近年来提出的多种优秀的深度卷积神经网络框架。
Tensorflow Object Detection API可以选择的模型:
Single Shot Multibox Detector (SSD) with MobileNet,
SSD with Inception V2,
Region-Based Fully Convolutional Networks (R-FCN) with Resnet 101,
Faster RCNN with Resnet 101,
Faster RCNN with Inception Resnet v2
在本文中,我们实现了在Windows环境下运行该框架的流程。在此之前我们要使用相关的卷积模型,需要自行编译作者指定的Caffe,不同的框架使用的Caffe版本也不尽相同。而基于其他深度学习框架的代码受制于作者水平的不同,可用性与效率也不尽相同,因此TOD API在Tensorflow上提供了了一套标准化的编写模式,既有利于使用,也有为编写其他模型提供了例子。
Windows 10
Python 3.6
Tensorflow-gpu 1.2
CUDA Toolkit 8与 cuDNN v5
首先我们安装Tensorflow,最新的版本为1.2。在python 3.5+使用Tensorflow非常的简单,不需要过多的流程,只需要使用pip进行安装,所有相关的依赖就会自动安装完成。
pip install tensorflow
pip install tensorflow-gpu
其次官方要求下列包,我们一同使用pip进行安装。
pip install pillow
pip install lxml
pip install jupyter
pip install matplotlib
Tensorflow Object Detection API使用Protobufs来配置模型和训练参数。 在使用框架之前,必须编译Protobuf库。对于protobuf,在Linux下我们可以使用apt-get安装,在Windows下我们可以直接下载已经编译好的版本,这里我们选择下载列表中的protoc-3.3.0-win32.zip。
我们将bin文件夹加入到环境变量中,然后在CMD执行protco命令,可以看到protobuf要求输入文件。
protoc.jpg
接下来我们切换到models目录下,使用protoc命令编译.proto文件
# From tensorflow/models/
protoc object_detection/protos/*.proto --python_out=.
我们可以看见.proto文件已经被编译为了.py文件。
官方提供了一个object_detection_tutorial.ipynb文件,这个Demo会自动下载并执行最小最快的模型Single Shot Multibox Detector (SSD) with MobileNet。检测结果如下:
为了方便在项目中使用,我们重写了一个Python文件,其中网络模型可以从下面的地址下载,每一个模型都有一个frozen_inference_graph.pb文件。代码与运行结果如下:
Tensorflow detection model:
# coding:utf8
import sys
import cv2
import numpy as np
import tensorflow as tf
sys.path.append("..")
from utils import label_map_util
from utils import visualization_utils as vis_util
class TOD(object):
def __init__(self):
# Path to frozen detection graph. This is the actual model that is used for the object detection.
self.PATH_TO_CKPT = 'frozen_inference_graph.pb'
# List of the strings that is used to add correct label for each box.
self.PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')
self.NUM_CLASSES = 90
self.detection_graph = self._load_model()
self.category_index = self._load_label_map()
def _load_model(self):
detection_graph = tf.Graph()
with detection_graph.as_default():
od_graph_def = tf.GraphDef()
with tf.gfile.GFile(self.PATH_TO_CKPT, 'rb') as fid:
serialized_graph = fid.read()
od_graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(od_graph_def, name='')
return detection_graph
def _load_label_map(self):
label_map = label_map_util.load_labelmap(self.PATH_TO_LABELS)
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=self.NUM_CLASSES, use_display_name=True)
category_index = label_map_util.create_category_index(categories)
return category_index
def detect(self, image):
with self.detection_graph.as_default():
with tf.Session(graph=self.detection_graph) as sess:
# Expand dimensions since the model expects images to have shape: [1, None, None, 3]
image_np_expanded = np.expand_dims(image, axis=0)
image_tensor = self.detection_graph.get_tensor_by_name('image_tensor:0')
# Each box represents a part of the image where a particular object was detected.
boxes = self.detection_graph.get_tensor_by_name('detection_boxes:0')
# Each score represent how level of confidence for each of the objects.
# Score is shown on the result image, together with the class label.
scores = self.detection_graph.get_tensor_by_name('detection_scores:0')
classes = self.detection_graph.get_tensor_by_name('detection_classes:0')
num_detections = self.detection_graph.get_tensor_by_name('num_detections:0')
# Actual detection.
(boxes, scores, classes, num_detections) = sess.run(
[boxes, scores, classes, num_detections],
feed_dict={image_tensor: image_np_expanded})
# Visualization of the results of a detection.
vis_util.visualize_boxes_and_labels_on_image_array(
np.squeeze(boxes),
np.squeeze(classes).astype(np.int32),
np.squeeze(scores),
self.category_index,
use_normalized_coordinates=True,
line_thickness=8)
while True:
cv2.namedWindow("detection", cv2.WINDOW_NORMAL)
cv2.imshow("detection", image)
if cv2.waitKey(110) & 0xff == 27:
if __name__ == '__main__':
image = cv2.imread('dog.jpg')
detecotr = TOD()
detecotr.detect(image)
咸鱼一只,最近实习中,暂停更新...
https://github.com/xiaochus
文章来源:github 作者:fengjian 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上运行一个神经网络的关键技术点 在卷积神经网络适用的领域里,已经出现了一些很经典的图像分类网络,比如 VGG16/VGG19,Incep...
在利用深度学习网络进行预测性分析之前,我们首先需要对其加以训练。目前市面上存在着大量能够用于神经网络训练的工具,但TensorFlow无疑是其中极为重要的首选方案之一。 这就是Tensor的全部含义。在卷积神经网络等深度学习方案当中,大家会需要与四维张量打交道。但本示例中提...
1 天前 作者简介: MATTHIJS HOLLEMANS 荷兰人,独立开发者,专注于底层编码,GPU优化和算法研究。目前研究方向为IOS上的深度学习及其在APP上的应用。 推特地址:https://twitter.com/mhollemans 邮件地址:mailto:ma...
1. 介绍 首先让我们来看看TensorFlow! 但是在我们开始之前,我们先来看看Python API中的TensorFlow代码,这样你就可以感受到我们怎么做的。 这段很短的 Python 程序生成了一些三维数据, 然后用一个平面拟合它。 该代码的第一部分构建了数据流图...
无论做什么, 都不要急于求成。 因为, 播种和收获, 从来都不在一个季节。
是一束光,是一眼清泉 从小长出的想象 没打预防针的童年 所以有那么多的疫情泛滥 我没有美丽的故事可记忆 只有寂静的村落, 有太多的青草被羊群吃掉 草垛里安置的小窝, 里面有落难的星星与我相伴 甚至哭泣都是一种幸福 南方有甜蜜运来 有更早的事物先于我们抵达 我一直抵触的,其实...
对于Objective-C来说 Unit Testing的价值是什么? 最大的问题是“对于Objective-C来说 Unit Testing的价值是什么?” 服务端的小伙伴会Mock整个数据库,仅仅为了测试一条类似于“Hello World” 的SQL语句。在iOS中,你...
文/观复知常
图/来源网络 过年在家,因外甥、外甥女看动画片,有幸又跟着看了几集西游记,发现每当唐僧师徒到一个人家借宿化斋饭时,总是说:老人家,我们是好人。在西游记中,多次出现这种没有任何依据的自证好人,但过去的人却能很自然的相信,即使面对唐僧师徒这种看起来很不靠谱的团...
在我们日常的生活中,有很多的事情。事很小,但却不能小看了这些事情。或许就是这些小事情,让生命变得美丽,让生活变得充实,从而改了许许多多的想法……用Tensorflow
Object Detection API 训练自己的数据集
一、准备数据集
Tensorflow Object Detection API 用 TFRecord 文件格式读取数据,需把 VOC 格式的数据集进行转换(我自己的数据集是VOC2007)
1、修改 tensorflow/models/object_detection/create_pascal_tf_record.py 文件第84行和162行。
2、修改tensorflow/models/object_detection/data/pascal_label_map.pbtxt 文件里的类别.
3、运行命令:
# From tensorflow/models
python object_detection/create_pascal_tf_record.py \
--label_map_path=object_detection/data/pascal_label_map.pbtxt \
--data_dir=VOCdevkit --year=VOC2007 --set=train \
--output_path=pascal_train.record
python object_detection/create_pascal_tf_record.py \
--label_map_path=object_detection/data/pascal_label_map.pbtxt \
--data_dir=VOCdevkit --year=VOC2007 --set=val \
--output_path=pascal_val.record
执行后会在object_detection文件夹下生成pascal_train.record和pascal_val.record两个文件。
二、下载预训练模型
下载地址:
解压命令例子:
tar -xzvf ssd_mobilenet_v1_coco.tar.gz
三、修改配置文件
修改 object_detection/samples/configs/faster_rcnn_inception_resnet_v2_atrous_pets.config文件:
(1)num_classes:修改为自己的classes num
(2)将所有PATH_TO_BE_CONFIGURED的地方修改为自己之前设置的路径(共5处)
进入object_detection目录,运行:
tensorflow/models$ python object_detection/train.py --train_dir='/home/anngic/tensorflow/train' --pipeline_config_path='/home/anngic/tensorflow/models/object_detection/samples/configs/faster_rcnn_inception_resnet_v2_atrous_coco.config'
五、tensorboad
输入命令:
tensorboard --logdir=/home/shz/TF-OD-Test/train
在浏览器中输入,就能看到训练曲线了。
没有更多推荐了,一只弱鸡努力变得不那么弱的路
在安装并使用tensorflow中的Object-detection模块时遇到的一些问题汇总及解决方法
由于一些业务上的原因,需要做目标检测相关的部分。本来的想法是做特征值提取然后模式匹配,然后发现需要检测的目标种类比较多特征值也不太好提取。后来发现了一个名叫YOLO的用来目标检测的神经网络(https://pjreddie.com/darknet/yolo/)。效果非常好,但是似乎使用起来比较麻烦……和我目前用的开发环境不太相符,另外那台机器被我丢在学校了,所以放弃了。
但是相应的,我的目光开始转向机器学习方面,比如tensorflow的目标检测模块,google为windows,macOS,Linux提供了api以及很丰富的资料(虽然官网的自疗非常混乱,但是依然可以发现一些有用的)。但是由于我选择的是windows开发环境,所以在面对前几个版本还不支持windows的tensorflow的时候有些力不从心,在调试配置运行demo的过程中遇到了很多问题,消耗了相当多的时间,仅此记录以为后人前鉴,也算是一份笔记,方便以后重新配置时查看。
·0——官方教程
可以在看到一份官方的配置环境并测试的教程。这份教程也在g3doc文件夹中。
·1——python3.5与Anaconda3
在网上能找到的几乎所有资料里都在推荐Anaconda3,但是需要注意的是,如果你本地已经装有原版的python3.5,请将其卸载,并在Anaconda3安装过程中将"替换本地python"选项(此乃中文翻译,原为英文)勾中。并且重新设置系统变量。值得注意的是,用户变量中有三个关于Anaconda的环境变量,如果没有应当自己添加。
三个目录分别为
..\Anaconda3..\Anaconda3\Scripts..\Anaconda3\Library\bin
如果你希望自己使用的python版本是3.5.2的话,请下载Anaconda3-4.2.0,虽然在官网不太好找,但是聪明的你一定能找到下载的地方。
如果你不希望使用集成开发环境而希望自己安装需要使用到的第三方库的话,请确保你使用的python版本为64位。
·2——openCV3与python
在图像处理方面,毫无疑问的必须要用到opencv。目前支持python3.5的opencv版本为openCV3。
请下载,并将该文件放在Anaconda3的安装目录下的Lib文件夹,使用pip命令安装。
值得注意的是,opencv3在python中的引入方法为 “import cv2”
·3——需要哪些代码以及如何获取
是tensorflow在github上的主页,如果选择clone整个仓库有117MB,显然用不到那么多,我们需要的仅仅是其中的object-detection模块。
是tensorflow在github上的所有公开的模块中类,其中就有我们所需要的object-detection,如果你是git shell用户可以直接下载了,但是如果你是像我一样只是想用浏览器下载的话,请复制这个链接地址到,将地址粘贴进去并下载,注意的是如果你是第一次使用这个网站,需要进行一次授权,根据网站上的教程就好。
·4——其他需要的工具
我们可以下载到官方教程中提到的protoc-3.3.0,解压后将bin目录地址添加进path即可。
·5——其他可能遇到的错误
编译model_build_test.py时找不到object-detection包
在系统变量中新建pythonPath变量,变量值设为你下载的object-detection文件夹的上一级目录即可。
这个变量在遇到其他问题需要添加新的变量,两个变量之间用分号隔开。
编译model_build_test.py时找不到nets包
下载slim文件夹,将slim文件夹添加到pythonPath系统变量中。
-6——如何运行demo
在一个命令行窗口内与运行 jupyter notebook 。在新弹出的浏览器窗口中选择 object_detection_tutorial.ipynb 页面,点击run cells按钮逐步执行。
右上角的python状态显示运行状态,实心是为正在运行,空心为该步运行结束。download部分需要的时间较长,可以一次性点完之后切出去做点别的。
需要注意的是 在最后一个cells中 如果我们想在windows下正常运行,需要修改几行代码。修改方法及地方见。
-7——如何不使用*.ipynb文件运行程序
在file -& download as -& python中 我们可以获取当前ipynb文件导出的python文件。
在代码中 import IPython 并且在命令行界面使用 IPython *****的命令运行文件
没有更多推荐了,}

我要回帖

更多关于 libfacedetection 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信