Darkflow: グラフの使用-yolo.pbエラーAndroidの例

作成日 2017年02月16日  ·  4コメント  ·  ソース: thtrieu/darkflow

2つのファイルgraph-tiny-yolo-voc.pbとgraph-yolo.pbを生成しました。

ファイル「graph-tiny-yolo-voc.pb」は問題ありませんが、graph-yolo.pbエラーが発生します

I / native:tensorflow_inference_jni.cc:139GraphDefからTensorFlowグラフを作成しています。
E / native:tensorflow_inference_jni.cc:146 TensorFlowグラフを作成できませんでした:無効な引数:これらの属性でOp'ExtractImagePatches'をサポートするためのOpKernelが登録されていません。 登録済みデバイス:[CPU]、登録済みカーネル:

[[ノード:ExtractImagePatches = ExtractImagePatches T = DT_FLOAT、ksizes = [1、2、2、1]、padding = "VALID"、rates = [1、1、1、1]、strides = [1、2、2 1] ]]
E / tensorflow:TensorFlowYoloDetector:TF init status:3

最も参考になるコメント

Opkernelがないということは、この.pbを実行しているハードウェアの実装がないことを意味します。
これを解決するには、 ./net/ops/convolution.pyのクラスreorgを調べます。 _forwardforwardの2つのメソッドがあります。 現在のデフォルトオプションはforwardを使用しています。これには、テンソルフローの組み込みメソッドであるextract_image_patchesがあります。

2つのメソッドの名前を入れ替えると、手動実装を使用することになります。これは、Opkernelの実装では問題がないはずです。

全てのコメント4件

Opkernelがないということは、この.pbを実行しているハードウェアの実装がないことを意味します。
これを解決するには、 ./net/ops/convolution.pyのクラスreorgを調べます。 _forwardforwardの2つのメソッドがあります。 現在のデフォルトオプションはforwardを使用しています。これには、テンソルフローの組み込みメソッドであるextract_image_patchesがあります。

2つのメソッドの名前を入れ替えると、手動実装を使用することになります。これは、Opkernelの実装では問題がないはずです。

コードを変更しましたが、.pbを生成できません
/usr/bin/python3 ./flow.py --model /home/qkj/projects/dark_flow/darkflow/cfg/yolo-voc.cfg --load /home/qkj/projects/dark_flow/darkflow/bin/yolo- voc.weights --savepb

トレースバック(最後の最後の呼び出し):
ファイル"./flow.py"、42行目
tfnet = TFNet(FLAGS)
ファイル"/home/qkj/projects/dark_flow/darkflow/net/build.py"、50行目、__ init__
self.build_forward()
build_forwardのファイル"/home/qkj/projects/dark_flow/darkflow/net/build.py"、行70
state = op_create(* args)
ファイル"/home/qkj/projects/dark_flow/darkflow/net/ops/__init__.py"、27行目、op_create
op_typeslayer_typeを返します
ファイル"/home/qkj/projects/dark_flow/darkflow/net/ops/baseop.py"、42行目、__ init__
self.forward()
ファイル「/home/qkj/projects/dark_flow/darkflow/net/ops/convolution.py」、13行目、前方
範囲内のiの場合(h / s):
TypeError:'float'オブジェクトを整数として解釈できません

クラスreorg(BaseOp):
def forward(self):
inp = self.inp.out
shape = inp.get_shape()。as_list()
_、h、w、c=形状
s = self.lay.stride
out = list()
範囲内のiの場合(h / s):
row_i = list()
範囲内のjの場合(w / s):
si、sj = s * i、s * j
boxij = inp [:、si:si + s、sj:sj + s、:]
flatij = tf.reshape(boxij、[-1,1,1、c s s])
row_i + = [flatij]
out + = [tf.concat(2、row_i)]
self.out = tf.concat(1、out)

def _forward(self):
    inp = self.inp.out
    s = self.lay.stride
    self.out = tf.extract_image_patches(
        inp, [1,s,s,1], [1,s,s,1], [1,1,1,1], 'VALID')

ねえ、それはPython2からPython3に変換するときのバグです。 ご指摘いただきありがとうございます。コードを更新しました。

同じ問題が発生し、2つの関数の名前を交換しましたが、yolo.pbファイルがAndroidでエラーを引き起こします。 これを修正するのを手伝ってください!!!

[[ノード:ExtractImagePatches = ExtractImagePatches [T = DT_FLOAT、ksizes = [1、2、2、1]、padding = "VALID"、rates = [1、1、1、1]、strides = [1、2、2 、1]](47リーク)]]

ありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価