保姆級 Keras 實現 YOLO v3 一

保姆級 Keras 實現 YOLO v3 一

  • 一. YOLO v3 總覽
  • 二. 特征提取網絡
    • 特征提取網絡代碼實現
  • 三. 特征融合
    • 特征融合代碼實現
  • 四. 網絡輸出
    • 模型輸出代碼實現
  • 五. 網絡模型代碼實現
  • 六. 代碼下載

如果要給 YOLO 目標檢測算法一個評價的話, 就是快和準, 現在已經到了 v8, 但是我為什么還要寫 v3 呢? 我覺得 v3 是一個節點, 承上啟下的節點. 它有 v1 和 v2 的影子, 也為后面的其他版本奠定了基礎. 對于教學或者學習 YOLO 是極好的

一. YOLO v3 總覽

如果要給 YOLO v3 一個學習的策略的話, 我覺得從整體到局部比較合適, 我們把 YOLO v3 總結如下

v3 view
相比于祥細的結構圖, 這樣的三個框就把 YOLO v3 概括完了. 后面我們再將各個部分拆開祥細說明, 這就是從整體到局部的策略

二. 特征提取網絡

這是最容易實現的部分, 因為不會涉及到坐標計算與損失函數之類的東西, 只需要按結構用代碼實現即可, 下面是結構圖, 括號里面的數字是各方塊輸出的 shape

dark_net

這個也不是祥細的結構圖, 祥細的結構圖還需要將各個方塊展開, 前面的數字是 n 個這樣的 Block 重復, 現在把 Conv Block 展開如下

conv_block

Residual Block 展開如下

residual block

特征圖的尺寸是輸入圖像的 1 32 1 \over 32 321?, 但是并沒有用我們常見的 Pooling 來減小特征圖尺寸, 而是使用步長為 2 的卷積層來實現的, 就是各個 Residual Block 之前的 Conv2D 層

Conv2D(kernel_size = (3, 3), strides = (2, 2), padding = "same")

特征提取網絡代碼實現

因為結構有重復性, 所以可以定義一個函數來重復調用

# 定義 cbl (Conv2D, BatchNormalization, LeakyReLU) 函數
def cbl(inputs, filters, kernel_size):x = keras.layers.Conv2D(filters = filters, kernel_size = kernel_size, strides = (1, 1),padding = "valid" if (1, 1) == kernel_size else "same")(inputs)x = keras.layers.BatchNormalization()(x)x = keras.layers.LeakyReLU(alpha = 0.1)(x)return x

接下來定義 Residual Block

# 定義 residual_block 函數
# filters: 第一個 cbl 的卷積核數量, 第二個 cbl 卷積核數量自動乘 2
# repeats: 模塊重復次數
def residual_block(inputs, filters, repeats):x = inputsfor i in range(repeats):x = cbl(x, filters, kernel_size = (1, 1))x = cbl(x, filters * 2, kernel_size = (3, 3))x = keras.layers.Add()([inputs, x])return x

有了這兩個函數, 就可以定義完整的特征提取網絡 darknet

# 定義 darn_net 函數
def dark_net(inputs = None):x = cbl(inputs, filters = 32, kernel_size = (3, 3))x = keras.layers.Conv2D(filters = 64, kernel_size = (3, 3), strides = (2, 2), padding = "same")(x)x = residual_block(x, filters = 32, repeats = 1)x = keras.layers.Conv2D(filters = 128, kernel_size = (3, 3), strides = (2, 2), padding = "same")(x)x = residual_block(x, filters = 64, repeats = 2)x = keras.layers.Conv2D(filters = 256, kernel_size = (3, 3), strides = (2, 2), padding = "same")(x)# 52 × 52 特征圖x_52 = residual_block(x, filters = 128, repeats = 8)x = keras.layers.Conv2D(filters = 512, kernel_size = (3, 3), strides = (2, 2), padding = "same")(x_52)# 26 × 26 特征圖x_26 = residual_block(x, filters = 256, repeats = 8)x = keras.layers.Conv2D(filters = 1024, kernel_size = (3, 3), strides = (2, 2), padding = "same")(x_26)# 13 × 13 特征圖x_13 = residual_block(x, filters = 512, repeats = 4)return x_13, x_26, x_52

這樣就和前面的結構圖對上了, 函數輸出 x_13, x_26, x_52 三層, 后面特征融合的時候會用到

三. 特征融合

這個也沒有什么大問題, 只需要將上面的 13 × 13 特征圖上采樣放大與 26 × 26 特征圖在最后一個維度拼接, 26 × 26 特征圖上采樣放大與 52 × 52 特征圖在最后一個維度拼接, 如下圖

neck

特征融合代碼實現

特征融合 Conv Block 部分也有很多重復的方塊, 所以可以定義成一個函數方便調用

# 定義 cbl block 函數
# filters: 第一個 block 的卷積核數量, 其他會自動計算
def cbl_block(inputs, filters):x = cbl(inputs, filters, kernel_size = (1, 1))x = cbl(x, filters * 2, kernel_size = (3, 3))x = cbl(x, filters, kernel_size = (1, 1))x = cbl(x, filters * 2, kernel_size = (3, 3))x = cbl(x, filters, kernel_size = (1, 1))return x

總的特征融合函數如下

# 定義 neck 函數
def neck(inputs = None):x_13, x_26, x_52 = inputsfeature = cbl_block(x_13, 512)feature = cbl(feature, filters = 256, kernel_size = (1, 1))feature = keras.layers.UpSampling2D(size = (2, 2), interpolation = "bilinear")(feature)feature = keras.layers.Concatenate(axis = -1)([feature, x_26])x_26 = cbl_block(feature, 256)feature = cbl(x_26, filters = 128, kernel_size = (1, 1))feature = keras.layers.UpSampling2D(size = (2, 2), interpolation = "bilinear")(feature)feature = keras.layers.Concatenate(axis = -1)([feature, x_52])x_52 = cbl_block(feature, 128)return x_13, x_26, x_52

四. 網絡輸出

這部分就更簡單了, 將融合后的特征圖做卷積, 變換到對應的通道數, 因為我要訓練的數據集是 VOC2007, 所以輸出通道數為 75 = (4 + 1 + 20) × 3. 模型結構如下

head

模型輸出代碼實現

輸出函數如下, 輸入是三個融合后的特征圖

# 定義 head 函數
def head(inputs, filters):x_13, x_26, x_52 = inputsx_13 = cbl(x_13, 1024, kernel_size = (3, 3))x_13 = cbl(x_13, filters, kernel_size = (1, 1))x_26 = cbl(x_26, 512, kernel_size = (3, 3))x_26 = cbl(x_26, filters, kernel_size = (1, 1))x_52 = cbl(x_52, 256, kernel_size = (3, 3))x_52 = cbl(x_52, filters, kernel_size = (1, 1))return x_13, x_26, x_52

五. 網絡模型代碼實現

有了上面的相應的函數之后, 定義完整的模型就變得很簡單了, 由 dark_net, neck, head 三部分構成

# 模型定義
image = keras.layers.Input(shape = (416, 416, 3), name = "input")x_13, x_26, x_52 = dark_net(inputs = image)
x_13, x_26, x_52 = neck([x_13, x_26, x_52])
x_13, x_26, x_52 = head([x_13, x_26, x_52], filters = 75)model = keras.Model(inputs = image,outputs = [x_13, x_26, x_52],name = "yolov3")
model.summary()
Model: "yolov3"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input (InputLayer)              [(None, 416, 416, 3) 0                                            
__________________________________________________________________________________________________
conv2d (Conv2D)                 (None, 416, 416, 32) 896         input[0][0]                      
__________________________________________________________________________________________________
batch_normalization (BatchNorma (None, 416, 416, 32) 128         conv2d[0][0]                     
__________________________________________________________________________________________________
leaky_re_lu (LeakyReLU)         (None, 416, 416, 32) 0           batch_normalization[0][0]        
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 208, 208, 64) 18496       leaky_re_lu[0][0]                
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 208, 208, 32) 2080        conv2d_1[0][0]                   
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 208, 208, 32) 128         conv2d_2[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_1 (LeakyReLU)       (None, 208, 208, 32) 0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 208, 208, 64) 18496       leaky_re_lu_1[0][0]              
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 208, 208, 64) 256         conv2d_3[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_2 (LeakyReLU)       (None, 208, 208, 64) 0           batch_normalization_2[0][0]      
__________________________________________________________________________________________________
add (Add)                       (None, 208, 208, 64) 0           conv2d_1[0][0]                   leaky_re_lu_2[0][0]              
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 104, 104, 128 73856       add[0][0]                        
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 104, 104, 64) 8256        conv2d_4[0][0]                   
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 104, 104, 64) 256         conv2d_5[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_3 (LeakyReLU)       (None, 104, 104, 64) 0           batch_normalization_3[0][0]      
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 104, 104, 128 73856       leaky_re_lu_3[0][0]              
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 104, 104, 128 512         conv2d_6[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_4 (LeakyReLU)       (None, 104, 104, 128 0           batch_normalization_4[0][0]      
__________________________________________________________________________________________________
add_1 (Add)                     (None, 104, 104, 128 0           conv2d_4[0][0]                   leaky_re_lu_4[0][0]              
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 104, 104, 64) 8256        add_1[0][0]                      
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 104, 104, 64) 256         conv2d_7[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_5 (LeakyReLU)       (None, 104, 104, 64) 0           batch_normalization_5[0][0]      
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 104, 104, 128 73856       leaky_re_lu_5[0][0]              
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 104, 104, 128 512         conv2d_8[0][0]                   
__________________________________________________________________________________________________
leaky_re_lu_6 (LeakyReLU)       (None, 104, 104, 128 0           batch_normalization_6[0][0]      
__________________________________________________________________________________________________
add_2 (Add)                     (None, 104, 104, 128 0           conv2d_4[0][0]                   leaky_re_lu_6[0][0]              
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 52, 52, 256)  295168      add_2[0][0]                      
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 52, 52, 128)  32896       conv2d_9[0][0]                   
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 52, 52, 128)  512         conv2d_10[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_7 (LeakyReLU)       (None, 52, 52, 128)  0           batch_normalization_7[0][0]      
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_7[0][0]              
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 52, 52, 256)  1024        conv2d_11[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_8 (LeakyReLU)       (None, 52, 52, 256)  0           batch_normalization_8[0][0]      
__________________________________________________________________________________________________
add_3 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_8[0][0]              
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 52, 52, 128)  32896       add_3[0][0]                      
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 52, 52, 128)  512         conv2d_12[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_9 (LeakyReLU)       (None, 52, 52, 128)  0           batch_normalization_9[0][0]      
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_9[0][0]              
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 52, 52, 256)  1024        conv2d_13[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_10 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_10[0][0]     
__________________________________________________________________________________________________
add_4 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_10[0][0]             
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 52, 52, 128)  32896       add_4[0][0]                      
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 52, 52, 128)  512         conv2d_14[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_11 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_11[0][0]     
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_11[0][0]             
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 52, 52, 256)  1024        conv2d_15[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_12 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_12[0][0]     
__________________________________________________________________________________________________
add_5 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_12[0][0]             
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 52, 52, 128)  32896       add_5[0][0]                      
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 52, 52, 128)  512         conv2d_16[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_13 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_13[0][0]     
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_13[0][0]             
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 52, 52, 256)  1024        conv2d_17[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_14 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_14[0][0]     
__________________________________________________________________________________________________
add_6 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_14[0][0]             
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 52, 52, 128)  32896       add_6[0][0]                      
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 52, 52, 128)  512         conv2d_18[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_15 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_15[0][0]     
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_15[0][0]             
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 52, 52, 256)  1024        conv2d_19[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_16 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_16[0][0]     
__________________________________________________________________________________________________
add_7 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_16[0][0]             
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 52, 52, 128)  32896       add_7[0][0]                      
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 52, 52, 128)  512         conv2d_20[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_17 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_17[0][0]     
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_17[0][0]             
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 52, 52, 256)  1024        conv2d_21[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_18 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_18[0][0]     
__________________________________________________________________________________________________
add_8 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_18[0][0]             
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 52, 52, 128)  32896       add_8[0][0]                      
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 52, 52, 128)  512         conv2d_22[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_19 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_19[0][0]     
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_19[0][0]             
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 52, 52, 256)  1024        conv2d_23[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_20 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_20[0][0]     
__________________________________________________________________________________________________
add_9 (Add)                     (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_20[0][0]             
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 52, 52, 128)  32896       add_9[0][0]                      
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 52, 52, 128)  512         conv2d_24[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_21 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_21[0][0]     
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_21[0][0]             
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 52, 52, 256)  1024        conv2d_25[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_22 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_22[0][0]     
__________________________________________________________________________________________________
add_10 (Add)                    (None, 52, 52, 256)  0           conv2d_9[0][0]                   leaky_re_lu_22[0][0]             
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 26, 26, 512)  1180160     add_10[0][0]                     
__________________________________________________________________________________________________
conv2d_27 (Conv2D)              (None, 26, 26, 256)  131328      conv2d_26[0][0]                  
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 26, 26, 256)  1024        conv2d_27[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_23 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_23[0][0]     
__________________________________________________________________________________________________
conv2d_28 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_23[0][0]             
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 26, 26, 512)  2048        conv2d_28[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_24 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_24[0][0]     
__________________________________________________________________________________________________
add_11 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_24[0][0]             
__________________________________________________________________________________________________
conv2d_29 (Conv2D)              (None, 26, 26, 256)  131328      add_11[0][0]                     
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 26, 26, 256)  1024        conv2d_29[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_25 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_25[0][0]     
__________________________________________________________________________________________________
conv2d_30 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_25[0][0]             
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 26, 26, 512)  2048        conv2d_30[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_26 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_26[0][0]     
__________________________________________________________________________________________________
add_12 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_26[0][0]             
__________________________________________________________________________________________________
conv2d_31 (Conv2D)              (None, 26, 26, 256)  131328      add_12[0][0]                     
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 26, 26, 256)  1024        conv2d_31[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_27 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_27[0][0]     
__________________________________________________________________________________________________
conv2d_32 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_27[0][0]             
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 26, 26, 512)  2048        conv2d_32[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_28 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_28[0][0]     
__________________________________________________________________________________________________
add_13 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_28[0][0]             
__________________________________________________________________________________________________
conv2d_33 (Conv2D)              (None, 26, 26, 256)  131328      add_13[0][0]                     
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 26, 26, 256)  1024        conv2d_33[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_29 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_29[0][0]     
__________________________________________________________________________________________________
conv2d_34 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_29[0][0]             
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 26, 26, 512)  2048        conv2d_34[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_30 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_30[0][0]     
__________________________________________________________________________________________________
add_14 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_30[0][0]             
__________________________________________________________________________________________________
conv2d_35 (Conv2D)              (None, 26, 26, 256)  131328      add_14[0][0]                     
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 26, 26, 256)  1024        conv2d_35[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_31 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_31[0][0]     
__________________________________________________________________________________________________
conv2d_36 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_31[0][0]             
__________________________________________________________________________________________________
batch_normalization_32 (BatchNo (None, 26, 26, 512)  2048        conv2d_36[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_32 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_32[0][0]     
__________________________________________________________________________________________________
add_15 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_32[0][0]             
__________________________________________________________________________________________________
conv2d_37 (Conv2D)              (None, 26, 26, 256)  131328      add_15[0][0]                     
__________________________________________________________________________________________________
batch_normalization_33 (BatchNo (None, 26, 26, 256)  1024        conv2d_37[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_33 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_33[0][0]     
__________________________________________________________________________________________________
conv2d_38 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_33[0][0]             
__________________________________________________________________________________________________
batch_normalization_34 (BatchNo (None, 26, 26, 512)  2048        conv2d_38[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_34 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_34[0][0]     
__________________________________________________________________________________________________
add_16 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_34[0][0]             
__________________________________________________________________________________________________
conv2d_39 (Conv2D)              (None, 26, 26, 256)  131328      add_16[0][0]                     
__________________________________________________________________________________________________
batch_normalization_35 (BatchNo (None, 26, 26, 256)  1024        conv2d_39[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_35 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_35[0][0]     
__________________________________________________________________________________________________
conv2d_40 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_35[0][0]             
__________________________________________________________________________________________________
batch_normalization_36 (BatchNo (None, 26, 26, 512)  2048        conv2d_40[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_36 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_36[0][0]     
__________________________________________________________________________________________________
add_17 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_36[0][0]             
__________________________________________________________________________________________________
conv2d_41 (Conv2D)              (None, 26, 26, 256)  131328      add_17[0][0]                     
__________________________________________________________________________________________________
batch_normalization_37 (BatchNo (None, 26, 26, 256)  1024        conv2d_41[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_37 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_37[0][0]     
__________________________________________________________________________________________________
conv2d_42 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_37[0][0]             
__________________________________________________________________________________________________
batch_normalization_38 (BatchNo (None, 26, 26, 512)  2048        conv2d_42[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_38 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_38[0][0]     
__________________________________________________________________________________________________
add_18 (Add)                    (None, 26, 26, 512)  0           conv2d_26[0][0]                  leaky_re_lu_38[0][0]             
__________________________________________________________________________________________________
conv2d_43 (Conv2D)              (None, 13, 13, 1024) 4719616     add_18[0][0]                     
__________________________________________________________________________________________________
conv2d_44 (Conv2D)              (None, 13, 13, 512)  524800      conv2d_43[0][0]                  
__________________________________________________________________________________________________
batch_normalization_39 (BatchNo (None, 13, 13, 512)  2048        conv2d_44[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_39 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_39[0][0]     
__________________________________________________________________________________________________
conv2d_45 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_39[0][0]             
__________________________________________________________________________________________________
batch_normalization_40 (BatchNo (None, 13, 13, 1024) 4096        conv2d_45[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_40 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_40[0][0]     
__________________________________________________________________________________________________
add_19 (Add)                    (None, 13, 13, 1024) 0           conv2d_43[0][0]                  leaky_re_lu_40[0][0]             
__________________________________________________________________________________________________
conv2d_46 (Conv2D)              (None, 13, 13, 512)  524800      add_19[0][0]                     
__________________________________________________________________________________________________
batch_normalization_41 (BatchNo (None, 13, 13, 512)  2048        conv2d_46[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_41 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_41[0][0]     
__________________________________________________________________________________________________
conv2d_47 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_41[0][0]             
__________________________________________________________________________________________________
batch_normalization_42 (BatchNo (None, 13, 13, 1024) 4096        conv2d_47[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_42 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_42[0][0]     
__________________________________________________________________________________________________
add_20 (Add)                    (None, 13, 13, 1024) 0           conv2d_43[0][0]                  leaky_re_lu_42[0][0]             
__________________________________________________________________________________________________
conv2d_48 (Conv2D)              (None, 13, 13, 512)  524800      add_20[0][0]                     
__________________________________________________________________________________________________
batch_normalization_43 (BatchNo (None, 13, 13, 512)  2048        conv2d_48[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_43 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_43[0][0]     
__________________________________________________________________________________________________
conv2d_49 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_43[0][0]             
__________________________________________________________________________________________________
batch_normalization_44 (BatchNo (None, 13, 13, 1024) 4096        conv2d_49[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_44 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_44[0][0]     
__________________________________________________________________________________________________
add_21 (Add)                    (None, 13, 13, 1024) 0           conv2d_43[0][0]                  leaky_re_lu_44[0][0]             
__________________________________________________________________________________________________
conv2d_50 (Conv2D)              (None, 13, 13, 512)  524800      add_21[0][0]                     
__________________________________________________________________________________________________
batch_normalization_45 (BatchNo (None, 13, 13, 512)  2048        conv2d_50[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_45 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_45[0][0]     
__________________________________________________________________________________________________
conv2d_51 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_45[0][0]             
__________________________________________________________________________________________________
batch_normalization_46 (BatchNo (None, 13, 13, 1024) 4096        conv2d_51[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_46 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_46[0][0]     
__________________________________________________________________________________________________
add_22 (Add)                    (None, 13, 13, 1024) 0           conv2d_43[0][0]                  leaky_re_lu_46[0][0]             
__________________________________________________________________________________________________
conv2d_52 (Conv2D)              (None, 13, 13, 512)  524800      add_22[0][0]                     
__________________________________________________________________________________________________
batch_normalization_47 (BatchNo (None, 13, 13, 512)  2048        conv2d_52[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_47 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_47[0][0]     
__________________________________________________________________________________________________
conv2d_53 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_47[0][0]             
__________________________________________________________________________________________________
batch_normalization_48 (BatchNo (None, 13, 13, 1024) 4096        conv2d_53[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_48 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_48[0][0]     
__________________________________________________________________________________________________
conv2d_54 (Conv2D)              (None, 13, 13, 512)  524800      leaky_re_lu_48[0][0]             
__________________________________________________________________________________________________
batch_normalization_49 (BatchNo (None, 13, 13, 512)  2048        conv2d_54[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_49 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_49[0][0]     
__________________________________________________________________________________________________
conv2d_55 (Conv2D)              (None, 13, 13, 1024) 4719616     leaky_re_lu_49[0][0]             
__________________________________________________________________________________________________
batch_normalization_50 (BatchNo (None, 13, 13, 1024) 4096        conv2d_55[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_50 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_50[0][0]     
__________________________________________________________________________________________________
conv2d_56 (Conv2D)              (None, 13, 13, 512)  524800      leaky_re_lu_50[0][0]             
__________________________________________________________________________________________________
batch_normalization_51 (BatchNo (None, 13, 13, 512)  2048        conv2d_56[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_51 (LeakyReLU)      (None, 13, 13, 512)  0           batch_normalization_51[0][0]     
__________________________________________________________________________________________________
conv2d_57 (Conv2D)              (None, 13, 13, 256)  131328      leaky_re_lu_51[0][0]             
__________________________________________________________________________________________________
batch_normalization_52 (BatchNo (None, 13, 13, 256)  1024        conv2d_57[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_52 (LeakyReLU)      (None, 13, 13, 256)  0           batch_normalization_52[0][0]     
__________________________________________________________________________________________________
up_sampling2d (UpSampling2D)    (None, 26, 26, 256)  0           leaky_re_lu_52[0][0]             
__________________________________________________________________________________________________
concatenate (Concatenate)       (None, 26, 26, 768)  0           up_sampling2d[0][0]              add_18[0][0]                     
__________________________________________________________________________________________________
conv2d_58 (Conv2D)              (None, 26, 26, 256)  196864      concatenate[0][0]                
__________________________________________________________________________________________________
batch_normalization_53 (BatchNo (None, 26, 26, 256)  1024        conv2d_58[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_53 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_53[0][0]     
__________________________________________________________________________________________________
conv2d_59 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_53[0][0]             
__________________________________________________________________________________________________
batch_normalization_54 (BatchNo (None, 26, 26, 512)  2048        conv2d_59[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_54 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_54[0][0]     
__________________________________________________________________________________________________
conv2d_60 (Conv2D)              (None, 26, 26, 256)  131328      leaky_re_lu_54[0][0]             
__________________________________________________________________________________________________
batch_normalization_55 (BatchNo (None, 26, 26, 256)  1024        conv2d_60[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_55 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_55[0][0]     
__________________________________________________________________________________________________
conv2d_61 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_55[0][0]             
__________________________________________________________________________________________________
batch_normalization_56 (BatchNo (None, 26, 26, 512)  2048        conv2d_61[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_56 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_56[0][0]     
__________________________________________________________________________________________________
conv2d_62 (Conv2D)              (None, 26, 26, 256)  131328      leaky_re_lu_56[0][0]             
__________________________________________________________________________________________________
batch_normalization_57 (BatchNo (None, 26, 26, 256)  1024        conv2d_62[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_57 (LeakyReLU)      (None, 26, 26, 256)  0           batch_normalization_57[0][0]     
__________________________________________________________________________________________________
conv2d_63 (Conv2D)              (None, 26, 26, 128)  32896       leaky_re_lu_57[0][0]             
__________________________________________________________________________________________________
batch_normalization_58 (BatchNo (None, 26, 26, 128)  512         conv2d_63[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_58 (LeakyReLU)      (None, 26, 26, 128)  0           batch_normalization_58[0][0]     
__________________________________________________________________________________________________
up_sampling2d_1 (UpSampling2D)  (None, 52, 52, 128)  0           leaky_re_lu_58[0][0]             
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 52, 52, 384)  0           up_sampling2d_1[0][0]            add_10[0][0]                     
__________________________________________________________________________________________________
conv2d_64 (Conv2D)              (None, 52, 52, 128)  49280       concatenate_1[0][0]              
__________________________________________________________________________________________________
batch_normalization_59 (BatchNo (None, 52, 52, 128)  512         conv2d_64[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_59 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_59[0][0]     
__________________________________________________________________________________________________
conv2d_65 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_59[0][0]             
__________________________________________________________________________________________________
batch_normalization_60 (BatchNo (None, 52, 52, 256)  1024        conv2d_65[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_60 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_60[0][0]     
__________________________________________________________________________________________________
conv2d_66 (Conv2D)              (None, 52, 52, 128)  32896       leaky_re_lu_60[0][0]             
__________________________________________________________________________________________________
batch_normalization_61 (BatchNo (None, 52, 52, 128)  512         conv2d_66[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_61 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_61[0][0]     
__________________________________________________________________________________________________
conv2d_67 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_61[0][0]             
__________________________________________________________________________________________________
batch_normalization_62 (BatchNo (None, 52, 52, 256)  1024        conv2d_67[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_62 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_62[0][0]     
__________________________________________________________________________________________________
conv2d_68 (Conv2D)              (None, 52, 52, 128)  32896       leaky_re_lu_62[0][0]             
__________________________________________________________________________________________________
batch_normalization_63 (BatchNo (None, 52, 52, 128)  512         conv2d_68[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_63 (LeakyReLU)      (None, 52, 52, 128)  0           batch_normalization_63[0][0]     
__________________________________________________________________________________________________
conv2d_69 (Conv2D)              (None, 13, 13, 1024) 9438208     add_22[0][0]                     
__________________________________________________________________________________________________
conv2d_71 (Conv2D)              (None, 26, 26, 512)  1180160     leaky_re_lu_57[0][0]             
__________________________________________________________________________________________________
conv2d_73 (Conv2D)              (None, 52, 52, 256)  295168      leaky_re_lu_63[0][0]             
__________________________________________________________________________________________________
batch_normalization_64 (BatchNo (None, 13, 13, 1024) 4096        conv2d_69[0][0]                  
__________________________________________________________________________________________________
batch_normalization_66 (BatchNo (None, 26, 26, 512)  2048        conv2d_71[0][0]                  
__________________________________________________________________________________________________
batch_normalization_68 (BatchNo (None, 52, 52, 256)  1024        conv2d_73[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_64 (LeakyReLU)      (None, 13, 13, 1024) 0           batch_normalization_64[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_66 (LeakyReLU)      (None, 26, 26, 512)  0           batch_normalization_66[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_68 (LeakyReLU)      (None, 52, 52, 256)  0           batch_normalization_68[0][0]     
__________________________________________________________________________________________________
conv2d_70 (Conv2D)              (None, 13, 13, 75)   76875       leaky_re_lu_64[0][0]             
__________________________________________________________________________________________________
conv2d_72 (Conv2D)              (None, 26, 26, 75)   38475       leaky_re_lu_66[0][0]             
__________________________________________________________________________________________________
conv2d_74 (Conv2D)              (None, 52, 52, 75)   19275       leaky_re_lu_68[0][0]             
__________________________________________________________________________________________________
batch_normalization_65 (BatchNo (None, 13, 13, 75)   300         conv2d_70[0][0]                  
__________________________________________________________________________________________________
batch_normalization_67 (BatchNo (None, 26, 26, 75)   300         conv2d_72[0][0]                  
__________________________________________________________________________________________________
batch_normalization_69 (BatchNo (None, 52, 52, 75)   300         conv2d_74[0][0]                  
__________________________________________________________________________________________________
leaky_re_lu_65 (LeakyReLU)      (None, 13, 13, 75)   0           batch_normalization_65[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_67 (LeakyReLU)      (None, 26, 26, 75)   0           batch_normalization_67[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_69 (LeakyReLU)      (None, 52, 52, 75)   0           batch_normalization_69[0][0]     
==================================================================================================
Total params: 66,416,517
Trainable params: 66,367,427
Non-trainable params: 49,090
__________________________________________________________________________________________________

加上輸入層一共 243 層

六. 代碼下載

示例代碼可下載 Jupyter Notebook 示例代碼

下一篇: 保姆級 Keras 實現 YOLO v3 二

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165314.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何開啟MySQL的慢查詢日志

說明:如果需要查看某一條SQL查詢速度慢,并對慢的SQL進行優化,那么開啟MySQL慢查詢日志是一定要做的事情,本文介紹如何開啟MySQL的慢查詢日志; 查看MySQL慢查詢是否開啟 首先,輸入下面的命令,查…

為什么 x86 操作系統從 0x7c00 處開始

0x00:x86 架構 BIOS 引導加載程序中的"0x7C00"之謎 你知道 x86 操作系統中的"0x7C00"這個神奇數字嗎 ? "0x7C00" 是BIOS加載MBR(主引導記錄,磁盤中的第一個扇區)的內存地址。操作系統或引導加載…

2-Linux學習環境搭建

1 Linux學習環境搭建 1.1 虛擬化介紹 # win 機器----》裝一個虛擬化軟件----》虛擬化出linux操作系統# kvm vmware openstack docker k8s # kvm vmware 虛擬化軟件 -運行在linux上,做虛擬化的軟件 -vmware運行在win,linux,商業軟件…

AMEYA360:瑞薩面向高端工業傳感器系統推出高精度模擬前端的32位RX MCU

全球半導體解決方案供應商瑞薩電子(TSE:6723)宣布面向高端工業傳感器系統推出一款全新RX產品——RX23E-B,擴展32位微控制器(MCU)產品線。新產品作為廣受歡迎的RX產品家族的一員,具有高精度模擬前…

hadoop2.x linux集群部署

hadoop2.x 集群部署 下載hadoop需要提前準備好jdk1.8 和rsync 和ssl集群信息解壓安裝配置環境變量配置site配置文件(/hadoop/etc/hadoop目錄下)core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlhadoop-env.sh要追加java_home!配置節點slaves 配置免密ssh訪問沒有ssh-co…

【計算方法與科學建模】矩陣特征值與特征向量的計算(四):乘冪法及其python實現

文章目錄 一、Jacobi 旋轉法二、Jacobi 過關法三、Householder 方法四、乘冪法 矩陣的特征值(eigenvalue)和特征向量(eigenvector)在很多應用中都具有重要的數學和物理意義。 本文將詳細介紹乘冪法的基本原理和步驟,并…

【JavaSE】基礎筆記 - 異常(Exception)

目錄 1、異常的概念和體系結構 1.1、異常的概念 1.2、 異常的體系結構 1.3 異常的分類 2、異常的處理 2.1、防御式編程 2.2、異常的拋出 2.3、異常的捕獲 2.3.1、異常聲明throws 2.3.2、try-catch捕獲并處理 3、自定義異常類 1、異常的概念和體系結構 1.1、異常的…

datasets.Dataset.map方法學習筆記

Dataset.map 方法概要 可以將datasets中的Dataset實例看做是一張數據表。map方法會將輸入的function按照指定的方式應用在每一行(每一行稱為一個example)上。本文采用一下示例進行說明: from datasets import Dataset # datasets.__versi…

前端開發工具集合

文章目錄 Visual Studio Code (VS Code)安裝及配置一、安裝二、常用插件三、相關配置四、統一配置代碼 Visual Studio Code (VS Code)安裝及配置 一、安裝 下載地址:https://code.visualstudio.com/ ?> VS Code 下載慢,解決辦法請點擊 雙擊下載文件…

Java零基礎——SpringMVC篇

1.SpringMVC介紹 SpringMVC是Spring框架中的一個組件,是一個輕量級的web的MVC框架,充當controller,其本質就是一個Servlet。 1.1 傳統Servlet的不足 每個請求,都需要定義一個Servlet。雖然可以在service方法中,根據業務標識進行…

【Linux 帶寬限速】trickle,限制docker 上傳速度

限制docker 上傳速度 然而,你可以使用第三方工具來實現這個目的。一個常用的工具是 trickle,它可以模擬網絡帶寬。 首先,你需要安裝 trickle。在 Ubuntu 上,可以使用以下命令安裝: sudo apt-get install trickle然后…

deepxde 源碼閱讀筆記(長期更新)

2023.11.23 閱讀的deepxde version: 1.9.0 1. train_aux_vars ,即pde當中的第三個參數 這個變量的含義困惑很久。最后發現就是operator learning的PDEs方程parameters。 脈絡:def pde aux_vars-> deepxde目前支持tf1最多,但是對其他框架…

系列二、Spring整合單元測試

一、概述 Spring中獲取bean最常見的方式是通過ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式獲取bean,那么在Spring中如何像在SpringBoot中直接一個類上添加個SpringBootTest注解,即可在類中注入自己想要測試…

優秀的企業協同OA系統如何促進團隊協作?

優秀的企業協同OA系統可以幫助團隊協同工作變得更簡單、更高效。 一、以下是一些優秀的企業協同OA系統可以幫助團隊協作的方法: 1、提高工作效率 優秀的企業協同OA系統可以提高工作效率,減少工作的重復性和低效率。例如,可以使用共享日歷和…

vue2生命周期

前言 vue的生命周期其實可以分為兩塊,一個是vue實例的生命周期,一個是組件的生命周期。 vue實例的生命周期方法共有4個:$mout,$forceUpdate,$nextTick,$destroy vue組件的生命周期鉤子共有8個:beforeCreate,created,beforeMount,mounted,beforeUpdate, updated,beforeDestr…

C/C++小寫字母的判斷 2022年3月電子學會中小學生軟件編程(C/C++)等級考試一級真題答案解析

目錄 C/C小寫字母的判斷 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序編寫 四、程序說明 五、運行結果 六、考點分析 C/C小寫字母的判斷 2022年3月 C/C編程等級考試一級編程題 一、題目要求 1、編程實現 輸入一個字符,判斷是否是英文小…

iframe內部子頁面與外部主頁面通訊

文章目錄 一、問題二、解決2.1、子頁面2.2、主頁面 三、知識點3.1、[瀏覽器兼容性](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7)3.2、詳解3.2.1、發送方3.2.2、接收方 一、問題 如上所示&a…

被刪數據庫+勒索

被刪數據庫勒索 – WhiteNights Site 標簽:日志 快照在手,天下我有 服務器又給人黑了。這次是給人黑了數據庫,被人刪庫勒索,先放圖吧。我還花了今天一個下午的時間查修這個漏洞,導致網站有接近6個小時都沒法訪問。 …

編程示例: Session Id的生成

實現思路 Session的實現方式如下:在用戶第一次登錄的時候,系統為它分配一個唯一Id(被稱為Session Id)作為標識,并且 記錄下這個用戶的用戶名、要登錄的賬套名、用戶擁有的權限等,以Id為鍵,用戶名、賬套名等信息為值保…

云原生Kubernetes系列 | Kubernetes靜態Pod的使用

云原生Kubernetes系列 | Kubernetes靜態Pod的使用 靜態pod不建議在master上操作,因為master上跑的是集群核心靜態pod,如果配置失敗,會導致集群故障。建議在knode1或knode2上去做。 kubernetes master節點上的核心組件pod其實都是靜態pod: [root@k8s-master ~]# ls /etc/ku…