Π― ΡΠΎΠ·Π΄Π°Π» Π΄Π²Π° ΡΠ°ΠΉΠ»Π°: graph-tiny-yolo-voc.pb ΠΈ graph-yolo.pb.
ΡΠ°ΠΉΠ» "graph-tiny-yolo-voc.pb" Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° graph-yolo.pb
I/native: tensorflow_inference_jni.cc:139 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠ° TensorFlow ΠΈΠ· GraphDef.
E/native: tensorflow_inference_jni.cc:146 ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊ TensorFlow: Π½Π΅Π²Π΅ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ: Π½Π΅ Π±ΡΠ»ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ OpKernel Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Op Β«ExtractImagePatchesΒ» Ρ ΡΡΠΈΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ. ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°: [Π¦Π], ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΄ΡΠ°:
[[Π£Π·Π΅Π»: ExtractImagePatches = ExtractImagePatches T=DT_FLOAT, ksizes=[1, 2, 2, 1], padding="VALID", rate=[1, 1, 1, 1], strides=[1, 2, 2, 1] ]]
E/tensorflow: TensorFlowYoloDetector: ΡΡΠ°ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ TF: 3
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Opkernel ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎΡ .pb
.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡ reorg
ΠΈΠ· ./net/ops/convolution.py
. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° _forward
ΠΈ forward
. Π’Π΅ΠΊΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ forward
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ extract_image_patches
β Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π½Π·ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΡ ΡΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ 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
Traceback (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ²):
Π€Π°ΠΉΠ» "./flow.py", ΡΡΡΠΎΠΊΠ° 42, Π²
tfnet = TFNet(Π€ΠΠΠΠ)
Π€Π°ΠΉΠ» "/home/qkj/projects/dark_flow/darkflow/net/build.py", ΡΡΡΠΎΠΊΠ° 50, Π² __init__
self.build_forward()
Π€Π°ΠΉΠ» "/home/qkj/projects/dark_flow/darkflow/net/build.py", ΡΡΡΠΎΠΊΠ° 70, Π² build_forward
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = op_create(*Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ)
Π€Π°ΠΉΠ» "/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__
self.forward ()
Π€Π°ΠΉΠ» "/home/qkj/projects/dark_flow/darkflow/net/ops/convolution.py", ΡΡΡΠΎΠΊΠ° 13, Π²ΠΏΠ΅ΡΠ΅Π΄
Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (Ρ/Ρ):
TypeError: ΠΎΠ±ΡΠ΅ΠΊΡ 'float' Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° (BaseOp):
Π·Π°ΡΠΈΡΠ° Π²ΠΏΠ΅ΡΠ΅Π΄ (Ρ):
Π²Ρ
ΠΎΠ΄ = self.inp.out
ΡΠΎΡΠΌΠ° = inp.get_shape().as_list()
_, Ρ, Ρ, Ρ = ΡΠΎΡΠΌΠ°
s = self.lay.stride
Π²ΡΡ
ΠΎΠ΄ = ΡΠΏΠΈΡΠΎΠΊ()
Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (Ρ/Ρ):
row_i = ΡΠΏΠΈΡΠΎΠΊ()
Π΄Π»Ρ 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]
Π²ΡΡ
ΠΎΠ΄ += [tf.concat(2, row_i)]
self.out = 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. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎ, Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΠΊΠΎΠ΄.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ» ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ ΡΠ°ΠΉΠ» yolo.pb ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π² Android. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΌΠ½Π΅ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ!!!
[[Π£Π·Π΅Π»: ExtractImagePatches = ExtractImagePatches[T=DT_FLOAT, ksizes=[1, 2, 2, 1], padding="VALID", rate=[1, 1, 1, 1], strides=[1, 2, 2 , 1]] (47-Π΄ΡΡΡΠ²ΡΠΉ)]]
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Opkernel ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎΡ
.pb
.Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡ
reorg
ΠΈΠ·./net/ops/convolution.py
. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°_forward
ΠΈforward
. Π’Π΅ΠΊΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρforward
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρextract_image_patches
β Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π½Π·ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.ΠΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΡ ΡΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Opkernel.