我想optimize_for_inference.py在模型动物园的冻结模型上使用tensorflow的脚本:ssd_mobilenet_v1_coco.
如何查找/确定模型的输入和输出名称?
这个问题可能会有所帮助:给定张量流模型图,如何找到输入节点和输出节点名称 (对我来说它没有)
当使用Tensorflows Object Detection API训练对象检测DNN时,它的可视化平台Tensorboard绘制了一个标量 regularization_loss_1
这是什么?我知道什么是正则化(使网络能够很好地通过各种方法(如辍学)进行概括),但我不清楚这种显示的损失可能是什么。
谢谢!
Tensorflows object_detection 项目的 labelmaps 包含 90 个类,虽然 COCO 只有 80 个类别。因此num_classes所有示例配置中的参数都设置为 90。
如果我现在下载并使用 COCO 2017 数据集,我需要将此参数设置为 80 还是保留为 90?
如果80(因为COCO有80个类)我需要调整labelmap,所以标准mscoco_label_map.pbtxt不正确,对吧?
如果有人能对此有所启发,我将非常感激:)
以下是标准的 80 个 COCO 类:
person
bicycle
car
motorbike
aeroplane
bus
train
truck
boat
traffic light
fire hydrant
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
backpack
umbrella
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
wine glass …Run Code Online (Sandbox Code Playgroud) 如何定义采用opencv的tracker.init()函数的boundingbox对象?是(xcenter,ycenter,boxwidht,boxheight)
或(xmin,ymin,xmax,ymax)
或(ymin,xmin,ymax,xmax)
或完全不同的东西?
我正在使用python和OpenCV 3.3,我基本上对要跟踪视频每一帧的每个对象执行以下操作:
tracker = cv2.trackerKCF_create()
ok = tracker.init(previous_frame,bbox)
bbox = tracker.update(current_frame)
Run Code Online (Sandbox Code Playgroud) 我知道如何配置VS Code调试器launch.json来调试当前的 python 文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${fileDirname}",
"env": {
"PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"
}
},
}
Run Code Online (Sandbox Code Playgroud)
但是如何配置launch.json来调试当前的 python测试文件呢pytest?
我做了一个项目,基本上使用谷歌对象检测 API 和张量流。
我所做的就是使用预先训练的模型进行推理:这意味着实时对象检测,其中输入是网络摄像头的视频流或使用 OpenCV 的类似内容。
现在我得到了相当不错的性能结果,但我想进一步提高 FPS。
因为我的经验是,Tensorflow 在推理时使用了我的整个内存,但 GPU 使用率根本没有达到最大值(NVIDIA GTX 1050 笔记本电脑上约为 40%,NVIDIA Jetson Tx2 上约为 6%)。
所以我的想法是通过增加每个会话运行中输入的图像批量大小来增加 GPU 使用率。
所以我的问题是:在将输入视频流的多个帧提供给之前,如何将它们一起批处理sess.run()?
查看我object_detetection.py的 github 存储库上的代码:( https://github.com/GustavZ/realtime_object_detection )。
如果您能提出一些提示或代码实现,我将非常感激!
import numpy as np
import os
import six.moves.urllib as urllib
import tarfile
import tensorflow as tf
import cv2
# Protobuf Compilation (once necessary)
os.system('protoc object_detection/protos/*.proto --python_out=.')
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
from stuff.helper import FPS2, WebcamVideoStream
# INPUT PARAMS
# Must …Run Code Online (Sandbox Code Playgroud) opencv inference video-processing object-detection tensorflow
我正在使用 LSTM 网络进行多元多时间步预测。因此,基本上seq2seq预测是将多个数据n_inputs输入模型以预测n_outputs时间序列的多个数据。
我的问题是如何有意义地应用Dropout,BatchnNormalization因为这似乎是循环网络和 LSTM 网络广泛讨论的主题。为了简单起见,我们坚持使用 Keras 作为框架。
案例 1:普通 LSTM
model = Sequential()
model.add(LSTM(n_blocks, activation=activation, input_shape=(n_inputs, n_features), dropout=dropout_rate))
model.add(Dense(int(n_blocks/2)))
model.add(BatchNormalization())
model.add(Activation(activation))
model.add(Dense(n_outputs))
Run Code Online (Sandbox Code Playgroud)
案例 2:带有 TimeDistributed Layers 的编码器解码器(如 LSTM)
model = Sequential()
model.add(LSTM(n_blocks, activation=activation, input_shape=(n_inputs,n_features), dropout=dropout_rate))
model.add(RepeatVector(n_outputs))
model.add(LSTM(n_blocks, activation=activation, return_sequences=True, dropout=dropout_rate))
model.add(TimeDistributed(Dense(int(n_blocks/2)), use_bias=False))
model.add(TimeDistributed(BatchNormalization()))
model.add(TimeDistributed(Activation(activation)))
model.add(TimeDistributed(Dropout(dropout_rate)))
model.add(TimeDistributed(Dense(1)))
Run Code Online (Sandbox Code Playgroud)
lstm keras recurrent-neural-network batch-normalization dropout
我遇到了一些我觉得很奇怪的事情:显然,真正深度复制 pandas 数据帧是不可能的。
我希望,如果我创建数据帧的深层副本,并修改该副本中的数据,它不会影响原始数据帧。但显然情况并非如此,如果我没有错的话甚至是可能的。
重现代码:
import pandas as pd
df = pd.DataFrame({'sets':set([1,2])}, index=[0])
def pop(df_in):
df = df_in.copy()
print(df['sets'].apply(lambda x: set([x.pop()])))
pop(df)
pop(df)
pop(df)
>>> KeyError: 'pop from an empty set'
Run Code Online (Sandbox Code Playgroud)
或者
import copy
import pandas as pd
df = pd.DataFrame({'sets':set([1,2])}, index=[0])
def pop(df_in):
df = copy.deepcopy(df_in)
print(df['sets'].apply(lambda x: set([x.pop()])))
pop(df)
pop(df)
pop(df)
>>> KeyError: 'pop from an empty set'
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我正在寻找 wtforms 的 SelectField 和 Textfield 之间的混合,其中可以输入一个经过验证并从给定选项列表自动完成的字符串,例如 SearchField 中的选择参数。
目前我有这个实现,它只是一个下拉菜单,但我希望用户能够输入任何字符串。输入字符串时,所有匹配选项都应显示在下拉列表中,就像谷歌搜索栏中一样。
possible_names = {0:'hans', 1:'sepp', 3:'max'}
class ReusableForm(Form):
name = SelectField("Enter a Name",
choices=[(uuid, name) for uuid, name in possible_names.items()],
validators=[validators.InputRequired()])
Run Code Online (Sandbox Code Playgroud) 我tensorflows script optimize_for_inderence.py在ssd_mobilenet_v1_coco modelwith 上使用以下命令:
python -m tensorflow.python.tools.optimize_for_inference \
--input /path/to/frozen_inference_graph.pb \
--output /path/to/optimized_inference_graph.pb \
--input_names=image_tensor \
--output_names=detection_boxes,detection_scores,num_detections,detection_classes
Run Code Online (Sandbox Code Playgroud)
它工作正常,没有错误,但是如果我要为其使用创建的Model .pb文件Tensorboard,Inference则会出现以下错误:
ValueError:graph_def在节点u'ToFloat'上无效:输入张量'image_tensor:0'无法将float32类型的张量转换为uint8类型的输入。
参见Tensorbaord可视化的原始图形:

如您所见,该节点ToFloat紧接在image_tensor输入之后
因此,优化显然出了点问题。但是呢
python ×5
tensorflow ×5
inference ×2
opencv ×2
tensorboard ×2
dataframe ×1
debugging ×1
deep-copy ×1
dropout ×1
flask ×1
keras ×1
lstm ×1
optimization ×1
pandas ×1
pytest ×1
regularized ×1
tfrecord ×1
wtforms ×1