Darkflow: usando o exemplo android do erro graph-yolo.pb

Criado em 16 fev. 2017  ·  4Comentários  ·  Fonte: thtrieu/darkflow

Eu gerei dois arquivos graph-tiny-yolo-voc.pb e graph-yolo.pb.

o arquivo "graph-tiny-yolo-voc.pb" está ok, mas erro graph-yolo.pb

I/native: tensorflow_inference_jni.cc:139 Criando o gráfico do TensorFlow a partir do GraphDef.
E/nativo: tensorflow_inference_jni.cc:146 Não foi possível criar o gráfico do TensorFlow: Argumento inválido: Nenhum OpKernel foi registrado para suportar Op 'ExtractImagePatches' com esses attrs. Dispositivos registrados: [CPU], Kernels registrados:

[[Node: 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

Comentários muito úteis

Sem Opkernel significa que não há implementação para o hardware executando este .pb .
Para resolver isso, veja a classe reorg de ./net/ops/convolution.py . Tem dois métodos _forward e forward . A opção padrão atual está usando forward , que tem extract_image_patches - um método interno de tensorflow.

Troque os nomes dos dois métodos e você estará usando minha implementação manual, que não deve ter problemas com a implementação do Opkernel.

Todos 4 comentários

Sem Opkernel significa que não há implementação para o hardware executando este .pb .
Para resolver isso, veja a classe reorg de ./net/ops/convolution.py . Tem dois métodos _forward e forward . A opção padrão atual está usando forward , que tem extract_image_patches - um método interno de tensorflow.

Troque os nomes dos dois métodos e você estará usando minha implementação manual, que não deve ter problemas com a implementação do Opkernel.

eu alterei o código, mas não consigo gerar .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

Traceback (última chamada mais recente):
Arquivo "./flow.py", linha 42, em
tfnet = TFNet(BANDEIRAS)
Arquivo "/home/qkj/projects/dark_flow/darkflow/net/build.py", linha 50, em __init__
self.build_forward()
Arquivo "/home/qkj/projects/dark_flow/darkflow/net/build.py", linha 70, em build_forward
estado = op_create(*args)
Arquivo "/home/qkj/projects/dark_flow/darkflow/net/ops/__init__.py", linha 27, em op_create
retornar op_types layer_type
Arquivo "/home/qkj/projects/dark_flow/darkflow/net/ops/baseop.py", linha 42, em __init__
self.forward()
Arquivo "/home/qkj/projects/dark_flow/darkflow/net/ops/convolution.py", linha 13, em frente
para i no intervalo (h/s):
TypeError: o objeto 'float' não pode ser interpretado como um inteiro

reorganização de classe(BaseOp):
def para frente (auto):
inp = self.inp.out
forma = inp.get_shape().as_list()
_, h, w, c = forma
s = self.lay.stride
fora = lista()
para i no intervalo (h/s):
linha_i = lista()
para j no intervalo (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])
linha_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')

Ei, isso é um bug ao traduzir de Python2 para Python3. Obrigado por apontar, atualizei o código.

Eu tenho o mesmo problema e troquei os nomes de 2 funções, mas o arquivo yolo.pb ainda causa erro no Android. Por favor me ajude a corrigir isso!!!

[[Node: ExtractImagePatches = ExtractImagePatches[T=DT_FLOAT, ksizes=[1, 2, 2, 1], padding="VALID", rates=[1, 1, 1, 1], strides=[1, 2, 2] , 1]] (47-vazamentos)]]

Obrigado

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

LeeroyHannigan picture LeeroyHannigan  ·  4Comentários

hrshovon picture hrshovon  ·  5Comentários

wonny2001 picture wonny2001  ·  4Comentários

borasy picture borasy  ·  3Comentários

Khobzer picture Khobzer  ·  5Comentários