Skip to content

Instantly share code, notes, and snippets.

@iizukak
Last active March 25, 2020 00:31
Show Gist options
  • Save iizukak/f5fbfe0506122b0def376bcbbb2ffcc3 to your computer and use it in GitHub Desktop.
Save iizukak/f5fbfe0506122b0def376bcbbb2ffcc3 to your computer and use it in GitHub Desktop.
LMFYolo のグリッドセルのサイズを拡大する

LMFYolo のグリッドセルサイズを拡大する方法

Blueoil の LMFYolo でより小さいオブジェクトも検出したい場合、 添付したソースコードのように変更を施すことで、グリッドセルのサイズを変更することができます。

ソースコードのパスは Blueoil の v0.21.0 に従います。

以下の3つのソースコードを diff に示したように書き換えます。

  • blueoil/networks/object_detection/lm_fyolo.py
  • blueoil/post_processor.py
  • blueoil/networks/object_detection/yolo_v2.py

コメントに添付した TensorBoard のスクリーンショットのように、セルサイズの変更が確認ができます。

--- a/blueoil/networks/object_detection/lm_fyolo.py
+++ b/blueoil/networks/object_detection/lm_fyolo.py
@@ -50,6 +50,10 @@ class LMFYolo(YoloV2):
+ def _depth_to_space(self, name, inputs=None, block_size=2):
+ output = tf.depth_to_space(inputs, block_size=block_size, name=name)
+ return output
+
def base(self, images, is_training):
"""Base network.
Returns: Output. output shape depends on parameter.
@@ -119,6 +123,7 @@ class LMFYolo(YoloV2):
x = darknet_block("block_10", x, filters=128, kernel_size=3)
+ x = self._depth_to_space("d2s", x, 2)
x = darknet_block("block_11", x, filters=256, kernel_size=3)
--- a/blueoil/post_processor.py
+++ b/blueoil/post_processor.py
@@ -55,7 +55,8 @@ class FormatYoloV2(Processor):
@property
def num_cell(self):
- return self.image_size[0] // 32, self.image_size[1] // 32
+ return self.image_size[0] // 16, self.image_size[1] // 16
--- a/blueoil/networks/object_detection/yolo_v2.py
+++ b/blueoil/networks/object_detection/yolo_v2.py
@@ -104,11 +104,11 @@ class YoloV2(BaseNetwork):
# Number of cell is the spatial dimension of the final convolutional features.
- image_size0 = self.image_size[0] / 32
- image_size1 = self.image_size[1] / 32
+ image_size0 = self.image_size[0] / 16
+ image_size1 = self.image_size[1] / 16
self.num_cell = tf.tuple([tf.cast(image_size0, tf.int32), tf.cast(image_size1, tf.int32)])
else:
- self.num_cell = self.image_size[0] // 32, self.image_size[1] // 32
+ self.num_cell = self.image_size[0] // 16, self.image_size[1] // 16
@iizukak
Copy link
Author

iizukak commented Mar 25, 2020

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment