Darkflow: рдЧреНрд░рд╛рдл-yolo.pb рддреНрд░реБрдЯрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдлрд╝рд░ре░ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: thtrieu/darkflow

рдореИрдВрдиреЗ рджреЛ рдлрд╛рдЗрд▓ рдЧреНрд░рд╛рдл-рдЯрд┐рдиреА-рдпреЛрд▓реЛ-рд╡реЛрдХ.рдкреАрдмреА рдФрд░ рдЧреНрд░рд╛рдл-рдпреЛрд▓реЛ.рдкреАрдмреА рдЬреЗрдирд░реЗрдЯ рдХреА рд╣реИред

рдлрд╝рд╛рдЗрд▓ "graph-tiny-yolo-voc.pb" рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди graph-yolo.pb рддреНрд░реБрдЯрд┐

рдореИрдВ/рджреЗрд╢реА: tensorflow_inference_jni.cc:139 GraphDef рд╕реЗ TensorFlow рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдирд╛ред
E/native: tensorflow_inference_jni.cc:146 TensorFlow рдЧреНрд░рд╛рдлрд╝ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрд╛: рдЕрдорд╛рдиреНрдп рддрд░реНрдХ: рдЗрди attrs рдХреЗ рд╕рд╛рде Op 'ExtractImagePatches' рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ OpKernel рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрдВрдЬреАрдХреГрдд рдбрд┐рд╡рд╛рдЗрд╕: [рд╕реАрдкреАрдпреВ], рдкрдВрдЬреАрдХреГрдд рдХрд░реНрдиреЗрд▓:

[[рдиреЛрдб: ExtractImagePatches = ExtractImagePatches T = DT_FLOAT, ksizes = [1, 2, 2, 1], рдкреИрдбрд┐рдВрдЧ = "VALID", рджрд░реЗрдВ = [1, 1, 1, 1], рд╕реНрдЯреНрд░рд╛рдЗрдбреНрд╕ = [1, 2, 2, 1] ]]
E/tensorflow: TensorFlowYoloDetector: TF init рд╕реНрдерд┐рддрд┐: 3

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

No Opkernel рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕ .pb рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, reorg ./net/ops/convolution.py рджреЗрдЦреЗрдВред рдЗрд╕рдХреА рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ _forward рдФрд░ forward ред рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк forward рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ extract_image_patches рд╣реИ - рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХреА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ред

рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░реЗрдВ рдФрд░ рдЖрдк рдореЗрд░реЗ рдореИрдиреБрдЕрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдУрдкрдХрд░реНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

No Opkernel рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕ .pb рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, reorg ./net/ops/convolution.py рджреЗрдЦреЗрдВред рдЗрд╕рдХреА рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ _forward рдФрд░ forward ред рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк forward рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ extract_image_patches рд╣реИ - рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХреА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ред

рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░реЗрдВ рдФрд░ рдЖрдк рдореЗрд░реЗ рдореИрдиреБрдЕрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдУрдкрдХрд░реНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдХреЛрдб рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ .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, in
рдЯреАрдПрдлрдиреЗрдЯ = рдЯреАрдПрдлрдиреЗрдЯ (рдЭрдВрдбреЗ)
рдлрд╝рд╛рдЗрд▓ "/home/qkj/projects/dark_flow/darkflow/net/build.py", рд▓рд╛рдЗрди 50, __init__ рдореЗрдВ
рд╕реЗрд▓реНрдл.рдмрд┐рд▓реНрдб_рдлреЙрд░рд╡рд░реНрдб ()
рдлрд╝рд╛рдЗрд▓ "/home/qkj/projects/dark_flow/darkflow/net/build.py", рд▓рд╛рдЗрди 70, build_forward рдореЗрдВ
рд░рд╛рдЬреНрдп = op_create(*args)
рдлрд╝рд╛рдЗрд▓ "/home/qkj/projects/dark_flow/darkflow/net/ops/__init__.py", рд▓рд╛рдЗрди 27, op_create рдореЗрдВ
рд╡рд╛рдкрд╕реА op_types layer_type
рдлрд╝рд╛рдЗрд▓ "/home/qkj/projects/dark_flow/darkflow/net/ops/baseop.py", рд▓рд╛рдЗрди 42, __init__ рдореЗрдВ
рд╕реНрд╡рдпрдВ рдЖрдЧреЗ ()
рдлрд╝рд╛рдЗрд▓ "/home/qkj/projects/dark_flow/darkflow/net/ops/convolution.py", рд▓рд╛рдЗрди 13, рдЖрдЧреЗ рдХреА рдУрд░
рдореИрдВ рд╕реАрдорд╛ рдореЗрдВ (рдПрдЪ / рдПрд╕) рдХреЗ рд▓рд┐рдП:
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: 'рдлреНрд▓реЛрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ

рдХреНрд▓рд╛рд╕ рд░реАрдСрд░реНрдЧ (рдмреЗрд╕рдСрдк):
рдбреАрдИрдПрдлрд╝ рдлреЙрд░рд╡рд░реНрдб (рд╕реНрд╡рдпрдВ):
inp = self.inp.out
рдЖрдХрд╛рд░ = inp.get_shape ()ред as_list ()
_, рдПрдЪ, рдбрдмреНрд▓реНрдпреВ, рд╕реА = рдЖрдХрд╛рд░
рдПрд╕ = рд╕реНрд╡.рд▓реЗ.рд╕реНрдЯреНрд░рд╛рдЗрдб
рдмрд╛рд╣рд░ = рд╕реВрдЪреА ()
рдореИрдВ рд╕реАрдорд╛ рдореЗрдВ (рдПрдЪ / рдПрд╕) рдХреЗ рд▓рд┐рдП:
рдкрдВрдХреНрддрд┐_рдЖрдИ = рд╕реВрдЪреА ()
j рд░реЗрдВрдЬ рдореЗрдВ (w/s) рдХреЗ рд▓рд┐рдП:
рд╕реА, рдПрд╕рдЬреЗ = рдПрд╕ * рдЖрдИ, рдПрд╕ * рдЬреЗ
Boxij = inp[:, si: si+s, sj: sj+s,:]
рдлреНрд▓реИрдЯрд┐рдЬ = tf.reshape(boxij, [-1,1,1,c s s])
row_i += [рдлреНрд▓реИрдЯрд┐рдЬ]
рдЖрдЙрдЯ += [tf.concat(2, row_i)]
рд╕реЗрд▓реНрдл.рдЖрдЙрдЯ = tf.concat(1, рдЖрдЙрдЯ)

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 рдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ !!!

[[рдиреЛрдб: ExtractImagePatches = ExtractImagePatches [T = DT_FLOAT, ksizes = [1, 2, 2, 1], рдкреИрдбрд┐рдВрдЧ = "VALID", рджрд░реЗрдВ = [1, 1, 1, 1], рд╕реНрдЯреНрд░рд╛рдЗрдбреНрд╕ = [1, 2, 2 , 1]] (47-рдЯрдкрдХрд╛ рд╣реБрдЖ)]]

рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕