将Tensorflow对象检测与keras CNN分类器集成

时间:2018-12-10 12:36:59

标签: python tensorflow machine-learning keras deep-learning

我的问题是使用mobilenet SSD检测对象,然后使用在Keras中训练的CNN分类器从边界框中读取数据。每次获得边界框后,都必须使用CNN分类器对其进行评估。 在引用git和stack中的问题数量时,我开始编写自己的编码。但是,在使用tf.reset_default_graph()重置tf图并从keras加载.h5之后,会抛出错误

"ValueError: 
 Tensor("loss/dense_6_loss/Const:0", shape=(), 
 dtype=float32) must be from the same graph as 
 Tensor("truediv_19:0", shape=(?, 36), 
 dtype=float32)."

我正在通过Keras和Tensorflow作为后端来执行实例检测和图像检索任务。

show:ValueError:张量a必须与张量b来自同一图。

代码如下:

Merge.py
from keras import backend as K

g1=tf.Graph()
g2=Graph()
sess1=tf.Session(graph=g1)
sess2=Session(graph=g2)

def intiMaskrcnn():
     with g1.as_default():
          with sess1.as_default():
               Model1=........
tf.rest_defaut_graph()
def instanceDetect():
     K.set_session(sess1)
     with g1.as_default():
           Model1.predit()
            ............
k.clear_session()

def intiMobilenet():
    with g2.as_default():
         with sess2.as_default():
              Model2=........

def Retrieval():
    K.set_session(sess2)
     with g2.as_default():
         Model2.predit()
           ............

我需要知道是否可以同时将tf和Keras集成到一个管道中。如果可能的话,如何做?

1 个答案:

答案 0 :(得分:0)

这有助于我在tensorflow SSD对象检测中运行keras模型。

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>