- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在http://answers.opencv.org/question/183507/opencv-dnn-import-error-for-keras-pretrained-vgg16-model/之后,我正在尝试让密集网络在openCV DNN上工作,但得到:
"error: OpenCV(3.4.2) /io/opencv/modules/dnn/src/tensorflow/tf_graph_simplifier.cpp:712: error: (-2:Unspecified error) Tensor's data type is not supported in function 'getTensorContent'"
import numpy as np
from keras import applications
from keras import backend as K
import cv2 as cv
import tensorflow as tf
model = applications.densenet.DenseNet121(input_shape=(224, 224, 3), weights='imagenet', include_top=True)
sess = K.get_session()
print(model.input, model.outputs)
## Tensor("input_1:0", shape=(?, 224, 224, 3), dtype=float32) [<tf.Tensor 'fc1000/Softmax:0' shape=(?, 1000) dtype=float32>]
from tensorflow.python.tools import freeze_graph
from tensorflow.python.tools import optimize_for_inference_lib
MODEL_PATH = 'out'
MODEL_NAME = 'test'
input_node_name = 'input_1'
output_node_name = 'fc1000/Softmax'
!rm -rf {MODEL_PATH}/
tf.train.write_graph(sess.graph_def, MODEL_PATH, f'{MODEL_NAME}_graph.pb', as_text=False)
tf.train.write_graph(sess.graph_def, MODEL_PATH, f'{MODEL_NAME}_graph.pbtxt')
tf.train.Saver().save(sess, f'{MODEL_PATH}/{MODEL_NAME}.chkp')
freeze_graph.freeze_graph(f'{MODEL_PATH}/{MODEL_NAME}_graph.pbtxt',
None, False,
f'{MODEL_PATH}/{MODEL_NAME}.chkp',
output_node_name,
"save/restore_all",
"save/Const:0",
f'{MODEL_PATH}/frozen_{MODEL_NAME}.pb',
True, "")
graph_def = tf.GraphDef()
with tf.gfile.Open(f'{MODEL_PATH}/frozen_{MODEL_NAME}.pb', "rb") as f:
graph_def.ParseFromString(f.read())
output_graph_def = optimize_for_inference_lib.optimize_for_inference(
graph_def, [input_node_name], [output_node_name], tf.float32.as_datatype_enum)
with tf.gfile.GFile(f'{MODEL_PATH}/opt_{MODEL_NAME}.pb', "wb") as f:
f.write(output_graph_def.SerializeToString())
# Strip Const nodes.
for i in reversed(range(len(graph_def.node))):
if graph_def.node[i].op == 'Const':
del graph_def.node[i]
# for attr in ['T', 'data_format', 'Tshape', 'N', 'Tidx', 'Tdim',
# 'use_cudnn_on_gpu', 'Index', 'Tperm', 'is_training',
# 'Tpaddings']:
# if attr in graph_def.node[i].attr:
# del graph_def.node[i].attr[attr]
# Save stripped model.
tf.train.write_graph(graph_def, "", f'{MODEL_PATH}/stripped_{MODEL_NAME}.pbtxt', as_text=True)
net = cv.dnn.readNetFromTensorflow(f'{MODEL_PATH}/opt_{MODEL_NAME}.pb', f'{MODEL_PATH}/stripped_{MODEL_NAME}.pbtxt')
## error: OpenCV(3.4.2) /io/opencv/modules/dnn/src/tensorflow/tf_graph_simplifier.cpp:712: error: (-2:Unspecified error) Tensor's data type is not supported in function 'getTensorContent'
最佳答案
尽管由于FusedBatchNorm,我仍然无法使optimize_for_inference正常工作,但感谢@dkurt和https://github.com/keras-team/keras/issues/6775的反馈,它们解释了keras学习阶段。 您必须在加载模型之前设置学习阶段!
使用set_learning_phase(0)加载模型:
import numpy as np
from keras import applications
from keras import backend as K
import tensorflow as tf
K.set_learning_phase(0) ##
model = applications.densenet.DenseNet121(input_shape=(224, 224, 3), weights='imagenet', include_top=True)
sess = K.get_session()
print(model.input, model.outputs)
## Tensor("input_1:0", shape=(?, 224, 224, 3), dtype=float32) [<tf.Tensor 'fc1000/Softmax:0' shape=(?, 1000) dtype=float32>]
from tensorflow.python.tools import freeze_graph
from tensorflow.python.tools import optimize_for_inference_lib
MODEL_PATH = 'out'
MODEL_NAME = 'test'
input_node_name = 'input_1'
output_node_name = 'fc1000/Softmax'
!rm -rf {MODEL_PATH}/
tf.train.write_graph(sess.graph_def, MODEL_PATH, f'{MODEL_NAME}_graph.pb', as_text=False)
tf.train.write_graph(sess.graph_def, MODEL_PATH, f'{MODEL_NAME}_graph.pbtxt')
tf.train.Saver().save(sess, f'{MODEL_PATH}/{MODEL_NAME}.chkp')
freeze_graph.freeze_graph(f'{MODEL_PATH}/{MODEL_NAME}_graph.pbtxt',
None, False,
f'{MODEL_PATH}/{MODEL_NAME}.chkp',
output_node_name,
"save/restore_all",
"save/Const:0",
f'{MODEL_PATH}/frozen_{MODEL_NAME}.pb',
True, "")
import cv2 as cv
net = cv.dnn.readNetFromTensorflow(f'{MODEL_PATH}/frozen_{MODEL_NAME}.pb')
# Smoke test
inp = np.ones([1, 3, 224, 224]).astype(np.float32)
net.setInput(inp)
dnn_out = net.forward()
print(dnn_out.shape, dnn_out[0,:5])
## (1, 1000) [2.0760612e-04 2.6876197e-04 5.9680151e-05 5.5908626e-05 1.4762023e-04]
WARNING:tensorflow:Didn't find expected Conv2D input to 'conv2_block1_0_bn/FusedBatchNorm_1'
opencv-4.0.0/modules/dnn/src/tensorflow/tf_importer.cpp:497: error: (-2:Unspecified error) Input layer not found: conv2_block1_1_bn/FusedBatchNorm_1 in function 'connect'
因此,如果您知道解决方案,请告诉我。谢谢
关于python - OpenCV DNN因keras DenseNet121而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493296/
我的第一个 DNN 站点。请放轻松。 我正在尝试加载一些扩展(博客和 PayPal 扩展)。 虽然管理控制台显示它们已安装,但我看不到它们或无法启动它们。它们在任何菜单上都不明显。 主题创作者说这不是
我对神经网络还很陌生,这就是我决定使用 Tflearn 的原因,因为它非常直观。但是我找不到我的问题的答案。 tflearn 文档提供了以下示例,用于让深度神经网络预测某些内容: network =
我尝试在暗网上运行 Openpose 并使用从这里下载的权重和配置文件:https://github.com/lincolnhard/openpose-darknet 这是我尝试在 Opencv 中创
屏幕截图:getBlob 返回的错误结果: 这里是附加代码: resize(img, img, Size(224, 224)); dnn::Blob inputBlob = dnn::Blob::fr
我正在尝试使用 publisher-subcriber no 通过从我的网络摄像头流式传输图像来运行我的对象识别程序。在我的程序中,我使用的是 opencv_dnn 库提供的 readNetFromT
我对 DNN 中的本地化过程了解不多。问题是如何本地化新模块? 是否可以分别在每个模块中包含本地化文件?你能想出什么解决方案? 最佳答案 多亏了 DotNetNuke,模块的本地化非常容易。 无论您的
我正在尝试通过创建数据库的副本并将 .net 文件复制到新文件夹中来复制用于测试目的的现有 DNN 门户。 在我复制站点并将 webconfig 更改为指向新站点并更改数据库中的别名后,我收到此错误。
DNN 6.0 有没有办法自动重新索引搜索结果。因为除非我们点击主机->搜索管理->重新索引内容,否则最近上传的一些内容在手动重新索引之前不会出现在搜索结果中。我想知道是否有一种方法可以自动化这个过程
我希望我的 DNN 网站的“内容管理器”仅编辑特定 HTML 模块实例的内容,而不是其设置。我如何实现这一目标?如果我允许此角色“编辑”模块,他们也可以访问和更改模块设置。 提前感谢您的投入。 最佳答
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在 DotNetNuke(DNN) 博客模块中,如何更改博客文章的顺序?默认情况下,最新的博客条目将始终显示在顶部。如何更改博客条目的顺序? 最佳答案 这需要您下载博客模块的源代码并自行添加此功能。它
我正在处理 DNN 皮肤,我需要在底部位置设置背景图像。 我试过在 skin.css 中设置背景位置并使用管理面板中的自定义样式表工具。但是在检查这个 css 时FireFox 或 Safari 中的
我一直在尝试使用 DNN(我已经使用了两周)向网站添加 JavaScript。我目前使用的版本是 07.04.00 (353)。我尝试将脚本粘贴到“页面设置”->“高级设置”中的标题和“模块设置”->
我想知道 dnn 模块的内存布局,以便我可以将权重移植到另一个库。 我可以按如下方式访问权重和偏差 cv::Mat weight = input_net.getParam(input_layer_na
我正在开发一个模块,当当前用户登录我们的网站或在我们的网站上注册一个新帐户时,它会自动在姊妹网站上创建一个新用户。注册新帐户后,我已经可以使用该模块。现在我需要找到一种在用户登录时触发它的方法。非常感
在 DNN 中,如何获取页面 ID、门户语言等门户设置作为 javascript 的变量?我试过这样的事情: 和 var pageTitle = dnn.getVar('pageTitle'); 但
我真的对这个问题感到沮丧,我正在尝试在 Windows Server 2008 中安装 DNN 7,我按照 DNN 站点中的步骤进行安装,但是当我运行安装程序向导时出现连接错误,我授予用户权限在文件夹
我在我的 DNN 模块中添加了一项检查,以排除某些用户在登录时不必回答某些问题。我不想对每个单独的角色进行硬编码,而只是排除特定角色组中的任何人。这样,如果我们将来有更多角色,如果我们希望将它们排除在
我使用从皮肤文件(皮肤对象)复制的代码创建了一个 DotNetNuke 模块。 我试图把它变成一个模块,这样我就可以把它放在任何页面上,并以我喜欢的任何方式移动和操纵它。 我已经设法让模块工作,但只是
我正尝试在我制作的 DNN 模块中发送电子邮件。但是,尽管它不会崩溃,但不会发送电子邮件。我认为这与我尝试使用的发件人电子邮件有关。我不是 100% 确定我应该为第一个参数使用哪个电子邮件。 Prot
我是一名优秀的程序员,十分优秀!