yolov--14--輕量級模型MobilenetV2網絡結構解析--概念解讀

Yolov-1-TX2上用YOLOv3訓練自己數據集的流程(VOC2007-TX2-GPU)

Yolov--2--一文全面瞭解深度學習性能優化加速引擎---TensorRT

Yolov--3--TensorRT中yolov3性能優化加速(基於caffe)

yolov-5-目標檢測:YOLOv2算法原理詳解

yolov--8--Tensorflow實現YOLO v3

yolov--9--YOLO v3的剪枝優化

yolov--10--目標檢測模型的參數評估指標詳解、概念解析

yolov--11--YOLO v3的原版訓練記錄、mAP、AP、recall、precision、time等評價指標計算

yolov--12--YOLOv3的原理深度剖析和關鍵點講解

yolov--13--voc的xml轉json格式出現問題-Converting PASCAL VOC dataset... Index exceeds matrix dimensions- 解決方法


卷積層和池化層後輸出大小計算公式

卷積後圖片輸出大小几個數
W:圖像寬,H:圖像高,D:圖像深度(通道數)

F:卷積核寬高,N:卷積核(過濾器)個數

S:步長,P:用零填充個數

卷積後輸出圖像大小:

                                    Width=(W-F+2P)/S+1

                                    Height=(H-F+2P)/S+1

卷積後輸出圖像深度:

                                    N=D

輸出圖像大小:             (width,height,N)

weight個數:        

                                    F*F*D*N

bias個數: 

                                    N

總結:卷積輸出大小=[(輸入大小-卷積核(過濾器)大小+2*P)/步長]+1

通用的卷積時padding 的選擇

如卷積核寬高爲3時 padding 選擇1
如卷積核寬高爲5時 padding 選擇2
如卷積核寬高爲7時 padding 選擇3
池化後圖片輸出大小及個數
W:圖像寬,H:圖像高,D:圖像深度(通道數)

F:卷積核寬高,S:步長

池化後輸出圖像大小:

                                   W=(W-F)/S+1

                                   H=(H-F)/S+1

池化後輸出圖像深度:     

                                   N=D

總結:化輸出大小=[(輸入大小-卷積核(過濾器)大小)/步長]+1

參考:

https://blog.csdn.net/ddy_sweety/article/details/79798117


多輸出通道:

這裏寫圖片描述
(n個輸出通道需要用n個卷積核)

https://blog.csdn.net/hao5335156/article/details/80554951

在深度學習中,卷積核的個數,就是就是經過該卷積核之後的輸出的通道數。
對於輸入的每個通道,輸出的每個通道上的卷積核是不一樣的,類似於圖片中的樣子。
比如:
輸入是28 * 28 * 192,然後經過尺寸爲3 * 3,通道數爲128的卷積核,那麼卷積核的參數是:
3 * 3 * 192 * 128
原文鏈接:https://blog.csdn.net/zh_ch_yu/article/details/88383196

一種卷積核得到一個通道,所以特徵圖個數=輸出通道數=卷積核個數


MobilenetV2網絡函數調用

 

# coding: utf-8

import tensorflow as tf
from model.layers import *


def MobilenetV2(input_data, training):
    with tf.variable_scope('MobilenetV2'):
        conv = convolutional(name='Conv', input_data=input_data, filters_shape=(3, 3, 3, 32),
                             training=training, downsample=True, activate=True, bn=True)    #卷積核的尺寸filters_shape爲:寬*高*輸入通道數*輸出通道數  
        conv = inverted_residual(name='expanded_conv', input_data=conv, input_c=32, output_c=16,
                                 training=training, t=1)

        conv = inverted_residual(name='expanded_conv_1', input_data=conv, input_c=16, output_c=24, downsample=True,
                                 training=training)
        conv = inverted_residual(name='expanded_conv_2', input_data=conv, input_c=24, output_c=24, training=training)

        conv = inverted_residual(name='expanded_conv_3', input_data=conv, input_c=24, output_c=32, downsample=True,
                                 training=training)
        conv = inverted_residual(name='expanded_conv_4', input_data=conv, input_c=32, output_c=32, training=training)
        feature_map_s = inverted_residual(name='expanded_conv_5', input_data=conv, input_c=32, output_c=32,
                                          training=training)

        conv = inverted_residual(name='expanded_conv_6', input_data=feature_map_s, input_c=32, output_c=64,
                                 downsample=True, training=training)
        conv = inverted_residual(name='expanded_conv_7', input_data=conv, input_c=64, output_c=64, training=training)
        conv = inverted_residual(name='expanded_conv_8', input_data=conv, input_c=64, output_c=64, training=training)
        conv = inverted_residual(name='expanded_conv_9', input_data=conv, input_c=64, output_c=64, training=training)

        conv = inverted_residual(name='expanded_conv_10', input_data=conv, input_c=64, output_c=96, training=training)
        conv = inverted_residual(name='expanded_conv_11', input_data=conv, input_c=96, output_c=96, training=training)
        feature_map_m = inverted_residual(name='expanded_conv_12', input_data=conv, input_c=96, output_c=96,
                                          training=training)

        conv = inverted_residual(name='expanded_conv_13', input_data=feature_map_m, input_c=96, output_c=160,
                                 downsample=True, training=training)
        conv = inverted_residual(name='expanded_conv_14', input_data=conv, input_c=160, output_c=160, training=training)
        conv = inverted_residual(name='expanded_conv_15', input_data=conv, input_c=160, output_c=160, training=training

        conv = inverted_residual(name='expanded_conv_16', input_data=conv, input_c=160, output_c=320, training=training)

        feature_map_l = convolutional(name='Conv_1', input_data=conv, filters_shape=(1, 1, 320, 1280),
                                      training=training, downsample=False, activate=True, bn=True)
    return feature_map_s, feature_map_m, feature_map_l

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章