我得到了一个冻结(.pb)图形,它具有输入的动态形状(例如“无、无、无、3”或“?x?x?x3”)。我想将这些设置为静态形状(例如“1, 320, 320, 3”),但是我不确定如何将形状更改为输入占位符,以便将更改应用于随后的所有图层。在这种特殊情况下,我没有可用的代码或 ckpt 文件,因此必须在冻结 ( .pb) 图形上进行这项工作。
我已经尝试过什么?
我创建了一个简单的示例代码来制作一个简单的图形并将其保存为可用于测试不同方法的冻结图形。该图的创建方式如下:
import tensorflow as tf
def simple_cnn_graph():
graph = tf.Graph()
with graph.as_default():
input_layer = tf.placeholder(shape=[None, None, None, 3], dtype=tf.float32)
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2, name='pool1')
conv2 = tf.layers.conv2d(
inputs=pool1,
filters=16,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)
pool2 = tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2, name='pool2')
return graph, pool2
if __name__=='__main__':
graph, output = simple_cnn_graph()
with tf.Session(graph=graph) as sess:
sess.run(tf.global_variables_initializer())
graph_def = …
Run Code Online (Sandbox Code Playgroud) 我正在开展一个带手势识别的项目.现在我想准备一个只能显示图像的演示文稿.我有一系列定义手势的图像,我想在单个图像中显示它们,就像在文献中显示运动历史图像一样.
我的问题很简单,我可以使用opencv中的函数来制作运动历史图像,比如定义手的运动的10个或更多图像.
作为一个例子,我有以下图像,我想显示手的位置(不透明度直接取决于时间参考).
我尝试使用GIMP来合并具有不同不透明度的图层以执行相同的操作,但输出效果不佳.
我的问题很简单.这可能太简单了.但事情是在我的一个项目上工作时,我使用以下几行来扩展二进制图像.
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 2);
Run Code Online (Sandbox Code Playgroud)
这基本上是用3x3矩形结构元素扩展二进制图像.从最后一个参数可以看出我正在执行此操作的2次迭代,这相当于:
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1);
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1);
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果我只使用6x6结构元素执行一次迭代,而不是执行两次迭代,这在准确性和性能方面是否等同于上述代码?因为图像只迭代一次,它会更快吗?