如何在Android项目中使用faster-rcnn frozen_graph_quantized.pb?

时间:2018-02-15 17:53:11

标签: android tensorflow

首先,我从来没有为移动设备导出任何东西,所以我对此的了解非常少,所以它可能是一些愚蠢的东西。我正在使用Tensorflow 1.5,并提供了一个更快的rcnn frozen_graph_quantized.pb protobuf文件,并要求让它在Android手机上运行。到目前为止,我尚未成功将其用于Android。我可以在电脑上运行这个没有问题,但我相信我的问题可能源于Android演示项目模型期待一定的输入。

所以我最初尝试了一些我在网上找到的演示,但这些演示似乎都不适用于1.5+版本的TF。在深入了解之后,我发现API方法已经改变或被剥离,这些都是错误的。所以我接着尝试获得张量流" android"示例工作,这是成功的,但是没有一个与quick-rcnn一致,但我认为转换它不会太难。

我目前稍微修改了TFDetect项目以指向我的protobuf文件的路径。它成功地能够编译和安装他的设备,但是当我去运行TFDetect应用程序时,我收到以下错误。

FATAL EXCEPTION: main
Process: org.tensorflow.demo, PID: 26085
java.lang.RuntimeException: Failed to find input Node 'image_tensor'

在探测器的python逻辑中,我们有以下代码:

def __init__(self, models_path):
        # load config
        cfg_from_file(os.path.join(models_path, "config.json"))
        #load faster graph
        self._graph = load_graph(os.path.join(models_path, "frozen_graph_quantized.pb"))
        # We access the input and output nodes
        self._image = self._graph.get_tensor_by_name('ph_image:0')
        self._im_info = self._graph.get_tensor_by_name('ph_im_info:0')

        # middle points
        rpn_cls_prob = self._graph.get_tensor_by_name('rpn_cls_prob:0')
        rpn_bbox_pred = self._graph.get_tensor_by_name('rpn_bbox_pred:0')
        mode = "TEST"
        anchors, anchor_length = anchor_component(self._im_info)
        self._rois_pred, self.rpn_scores = my_proposal_layer(rpn_cls_prob, rpn_bbox_pred, "proposal_layer", self._im_info, anchors, mode)

        # endpoints
        self._cls_prob = self._graph.get_tensor_by_name('cls_prob:0')
        self._bbox_pred = self._graph.get_tensor_by_name('bbox_pred:0')

在图表上运行ParseFromString时,我得到以下输出:

['ph_image=>Placeholder', 'ph_im_info=>Placeholder', 'resnet_v1_101_3/rpn_cls_prob_reshape=>Softmax', 'resnet_v1_101_5/cls_prob=>Softmax']

我不确定我需要做些什么来使用Google团队提供的Android示例。我仍然在Google上搜索可能是什么解决方案,但我认为值得花时间在这里发帖,看看我是否也可以获得任何见解。

谢谢!

0 个答案:

没有答案