首先,我从来没有为移动设备导出任何东西,所以我对此的了解非常少,所以它可能是一些愚蠢的东西。我正在使用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上搜索可能是什么解决方案,但我认为值得花时间在这里发帖,看看我是否也可以获得任何见解。
谢谢!