Skip to content

Latest commit

 

History

History
72 lines (48 loc) · 3.99 KB

README.md

File metadata and controls

72 lines (48 loc) · 3.99 KB

mobilenetv2_deeplabv3_pytorch

NOTE : The final purpose is Using deeplabv3_plus_nv2 to do portrait segmantation !

From tensorflow/models/research/deeplab, we can know details of Deeplab v3+ (paper).

The TensorFlow DeepLab Model Zoo provides four pre_train models. Using Mibilenetv2 as feature exstractor and according to offical demo (run on Calab), I have given a tensorflow segmentation demo in my demo_mobilenetv2_deeplabv3.

These codes are implementation of mobiletv2_deeplab_v3 on pytorch.

network architecture

In demo_mobilenetv2_deeplabv3, use function save_graph() to get tensorflow graph to folder pre_train, then run tensorboard --logdir=pre_train to open tensorboard in browser: tensorboard

the net architecture mainly contains: mobilenetv2aspp.

graph

mobilenetv2

the mobilenetv2 in deeplabv3 is little different from original architecture at output stride and 1th block. Attention these blockks (1th 4th 6th) in code .

+-------------------------------------------+-------------------------+
|                                               output stride
+===========================================+=========================+
|       original MobileNet_v2_OS_32         |          32             | 
+-------------------------------------------+-------------------------+
|   self.interverted_residual_setting = [   |                         |
|       # t, c, n, s                        |                         |
|       [1, 16, 1, 1],                      |  pw -> dw -> pw-linear  |
|       [6, 24, 2, 2],                      |                         |
|       [6, 32, 3, 2],                      |                         |
|       [6, 64, 4, 2],                      |       stride = 2        |
|       [6, 96, 3, 1],                      |                         |
|       [6, 160, 3, 2],                     |       stride = 2        |
|       [6, 320, 1, 1],                     |                         |
|   ]                                       |                         |
+-------------------------------------------+-------------------------+
|          MobileNet_v2_OS_8                |          8              |
+-------------------------------------------+-------------------------+
|   self.interverted_residual_setting = [   |                         |
|       # t, c, n, s                        |                         |
|       [1, 16, 1, 1],                      |    dw -> pw-linear      |
|       [6, 24, 2, 2],                      |                         |
|       [6, 32, 3, 2],                      |                         |
|       [6, 64, 4, 1],                      |       stride = 1        |
|       [6, 96, 3, 1],                      |                         |
|       [6, 160, 3, 1],                     |       stride = 1        |
|       [6, 320, 1, 1],                     |                         |
|   ]                                       |                         |
+-------------------------------------------+-------------------------+

TODO

  • add test codes
  • add pre_train model