From f002083adc6a43983270944052da3337941f508c Mon Sep 17 00:00:00 2001 From: interface_xiongtete <1144722582@qq.com> Date: Mon, 22 Aug 2022 16:41:11 +0800 Subject: [PATCH] =?UTF-8?q?CBAM:=E9=80=9A=E9=81=93=E6=B3=A8=E6=84=8F?= =?UTF-8?q?=E5=8A=9B+=E7=A9=BA=E9=97=B4=E6=B3=A8=E6=84=8F=E5=8A=9B?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E5=A4=8D=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../CBAM-Block.py" | 78 + ...346\234\265\350\257\206\345\210\253.ipynb" | 1591 +++++++++++++++++ .../CBAM.ipynb" | 216 +++ .../img/CBAM.png" | Bin 0 -> 69399 bytes 5 files changed, 1886 insertions(+) create mode 100644 "\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-Block.py" create mode 100644 "\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-ResNet50\350\212\261\346\234\265\350\257\206\345\210\253.ipynb" create mode 100644 "\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM.ipynb" create mode 100644 "\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/img/CBAM.png" diff --git a/.gitignore b/.gitignore index 17629ae..3d05c80 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ /经典网络/ShuffleNet/checkpoint_v2/ /经典网络/ResNext/checkpoint/ /经典网络/ECANet(通道注意力机制)/checkpoint/ +/经典网络/CBAM(通道+空间注意力机制)/checkpoint/ diff --git "a/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-Block.py" "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-Block.py" new file mode 100644 index 0000000..7aec68b --- /dev/null +++ "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-Block.py" @@ -0,0 +1,78 @@ +import tensorflow as tf +from tensorflow.keras.layers import Activation, Add, Concatenate, Conv1D, Conv2D, Dense,multiply,Input +from tensorflow.keras.layers import GlobalAveragePooling2D, GlobalMaxPooling2D, Lambda, BatchNormalization,Reshape +from tensorflow.keras.layers import Multiply +from tensorflow.keras.models import Model +from plot_model import plot_model + + +# Channel Attention Module +def channelAttention(input_feature, ratio=16, name=""): + # 获取特征层的通道数 + channel = input_feature.shape[-1] + + shared_layer_one = Dense(channel // ratio, + activation='relu', + use_bias=False, + name="channel_attention_shared_one_" + str(name)) + shared_layer_two = Dense(channel, + use_bias=False, + name="channel_attention_shared_two_" + str(name)) + + # 全局平均池化 + avg_pool = GlobalAveragePooling2D()(input_feature) + # 全局最大池化 + max_pool = GlobalMaxPooling2D()(input_feature) + + avg_pool = Reshape((1, 1, channel))(avg_pool) + max_pool = Reshape((1, 1, channel))(max_pool) + + avg_pool = shared_layer_one(avg_pool) + max_pool = shared_layer_one(max_pool) + + avg_pool = shared_layer_two(avg_pool) + max_pool = shared_layer_two(max_pool) + + # 相加 + cbam_feature = Add()([avg_pool, max_pool]) + # 获得输入特征层每一个通道的权值 + cbam_feature = Activation('sigmoid')(cbam_feature) + # 将这个权值与原输入特征层相乘 + out = Multiply()([input_feature, cbam_feature]) + return out + + +# Spatial Attention Module +def spatialAttention(input_feature, kernel_size=7, name=""): + cbam_feature = input_feature + # 在通道维度上分别做最大池化和平均池化 + avg_pool = tf.reduce_mean(input_feature, axis=3, keepdims=True) + max_pool = tf.reduce_max(input_feature, axis=3, keepdims=True) + + concat = Concatenate(axis=3)([avg_pool, max_pool]) + + cbam_feature = Conv2D(filters=1, + kernel_size=kernel_size, + strides=1, + padding='same', + use_bias=False, + name="spatial_attention_" + str(name))(concat) + cbam_feature = Activation('sigmoid')(cbam_feature) + + out = Multiply()([input_feature, cbam_feature]) + return out + +# CBAM Block +def cbamBlock(cbam_feature,ratio=16,name=""): + # 先通道注意力,再空间注意力,原论文中真名这种排列效果更好。 + cbam_feature=channelAttention(cbam_feature,ratio,name) + cbam_feature=spatialAttention(cbam_feature,name) + return cbam_feature + + +if __name__ == '__main__': + inputs = Input([26, 26, 512]) + x = channelAttention(inputs) + x = spatialAttention(x) + model = Model(inputs, x) + model.summary() \ No newline at end of file diff --git "a/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-ResNet50\350\212\261\346\234\265\350\257\206\345\210\253.ipynb" "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-ResNet50\350\212\261\346\234\265\350\257\206\345\210\253.ipynb" new file mode 100644 index 0000000..e8f9264 --- /dev/null +++ "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM-ResNet50\350\212\261\346\234\265\350\257\206\345\210\253.ipynb" @@ -0,0 +1,1591 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c2bf30a5", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import math\n", + "import os\n", + "import tensorflow as tf\n", + "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", + "from tensorflow.keras.utils import to_categorical\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Input, Dense, Dropout, Conv2D, MaxPool2D, Flatten, GlobalAvgPool2D, \\\n", + " BatchNormalization, Activation, Add, ZeroPadding2D, Multiply,Conv1D,GlobalAveragePooling2D,Reshape,multiply,GlobalMaxPooling2D\n", + "from tensorflow.keras.layers import Concatenate\n", + "from tensorflow.keras.optimizers import Adam\n", + "import matplotlib.pyplot as plt\n", + "from tensorflow.keras.callbacks import LearningRateScheduler\n", + "from tensorflow.keras.models import Model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "60cf917a", + "metadata": {}, + "outputs": [], + "source": [ + "# 类别数\n", + "num_classes = 17\n", + "# 批次大小\n", + "batch_size = 32\n", + "# 周期数\n", + "epochs = 100\n", + "# 图片大小\n", + "image_size = 224" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "20fcbfe1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found 1088 images belonging to 17 classes.\n", + "Found 272 images belonging to 17 classes.\n", + "{'flower0': 0, 'flower1': 1, 'flower10': 2, 'flower11': 3, 'flower12': 4, 'flower13': 5, 'flower14': 6, 'flower15': 7, 'flower16': 8, 'flower2': 9, 'flower3': 10, 'flower4': 11, 'flower5': 12, 'flower6': 13, 'flower7': 14, 'flower8': 15, 'flower9': 16}\n" + ] + } + ], + "source": [ + "# 训练集数据进行数据增强\n", + "train_datagen = ImageDataGenerator(\n", + " rotation_range=20, # 随机旋转度数\n", + " width_shift_range=0.1, # 随机水平平移\n", + " height_shift_range=0.1, # 随机竖直平移\n", + " rescale=1 / 255, # 数据归一化\n", + " shear_range=10, # 随机错切变换\n", + " zoom_range=0.1, # 随机放大\n", + " horizontal_flip=True, # 水平翻转\n", + " brightness_range=(0.7, 1.3), # 亮度变化\n", + " fill_mode='nearest', # 填充方式\n", + ")\n", + "# 测试集数据只需要归一化就可以\n", + "test_datagen = ImageDataGenerator(\n", + " rescale=1 / 255, # 数据归一化\n", + ")\n", + "# 训练集数据生成器,可以在训练时自动产生数据进行训练\n", + "# 从'data/train'获得训练集数据\n", + "# 获得数据后会把图片resize为image_size×image_size的大小\n", + "# generator每次会产生batch_size个数据\n", + "train_generator = train_datagen.flow_from_directory(\n", + " '../data/train',\n", + " target_size=(image_size, image_size),\n", + " batch_size=batch_size,\n", + ")\n", + "\n", + "# 测试集数据生成器\n", + "test_generator = test_datagen.flow_from_directory(\n", + " '../data/test',\n", + " target_size=(image_size, image_size),\n", + " batch_size=batch_size,\n", + ")\n", + "# 字典的键为17个文件夹的名字,值为对应的分类编号\n", + "print(train_generator.class_indices)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b3f28936", + "metadata": {}, + "outputs": [], + "source": [ + "# Channel Attention Module\n", + "def channelAttention(input_feature,ratio=16,name=\"\"):\n", + " # 获取特征层的通道数\n", + " channel=input_feature.shape[-1]\n", + " \n", + " shared_layer_one=Dense(channel//ratio,\n", + " activation='relu',\n", + " use_bias=False)\n", + " shared_layer_two=Dense(channel,\n", + " use_bias=False)\n", + " \n", + " # 全局平均池化\n", + " avg_pool=GlobalAveragePooling2D()(input_feature)\n", + " # 全局最大池化\n", + " max_pool=GlobalMaxPooling2D()(input_feature)\n", + " \n", + " avg_pool=Reshape((1,1,channel))(avg_pool)\n", + " max_pool=Reshape((1,1,channel))(max_pool)\n", + " \n", + " avg_pool=shared_layer_one(avg_pool)\n", + " max_pool=shared_layer_one(max_pool)\n", + " \n", + " avg_pool=shared_layer_two(avg_pool)\n", + " max_pool=shared_layer_two(max_pool)\n", + " \n", + " #相加\n", + " cbam_feature=Add()([avg_pool,max_pool])\n", + " #获得输入特征层每一个通道的权值\n", + " cbam_feature=Activation('sigmoid')(cbam_feature)\n", + " #将这个权值与原输入特征层相乘\n", + " out=Multiply()([input_feature,cbam_feature])\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "21a7f887", + "metadata": {}, + "outputs": [], + "source": [ + "# Spatial Attention Module\n", + "def spatialAttention(input_feature,kernel_size=(7,7),name=\"\"):\n", + " cbam_feature=input_feature\n", + " #在通道维度上分别做最大池化和平均池化\n", + " avg_pool=tf.reduce_mean(input_feature,axis=3,keepdims=True)\n", + " max_pool=tf.reduce_max(input_feature,axis=3,keepdims=True)\n", + " \n", + " concat=Concatenate(axis=3)([avg_pool,max_pool])\n", + " \n", + " cbam_feature=Conv2D(filters=1,\n", + " kernel_size=(7,7),\n", + " strides=1,\n", + " padding='same',\n", + " use_bias=False)(concat)\n", + " cbam_feature=Activation('sigmoid')(cbam_feature)\n", + " \n", + " out=Multiply()([input_feature,cbam_feature])\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2911688d", + "metadata": {}, + "outputs": [], + "source": [ + "# CBAM Block\n", + "def cbamBlock(cbam_feature,ratio=16,name=\"\"):\n", + " # 先通道注意力,再空间注意力,原论文中真名这种排列效果更好。\n", + " cbam_feature=channelAttention(cbam_feature,ratio,name)\n", + " cbam_feature=spatialAttention(cbam_feature,name)\n", + " return cbam_feature" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c6a1443f", + "metadata": {}, + "outputs": [], + "source": [ + "# 定义残差单元\n", + "def block(x, filters, strides=1, conv_shortcut=True):\n", + " # projection shortcut\n", + " if conv_shortcut == True:\n", + " shortcut = Conv2D(filters * 4, kernel_size=1, strides=strides, padding='valid')(x)\n", + " # epsilon为BN公式中防止分母为零的值\n", + " shortcut = BatchNormalization(epsilon=1.001e-5)(shortcut)\n", + " else:\n", + " # identity_shortcut\n", + " shortcut = x\n", + " # 3个卷积层\n", + " x = Conv2D(filters=filters, kernel_size=1, strides=strides, padding='valid')(x)\n", + " x = BatchNormalization(epsilon=1.001e-5)(x)\n", + " x = Activation('relu')(x)\n", + "\n", + " x = Conv2D(filters=filters, kernel_size=3, strides=1, padding='same')(x)\n", + " x = BatchNormalization(epsilon=1.001e-5)(x)\n", + " x = Activation('relu')(x)\n", + "\n", + " x = Conv2D(filters=filters * 4, kernel_size=1, strides=1, padding='valid')(x)\n", + " x = BatchNormalization(epsilon=1.001e-5)(x)\n", + "\n", + " # SE模块\n", + " x = cbamBlock(x)\n", + "\n", + " x = Add()([x, shortcut])\n", + " x = Activation('relu')(x)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "237f2539", + "metadata": {}, + "outputs": [], + "source": [ + "# 堆叠残差单元\n", + "def stack(x, filters, blocks, strides):\n", + " x = block(x, filters, strides=strides)\n", + " for i in range(blocks - 1):\n", + " x = block(x, filters, conv_shortcut=False)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f3c610e1", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"functional_1\"\n", + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "input_1 (InputLayer) [(None, 224, 224, 3) 0 \n", + "__________________________________________________________________________________________________\n", + "zero_padding2d (ZeroPadding2D) (None, 230, 230, 3) 0 input_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d (Conv2D) (None, 112, 112, 64) 9472 zero_padding2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization (BatchNorma (None, 112, 112, 64) 256 conv2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation (Activation) (None, 112, 112, 64) 0 batch_normalization[0][0] \n", + "__________________________________________________________________________________________________\n", + "zero_padding2d_1 (ZeroPadding2D (None, 114, 114, 64) 0 activation[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d (MaxPooling2D) (None, 56, 56, 64) 0 zero_padding2d_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_2 (Conv2D) (None, 56, 56, 64) 4160 max_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_2 (BatchNor (None, 56, 56, 64) 256 conv2d_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_1 (Activation) (None, 56, 56, 64) 0 batch_normalization_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_3 (Conv2D) (None, 56, 56, 64) 36928 activation_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_3 (BatchNor (None, 56, 56, 64) 256 conv2d_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_2 (Activation) (None, 56, 56, 64) 0 batch_normalization_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_4 (Conv2D) (None, 56, 56, 256) 16640 activation_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_4 (BatchNor (None, 56, 56, 256) 1024 conv2d_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d (Globa (None, 256) 0 batch_normalization_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d (GlobalMax (None, 256) 0 batch_normalization_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape (Reshape) (None, 1, 1, 256) 0 global_average_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_1 (Reshape) (None, 1, 1, 256) 0 global_max_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense (Dense) (None, 1, 1, 16) 4096 reshape[0][0] \n", + " reshape_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_1 (Dense) (None, 1, 1, 256) 4096 dense[0][0] \n", + " dense[1][0] \n", + "__________________________________________________________________________________________________\n", + "add (Add) (None, 1, 1, 256) 0 dense_1[0][0] \n", + " dense_1[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_3 (Activation) (None, 1, 1, 256) 0 add[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply (Multiply) (None, 56, 56, 256) 0 batch_normalization_4[0][0] \n", + " activation_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean (TensorFlowOpL [(None, 56, 56, 1)] 0 multiply[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max (TensorFlowOpLa [(None, 56, 56, 1)] 0 multiply[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate (Concatenate) (None, 56, 56, 2) 0 tf_op_layer_Mean[0][0] \n", + " tf_op_layer_Max[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_5 (Conv2D) (None, 56, 56, 1) 98 concatenate[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_4 (Activation) (None, 56, 56, 1) 0 conv2d_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_1 (Conv2D) (None, 56, 56, 256) 16640 max_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_1 (Multiply) (None, 56, 56, 256) 0 multiply[0][0] \n", + " activation_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_1 (BatchNor (None, 56, 56, 256) 1024 conv2d_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_1 (Add) (None, 56, 56, 256) 0 multiply_1[0][0] \n", + " batch_normalization_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_5 (Activation) (None, 56, 56, 256) 0 add_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_6 (Conv2D) (None, 56, 56, 64) 16448 activation_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_5 (BatchNor (None, 56, 56, 64) 256 conv2d_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_6 (Activation) (None, 56, 56, 64) 0 batch_normalization_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_7 (Conv2D) (None, 56, 56, 64) 36928 activation_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_6 (BatchNor (None, 56, 56, 64) 256 conv2d_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_7 (Activation) (None, 56, 56, 64) 0 batch_normalization_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_8 (Conv2D) (None, 56, 56, 256) 16640 activation_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_7 (BatchNor (None, 56, 56, 256) 1024 conv2d_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_1 (Glo (None, 256) 0 batch_normalization_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_1 (GlobalM (None, 256) 0 batch_normalization_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_2 (Reshape) (None, 1, 1, 256) 0 global_average_pooling2d_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_3 (Reshape) (None, 1, 1, 256) 0 global_max_pooling2d_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_2 (Dense) (None, 1, 1, 16) 4096 reshape_2[0][0] \n", + " reshape_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_3 (Dense) (None, 1, 1, 256) 4096 dense_2[0][0] \n", + " dense_2[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_2 (Add) (None, 1, 1, 256) 0 dense_3[0][0] \n", + " dense_3[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_8 (Activation) (None, 1, 1, 256) 0 add_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_2 (Multiply) (None, 56, 56, 256) 0 batch_normalization_7[0][0] \n", + " activation_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_1 (TensorFlowO [(None, 56, 56, 1)] 0 multiply_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_1 (TensorFlowOp [(None, 56, 56, 1)] 0 multiply_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_1 (Concatenate) (None, 56, 56, 2) 0 tf_op_layer_Mean_1[0][0] \n", + " tf_op_layer_Max_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_9 (Conv2D) (None, 56, 56, 1) 98 concatenate_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_9 (Activation) (None, 56, 56, 1) 0 conv2d_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_3 (Multiply) (None, 56, 56, 256) 0 multiply_2[0][0] \n", + " activation_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_3 (Add) (None, 56, 56, 256) 0 multiply_3[0][0] \n", + " activation_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_10 (Activation) (None, 56, 56, 256) 0 add_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_10 (Conv2D) (None, 56, 56, 64) 16448 activation_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_8 (BatchNor (None, 56, 56, 64) 256 conv2d_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_11 (Activation) (None, 56, 56, 64) 0 batch_normalization_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_11 (Conv2D) (None, 56, 56, 64) 36928 activation_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_9 (BatchNor (None, 56, 56, 64) 256 conv2d_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_12 (Activation) (None, 56, 56, 64) 0 batch_normalization_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_12 (Conv2D) (None, 56, 56, 256) 16640 activation_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_10 (BatchNo (None, 56, 56, 256) 1024 conv2d_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_2 (Glo (None, 256) 0 batch_normalization_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_2 (GlobalM (None, 256) 0 batch_normalization_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_4 (Reshape) (None, 1, 1, 256) 0 global_average_pooling2d_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_5 (Reshape) (None, 1, 1, 256) 0 global_max_pooling2d_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_4 (Dense) (None, 1, 1, 16) 4096 reshape_4[0][0] \n", + " reshape_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_5 (Dense) (None, 1, 1, 256) 4096 dense_4[0][0] \n", + " dense_4[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_4 (Add) (None, 1, 1, 256) 0 dense_5[0][0] \n", + " dense_5[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_13 (Activation) (None, 1, 1, 256) 0 add_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_4 (Multiply) (None, 56, 56, 256) 0 batch_normalization_10[0][0] \n", + " activation_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_2 (TensorFlowO [(None, 56, 56, 1)] 0 multiply_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_2 (TensorFlowOp [(None, 56, 56, 1)] 0 multiply_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_2 (Concatenate) (None, 56, 56, 2) 0 tf_op_layer_Mean_2[0][0] \n", + " tf_op_layer_Max_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_13 (Conv2D) (None, 56, 56, 1) 98 concatenate_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_14 (Activation) (None, 56, 56, 1) 0 conv2d_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_5 (Multiply) (None, 56, 56, 256) 0 multiply_4[0][0] \n", + " activation_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_5 (Add) (None, 56, 56, 256) 0 multiply_5[0][0] \n", + " activation_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_15 (Activation) (None, 56, 56, 256) 0 add_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_15 (Conv2D) (None, 28, 28, 128) 32896 activation_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_12 (BatchNo (None, 28, 28, 128) 512 conv2d_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_16 (Activation) (None, 28, 28, 128) 0 batch_normalization_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_16 (Conv2D) (None, 28, 28, 128) 147584 activation_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_13 (BatchNo (None, 28, 28, 128) 512 conv2d_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_17 (Activation) (None, 28, 28, 128) 0 batch_normalization_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_17 (Conv2D) (None, 28, 28, 512) 66048 activation_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_14 (BatchNo (None, 28, 28, 512) 2048 conv2d_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_3 (Glo (None, 512) 0 batch_normalization_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_3 (GlobalM (None, 512) 0 batch_normalization_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_6 (Reshape) (None, 1, 1, 512) 0 global_average_pooling2d_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_7 (Reshape) (None, 1, 1, 512) 0 global_max_pooling2d_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_6 (Dense) (None, 1, 1, 32) 16384 reshape_6[0][0] \n", + " reshape_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_7 (Dense) (None, 1, 1, 512) 16384 dense_6[0][0] \n", + " dense_6[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_6 (Add) (None, 1, 1, 512) 0 dense_7[0][0] \n", + " dense_7[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_18 (Activation) (None, 1, 1, 512) 0 add_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_6 (Multiply) (None, 28, 28, 512) 0 batch_normalization_14[0][0] \n", + " activation_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_3 (TensorFlowO [(None, 28, 28, 1)] 0 multiply_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_3 (TensorFlowOp [(None, 28, 28, 1)] 0 multiply_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_3 (Concatenate) (None, 28, 28, 2) 0 tf_op_layer_Mean_3[0][0] \n", + " tf_op_layer_Max_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_18 (Conv2D) (None, 28, 28, 1) 98 concatenate_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_19 (Activation) (None, 28, 28, 1) 0 conv2d_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_14 (Conv2D) (None, 28, 28, 512) 131584 activation_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_7 (Multiply) (None, 28, 28, 512) 0 multiply_6[0][0] \n", + " activation_19[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_11 (BatchNo (None, 28, 28, 512) 2048 conv2d_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_7 (Add) (None, 28, 28, 512) 0 multiply_7[0][0] \n", + " batch_normalization_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_20 (Activation) (None, 28, 28, 512) 0 add_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_19 (Conv2D) (None, 28, 28, 128) 65664 activation_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_15 (BatchNo (None, 28, 28, 128) 512 conv2d_19[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_21 (Activation) (None, 28, 28, 128) 0 batch_normalization_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_20 (Conv2D) (None, 28, 28, 128) 147584 activation_21[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_16 (BatchNo (None, 28, 28, 128) 512 conv2d_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_22 (Activation) (None, 28, 28, 128) 0 batch_normalization_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_21 (Conv2D) (None, 28, 28, 512) 66048 activation_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_17 (BatchNo (None, 28, 28, 512) 2048 conv2d_21[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_4 (Glo (None, 512) 0 batch_normalization_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_4 (GlobalM (None, 512) 0 batch_normalization_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_8 (Reshape) (None, 1, 1, 512) 0 global_average_pooling2d_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_9 (Reshape) (None, 1, 1, 512) 0 global_max_pooling2d_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_8 (Dense) (None, 1, 1, 32) 16384 reshape_8[0][0] \n", + " reshape_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_9 (Dense) (None, 1, 1, 512) 16384 dense_8[0][0] \n", + " dense_8[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_8 (Add) (None, 1, 1, 512) 0 dense_9[0][0] \n", + " dense_9[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_23 (Activation) (None, 1, 1, 512) 0 add_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_8 (Multiply) (None, 28, 28, 512) 0 batch_normalization_17[0][0] \n", + " activation_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_4 (TensorFlowO [(None, 28, 28, 1)] 0 multiply_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_4 (TensorFlowOp [(None, 28, 28, 1)] 0 multiply_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_4 (Concatenate) (None, 28, 28, 2) 0 tf_op_layer_Mean_4[0][0] \n", + " tf_op_layer_Max_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_22 (Conv2D) (None, 28, 28, 1) 98 concatenate_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_24 (Activation) (None, 28, 28, 1) 0 conv2d_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_9 (Multiply) (None, 28, 28, 512) 0 multiply_8[0][0] \n", + " activation_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_9 (Add) (None, 28, 28, 512) 0 multiply_9[0][0] \n", + " activation_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_25 (Activation) (None, 28, 28, 512) 0 add_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_23 (Conv2D) (None, 28, 28, 128) 65664 activation_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_18 (BatchNo (None, 28, 28, 128) 512 conv2d_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_26 (Activation) (None, 28, 28, 128) 0 batch_normalization_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_24 (Conv2D) (None, 28, 28, 128) 147584 activation_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_19 (BatchNo (None, 28, 28, 128) 512 conv2d_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_27 (Activation) (None, 28, 28, 128) 0 batch_normalization_19[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_25 (Conv2D) (None, 28, 28, 512) 66048 activation_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_20 (BatchNo (None, 28, 28, 512) 2048 conv2d_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_5 (Glo (None, 512) 0 batch_normalization_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_5 (GlobalM (None, 512) 0 batch_normalization_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_10 (Reshape) (None, 1, 1, 512) 0 global_average_pooling2d_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_11 (Reshape) (None, 1, 1, 512) 0 global_max_pooling2d_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_10 (Dense) (None, 1, 1, 32) 16384 reshape_10[0][0] \n", + " reshape_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_11 (Dense) (None, 1, 1, 512) 16384 dense_10[0][0] \n", + " dense_10[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_10 (Add) (None, 1, 1, 512) 0 dense_11[0][0] \n", + " dense_11[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_28 (Activation) (None, 1, 1, 512) 0 add_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_10 (Multiply) (None, 28, 28, 512) 0 batch_normalization_20[0][0] \n", + " activation_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_5 (TensorFlowO [(None, 28, 28, 1)] 0 multiply_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_5 (TensorFlowOp [(None, 28, 28, 1)] 0 multiply_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_5 (Concatenate) (None, 28, 28, 2) 0 tf_op_layer_Mean_5[0][0] \n", + " tf_op_layer_Max_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_26 (Conv2D) (None, 28, 28, 1) 98 concatenate_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_29 (Activation) (None, 28, 28, 1) 0 conv2d_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_11 (Multiply) (None, 28, 28, 512) 0 multiply_10[0][0] \n", + " activation_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_11 (Add) (None, 28, 28, 512) 0 multiply_11[0][0] \n", + " activation_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_30 (Activation) (None, 28, 28, 512) 0 add_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_27 (Conv2D) (None, 28, 28, 128) 65664 activation_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_21 (BatchNo (None, 28, 28, 128) 512 conv2d_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_31 (Activation) (None, 28, 28, 128) 0 batch_normalization_21[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_28 (Conv2D) (None, 28, 28, 128) 147584 activation_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_22 (BatchNo (None, 28, 28, 128) 512 conv2d_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_32 (Activation) (None, 28, 28, 128) 0 batch_normalization_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_29 (Conv2D) (None, 28, 28, 512) 66048 activation_32[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_23 (BatchNo (None, 28, 28, 512) 2048 conv2d_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_6 (Glo (None, 512) 0 batch_normalization_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_6 (GlobalM (None, 512) 0 batch_normalization_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_12 (Reshape) (None, 1, 1, 512) 0 global_average_pooling2d_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_13 (Reshape) (None, 1, 1, 512) 0 global_max_pooling2d_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_12 (Dense) (None, 1, 1, 32) 16384 reshape_12[0][0] \n", + " reshape_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_13 (Dense) (None, 1, 1, 512) 16384 dense_12[0][0] \n", + " dense_12[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_12 (Add) (None, 1, 1, 512) 0 dense_13[0][0] \n", + " dense_13[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_33 (Activation) (None, 1, 1, 512) 0 add_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_12 (Multiply) (None, 28, 28, 512) 0 batch_normalization_23[0][0] \n", + " activation_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_6 (TensorFlowO [(None, 28, 28, 1)] 0 multiply_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_6 (TensorFlowOp [(None, 28, 28, 1)] 0 multiply_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_6 (Concatenate) (None, 28, 28, 2) 0 tf_op_layer_Mean_6[0][0] \n", + " tf_op_layer_Max_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_30 (Conv2D) (None, 28, 28, 1) 98 concatenate_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_34 (Activation) (None, 28, 28, 1) 0 conv2d_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_13 (Multiply) (None, 28, 28, 512) 0 multiply_12[0][0] \n", + " activation_34[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_13 (Add) (None, 28, 28, 512) 0 multiply_13[0][0] \n", + " activation_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_35 (Activation) (None, 28, 28, 512) 0 add_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_32 (Conv2D) (None, 14, 14, 256) 131328 activation_35[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_25 (BatchNo (None, 14, 14, 256) 1024 conv2d_32[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_36 (Activation) (None, 14, 14, 256) 0 batch_normalization_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_33 (Conv2D) (None, 14, 14, 256) 590080 activation_36[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_26 (BatchNo (None, 14, 14, 256) 1024 conv2d_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_37 (Activation) (None, 14, 14, 256) 0 batch_normalization_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_34 (Conv2D) (None, 14, 14, 1024) 263168 activation_37[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_27 (BatchNo (None, 14, 14, 1024) 4096 conv2d_34[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_7 (Glo (None, 1024) 0 batch_normalization_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_7 (GlobalM (None, 1024) 0 batch_normalization_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_14 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_15 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_14 (Dense) (None, 1, 1, 64) 65536 reshape_14[0][0] \n", + " reshape_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_15 (Dense) (None, 1, 1, 1024) 65536 dense_14[0][0] \n", + " dense_14[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_14 (Add) (None, 1, 1, 1024) 0 dense_15[0][0] \n", + " dense_15[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_38 (Activation) (None, 1, 1, 1024) 0 add_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_14 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_27[0][0] \n", + " activation_38[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_7 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_7 (TensorFlowOp [(None, 14, 14, 1)] 0 multiply_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_7 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_7[0][0] \n", + " tf_op_layer_Max_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_35 (Conv2D) (None, 14, 14, 1) 98 concatenate_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_39 (Activation) (None, 14, 14, 1) 0 conv2d_35[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_31 (Conv2D) (None, 14, 14, 1024) 525312 activation_35[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_15 (Multiply) (None, 14, 14, 1024) 0 multiply_14[0][0] \n", + " activation_39[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_24 (BatchNo (None, 14, 14, 1024) 4096 conv2d_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_15 (Add) (None, 14, 14, 1024) 0 multiply_15[0][0] \n", + " batch_normalization_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_40 (Activation) (None, 14, 14, 1024) 0 add_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_36 (Conv2D) (None, 14, 14, 256) 262400 activation_40[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_28 (BatchNo (None, 14, 14, 256) 1024 conv2d_36[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_41 (Activation) (None, 14, 14, 256) 0 batch_normalization_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_37 (Conv2D) (None, 14, 14, 256) 590080 activation_41[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_29 (BatchNo (None, 14, 14, 256) 1024 conv2d_37[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_42 (Activation) (None, 14, 14, 256) 0 batch_normalization_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_38 (Conv2D) (None, 14, 14, 1024) 263168 activation_42[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_30 (BatchNo (None, 14, 14, 1024) 4096 conv2d_38[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_8 (Glo (None, 1024) 0 batch_normalization_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_8 (GlobalM (None, 1024) 0 batch_normalization_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_16 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_17 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_16 (Dense) (None, 1, 1, 64) 65536 reshape_16[0][0] \n", + " reshape_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_17 (Dense) (None, 1, 1, 1024) 65536 dense_16[0][0] \n", + " dense_16[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_16 (Add) (None, 1, 1, 1024) 0 dense_17[0][0] \n", + " dense_17[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_43 (Activation) (None, 1, 1, 1024) 0 add_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_16 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_30[0][0] \n", + " activation_43[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_8 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_8 (TensorFlowOp [(None, 14, 14, 1)] 0 multiply_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_8 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_8[0][0] \n", + " tf_op_layer_Max_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_39 (Conv2D) (None, 14, 14, 1) 98 concatenate_8[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_44 (Activation) (None, 14, 14, 1) 0 conv2d_39[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_17 (Multiply) (None, 14, 14, 1024) 0 multiply_16[0][0] \n", + " activation_44[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_17 (Add) (None, 14, 14, 1024) 0 multiply_17[0][0] \n", + " activation_40[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_45 (Activation) (None, 14, 14, 1024) 0 add_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_40 (Conv2D) (None, 14, 14, 256) 262400 activation_45[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_31 (BatchNo (None, 14, 14, 256) 1024 conv2d_40[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_46 (Activation) (None, 14, 14, 256) 0 batch_normalization_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_41 (Conv2D) (None, 14, 14, 256) 590080 activation_46[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_32 (BatchNo (None, 14, 14, 256) 1024 conv2d_41[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_47 (Activation) (None, 14, 14, 256) 0 batch_normalization_32[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_42 (Conv2D) (None, 14, 14, 1024) 263168 activation_47[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_33 (BatchNo (None, 14, 14, 1024) 4096 conv2d_42[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_9 (Glo (None, 1024) 0 batch_normalization_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_9 (GlobalM (None, 1024) 0 batch_normalization_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_18 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_19 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_18 (Dense) (None, 1, 1, 64) 65536 reshape_18[0][0] \n", + " reshape_19[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_19 (Dense) (None, 1, 1, 1024) 65536 dense_18[0][0] \n", + " dense_18[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_18 (Add) (None, 1, 1, 1024) 0 dense_19[0][0] \n", + " dense_19[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_48 (Activation) (None, 1, 1, 1024) 0 add_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_18 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_33[0][0] \n", + " activation_48[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_9 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_9 (TensorFlowOp [(None, 14, 14, 1)] 0 multiply_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_9 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_9[0][0] \n", + " tf_op_layer_Max_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_43 (Conv2D) (None, 14, 14, 1) 98 concatenate_9[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_49 (Activation) (None, 14, 14, 1) 0 conv2d_43[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_19 (Multiply) (None, 14, 14, 1024) 0 multiply_18[0][0] \n", + " activation_49[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_19 (Add) (None, 14, 14, 1024) 0 multiply_19[0][0] \n", + " activation_45[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_50 (Activation) (None, 14, 14, 1024) 0 add_19[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_44 (Conv2D) (None, 14, 14, 256) 262400 activation_50[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_34 (BatchNo (None, 14, 14, 256) 1024 conv2d_44[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_51 (Activation) (None, 14, 14, 256) 0 batch_normalization_34[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_45 (Conv2D) (None, 14, 14, 256) 590080 activation_51[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_35 (BatchNo (None, 14, 14, 256) 1024 conv2d_45[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_52 (Activation) (None, 14, 14, 256) 0 batch_normalization_35[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_46 (Conv2D) (None, 14, 14, 1024) 263168 activation_52[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_36 (BatchNo (None, 14, 14, 1024) 4096 conv2d_46[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_10 (Gl (None, 1024) 0 batch_normalization_36[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_10 (Global (None, 1024) 0 batch_normalization_36[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_20 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_10[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_21 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_20 (Dense) (None, 1, 1, 64) 65536 reshape_20[0][0] \n", + " reshape_21[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_21 (Dense) (None, 1, 1, 1024) 65536 dense_20[0][0] \n", + " dense_20[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_20 (Add) (None, 1, 1, 1024) 0 dense_21[0][0] \n", + " dense_21[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_53 (Activation) (None, 1, 1, 1024) 0 add_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_20 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_36[0][0] \n", + " activation_53[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_10 (TensorFlow [(None, 14, 14, 1)] 0 multiply_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_10 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_20[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_10 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_10[0][0] \n", + " tf_op_layer_Max_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_47 (Conv2D) (None, 14, 14, 1) 98 concatenate_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_54 (Activation) (None, 14, 14, 1) 0 conv2d_47[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_21 (Multiply) (None, 14, 14, 1024) 0 multiply_20[0][0] \n", + " activation_54[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_21 (Add) (None, 14, 14, 1024) 0 multiply_21[0][0] \n", + " activation_50[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_55 (Activation) (None, 14, 14, 1024) 0 add_21[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_48 (Conv2D) (None, 14, 14, 256) 262400 activation_55[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_37 (BatchNo (None, 14, 14, 256) 1024 conv2d_48[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_56 (Activation) (None, 14, 14, 256) 0 batch_normalization_37[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_49 (Conv2D) (None, 14, 14, 256) 590080 activation_56[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_38 (BatchNo (None, 14, 14, 256) 1024 conv2d_49[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_57 (Activation) (None, 14, 14, 256) 0 batch_normalization_38[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_50 (Conv2D) (None, 14, 14, 1024) 263168 activation_57[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_39 (BatchNo (None, 14, 14, 1024) 4096 conv2d_50[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_11 (Gl (None, 1024) 0 batch_normalization_39[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_11 (Global (None, 1024) 0 batch_normalization_39[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_22 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_11[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_23 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_22 (Dense) (None, 1, 1, 64) 65536 reshape_22[0][0] \n", + " reshape_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_23 (Dense) (None, 1, 1, 1024) 65536 dense_22[0][0] \n", + " dense_22[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_22 (Add) (None, 1, 1, 1024) 0 dense_23[0][0] \n", + " dense_23[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_58 (Activation) (None, 1, 1, 1024) 0 add_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_22 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_39[0][0] \n", + " activation_58[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_11 (TensorFlow [(None, 14, 14, 1)] 0 multiply_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_11 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_22[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_11 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_11[0][0] \n", + " tf_op_layer_Max_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_51 (Conv2D) (None, 14, 14, 1) 98 concatenate_11[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_59 (Activation) (None, 14, 14, 1) 0 conv2d_51[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_23 (Multiply) (None, 14, 14, 1024) 0 multiply_22[0][0] \n", + " activation_59[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_23 (Add) (None, 14, 14, 1024) 0 multiply_23[0][0] \n", + " activation_55[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_60 (Activation) (None, 14, 14, 1024) 0 add_23[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_52 (Conv2D) (None, 14, 14, 256) 262400 activation_60[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_40 (BatchNo (None, 14, 14, 256) 1024 conv2d_52[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_61 (Activation) (None, 14, 14, 256) 0 batch_normalization_40[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_53 (Conv2D) (None, 14, 14, 256) 590080 activation_61[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_41 (BatchNo (None, 14, 14, 256) 1024 conv2d_53[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_62 (Activation) (None, 14, 14, 256) 0 batch_normalization_41[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_54 (Conv2D) (None, 14, 14, 1024) 263168 activation_62[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_42 (BatchNo (None, 14, 14, 1024) 4096 conv2d_54[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_12 (Gl (None, 1024) 0 batch_normalization_42[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_12 (Global (None, 1024) 0 batch_normalization_42[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_24 (Reshape) (None, 1, 1, 1024) 0 global_average_pooling2d_12[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_25 (Reshape) (None, 1, 1, 1024) 0 global_max_pooling2d_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_24 (Dense) (None, 1, 1, 64) 65536 reshape_24[0][0] \n", + " reshape_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_25 (Dense) (None, 1, 1, 1024) 65536 dense_24[0][0] \n", + " dense_24[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_24 (Add) (None, 1, 1, 1024) 0 dense_25[0][0] \n", + " dense_25[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_63 (Activation) (None, 1, 1, 1024) 0 add_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_24 (Multiply) (None, 14, 14, 1024) 0 batch_normalization_42[0][0] \n", + " activation_63[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_12 (TensorFlow [(None, 14, 14, 1)] 0 multiply_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_12 (TensorFlowO [(None, 14, 14, 1)] 0 multiply_24[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_12 (Concatenate) (None, 14, 14, 2) 0 tf_op_layer_Mean_12[0][0] \n", + " tf_op_layer_Max_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_55 (Conv2D) (None, 14, 14, 1) 98 concatenate_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_64 (Activation) (None, 14, 14, 1) 0 conv2d_55[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_25 (Multiply) (None, 14, 14, 1024) 0 multiply_24[0][0] \n", + " activation_64[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_25 (Add) (None, 14, 14, 1024) 0 multiply_25[0][0] \n", + " activation_60[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_65 (Activation) (None, 14, 14, 1024) 0 add_25[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_57 (Conv2D) (None, 7, 7, 512) 524800 activation_65[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_44 (BatchNo (None, 7, 7, 512) 2048 conv2d_57[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_66 (Activation) (None, 7, 7, 512) 0 batch_normalization_44[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_58 (Conv2D) (None, 7, 7, 512) 2359808 activation_66[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_45 (BatchNo (None, 7, 7, 512) 2048 conv2d_58[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_67 (Activation) (None, 7, 7, 512) 0 batch_normalization_45[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_59 (Conv2D) (None, 7, 7, 2048) 1050624 activation_67[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_46 (BatchNo (None, 7, 7, 2048) 8192 conv2d_59[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_13 (Gl (None, 2048) 0 batch_normalization_46[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_13 (Global (None, 2048) 0 batch_normalization_46[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_26 (Reshape) (None, 1, 1, 2048) 0 global_average_pooling2d_13[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_27 (Reshape) (None, 1, 1, 2048) 0 global_max_pooling2d_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_26 (Dense) (None, 1, 1, 128) 262144 reshape_26[0][0] \n", + " reshape_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_27 (Dense) (None, 1, 1, 2048) 262144 dense_26[0][0] \n", + " dense_26[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_26 (Add) (None, 1, 1, 2048) 0 dense_27[0][0] \n", + " dense_27[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_68 (Activation) (None, 1, 1, 2048) 0 add_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_26 (Multiply) (None, 7, 7, 2048) 0 batch_normalization_46[0][0] \n", + " activation_68[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_13 (TensorFlow [(None, 7, 7, 1)] 0 multiply_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_13 (TensorFlowO [(None, 7, 7, 1)] 0 multiply_26[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_13 (Concatenate) (None, 7, 7, 2) 0 tf_op_layer_Mean_13[0][0] \n", + " tf_op_layer_Max_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_60 (Conv2D) (None, 7, 7, 1) 98 concatenate_13[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_69 (Activation) (None, 7, 7, 1) 0 conv2d_60[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_56 (Conv2D) (None, 7, 7, 2048) 2099200 activation_65[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_27 (Multiply) (None, 7, 7, 2048) 0 multiply_26[0][0] \n", + " activation_69[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_43 (BatchNo (None, 7, 7, 2048) 8192 conv2d_56[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_27 (Add) (None, 7, 7, 2048) 0 multiply_27[0][0] \n", + " batch_normalization_43[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_70 (Activation) (None, 7, 7, 2048) 0 add_27[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_61 (Conv2D) (None, 7, 7, 512) 1049088 activation_70[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_47 (BatchNo (None, 7, 7, 512) 2048 conv2d_61[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_71 (Activation) (None, 7, 7, 512) 0 batch_normalization_47[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_62 (Conv2D) (None, 7, 7, 512) 2359808 activation_71[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_48 (BatchNo (None, 7, 7, 512) 2048 conv2d_62[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_72 (Activation) (None, 7, 7, 512) 0 batch_normalization_48[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_63 (Conv2D) (None, 7, 7, 2048) 1050624 activation_72[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_49 (BatchNo (None, 7, 7, 2048) 8192 conv2d_63[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_14 (Gl (None, 2048) 0 batch_normalization_49[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_14 (Global (None, 2048) 0 batch_normalization_49[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_28 (Reshape) (None, 1, 1, 2048) 0 global_average_pooling2d_14[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_29 (Reshape) (None, 1, 1, 2048) 0 global_max_pooling2d_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_28 (Dense) (None, 1, 1, 128) 262144 reshape_28[0][0] \n", + " reshape_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_29 (Dense) (None, 1, 1, 2048) 262144 dense_28[0][0] \n", + " dense_28[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_28 (Add) (None, 1, 1, 2048) 0 dense_29[0][0] \n", + " dense_29[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_73 (Activation) (None, 1, 1, 2048) 0 add_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_28 (Multiply) (None, 7, 7, 2048) 0 batch_normalization_49[0][0] \n", + " activation_73[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_14 (TensorFlow [(None, 7, 7, 1)] 0 multiply_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_14 (TensorFlowO [(None, 7, 7, 1)] 0 multiply_28[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_14 (Concatenate) (None, 7, 7, 2) 0 tf_op_layer_Mean_14[0][0] \n", + " tf_op_layer_Max_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_64 (Conv2D) (None, 7, 7, 1) 98 concatenate_14[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_74 (Activation) (None, 7, 7, 1) 0 conv2d_64[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_29 (Multiply) (None, 7, 7, 2048) 0 multiply_28[0][0] \n", + " activation_74[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_29 (Add) (None, 7, 7, 2048) 0 multiply_29[0][0] \n", + " activation_70[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_75 (Activation) (None, 7, 7, 2048) 0 add_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_65 (Conv2D) (None, 7, 7, 512) 1049088 activation_75[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_50 (BatchNo (None, 7, 7, 512) 2048 conv2d_65[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_76 (Activation) (None, 7, 7, 512) 0 batch_normalization_50[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_66 (Conv2D) (None, 7, 7, 512) 2359808 activation_76[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_51 (BatchNo (None, 7, 7, 512) 2048 conv2d_66[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_77 (Activation) (None, 7, 7, 512) 0 batch_normalization_51[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_67 (Conv2D) (None, 7, 7, 2048) 1050624 activation_77[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_52 (BatchNo (None, 7, 7, 2048) 8192 conv2d_67[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_15 (Gl (None, 2048) 0 batch_normalization_52[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d_15 (Global (None, 2048) 0 batch_normalization_52[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_30 (Reshape) (None, 1, 1, 2048) 0 global_average_pooling2d_15[0][0]\n", + "__________________________________________________________________________________________________\n", + "reshape_31 (Reshape) (None, 1, 1, 2048) 0 global_max_pooling2d_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_30 (Dense) (None, 1, 1, 128) 262144 reshape_30[0][0] \n", + " reshape_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_31 (Dense) (None, 1, 1, 2048) 262144 dense_30[0][0] \n", + " dense_30[1][0] \n", + "__________________________________________________________________________________________________\n", + "add_30 (Add) (None, 1, 1, 2048) 0 dense_31[0][0] \n", + " dense_31[1][0] \n", + "__________________________________________________________________________________________________\n", + "activation_78 (Activation) (None, 1, 1, 2048) 0 add_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_30 (Multiply) (None, 7, 7, 2048) 0 batch_normalization_52[0][0] \n", + " activation_78[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean_15 (TensorFlow [(None, 7, 7, 1)] 0 multiply_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max_15 (TensorFlowO [(None, 7, 7, 1)] 0 multiply_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_15 (Concatenate) (None, 7, 7, 2) 0 tf_op_layer_Mean_15[0][0] \n", + " tf_op_layer_Max_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_68 (Conv2D) (None, 7, 7, 1) 98 concatenate_15[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_79 (Activation) (None, 7, 7, 1) 0 conv2d_68[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_31 (Multiply) (None, 7, 7, 2048) 0 multiply_30[0][0] \n", + " activation_79[0][0] \n", + "__________________________________________________________________________________________________\n", + "add_31 (Add) (None, 7, 7, 2048) 0 multiply_31[0][0] \n", + " activation_75[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_80 (Activation) (None, 7, 7, 2048) 0 add_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d_16 (Gl (None, 2048) 0 activation_80[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_32 (Dense) (None, 17) 34833 global_average_pooling2d_16[0][0]\n", + "==================================================================================================\n", + "Total params: 26,139,057\n", + "Trainable params: 26,085,937\n", + "Non-trainable params: 53,120\n", + "__________________________________________________________________________________________________\n" + ] + } + ], + "source": [ + "# 定义ECA-ResNet50\n", + "inputs = Input(shape=(image_size, image_size, 3))\n", + "# 填充3圈0,填充后图像从224×224变成230×230\n", + "x = ZeroPadding2D((3, 3))(inputs)\n", + "x = Conv2D(filters=64, kernel_size=7, strides=2, padding='valid')(x)\n", + "x = BatchNormalization(epsilon=1.001e-5)(x)\n", + "x = Activation('relu')(x)\n", + "# 填充1圈0\n", + "x = ZeroPadding2D((1, 1))(x)\n", + "x = MaxPool2D(pool_size=3, strides=2, padding='valid')(x)\n", + "# 堆叠残差结构\n", + "# blocks表示堆叠数量\n", + "x = stack(x, filters=64, blocks=3, strides=1)\n", + "x = stack(x, filters=128, blocks=4, strides=2)\n", + "x = stack(x, filters=256, blocks=6, strides=2)\n", + "x = stack(x, filters=512, blocks=3, strides=2)\n", + "# 根据特征图大小进行平均池化,池化后得到2维数据\n", + "x = GlobalAvgPool2D()(x)\n", + "x = Dense(num_classes, activation='softmax')(x)\n", + "# 定义模型\n", + "model = Model(inputs=inputs, outputs=x)\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fcc8c8e4", + "metadata": {}, + "outputs": [], + "source": [ + "# 学习率调节函数,逐渐减小学习率\n", + "def adjust_learning_rate(epoch):\n", + " # 前40周期\n", + " if epoch<=40:\n", + " lr = 1e-4\n", + " # 前40到80周期\n", + " elif epoch>40 and epoch<=80:\n", + " lr = 1e-5\n", + " # 80到100周期\n", + " else:\n", + " lr = 1e-6\n", + " return lr\n", + "\n", + "# 定义优化器\n", + "adam = Adam(lr=1e-4)\n", + "\n", + "# 读取模型\n", + "checkpoint_save_path = \"./checkpoint/CBAM-ResNet-50.ckpt\"\n", + "if os.path.exists(checkpoint_save_path + '.index'):\n", + " print('-------------load the model-----------------')\n", + " model.load_weights(checkpoint_save_path)\n", + "# 保存模型\n", + "cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,\n", + " save_weights_only=True,\n", + " save_best_only=True)\n", + "\n", + "# 定义学习率衰减策略\n", + "callbacks = []\n", + "callbacks.append(LearningRateScheduler(adjust_learning_rate))\n", + "callbacks.append(cp_callback)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "2742ab78", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n", + "34/34 [==============================] - 26s 758ms/step - loss: 2.4103 - accuracy: 0.2399 - val_loss: 2.8401 - val_accuracy: 0.0588\n", + "Epoch 2/100\n", + "34/34 [==============================] - 19s 560ms/step - loss: 1.7219 - accuracy: 0.4237 - val_loss: 2.8744 - val_accuracy: 0.0588\n", + "Epoch 3/100\n", + "34/34 [==============================] - 19s 561ms/step - loss: 1.4136 - accuracy: 0.5340 - val_loss: 2.9741 - val_accuracy: 0.0772\n", + "Epoch 4/100\n", + "34/34 [==============================] - 19s 563ms/step - loss: 1.2882 - accuracy: 0.5846 - val_loss: 3.1395 - val_accuracy: 0.0956\n", + "Epoch 5/100\n", + "34/34 [==============================] - 19s 565ms/step - loss: 1.2126 - accuracy: 0.6103 - val_loss: 3.4028 - val_accuracy: 0.0735\n", + "Epoch 6/100\n", + "34/34 [==============================] - 19s 567ms/step - loss: 1.1063 - accuracy: 0.6268 - val_loss: 3.5835 - val_accuracy: 0.0846\n", + "Epoch 7/100\n", + "34/34 [==============================] - 19s 569ms/step - loss: 0.9754 - accuracy: 0.6820 - val_loss: 4.1491 - val_accuracy: 0.0919\n", + "Epoch 8/100\n", + "34/34 [==============================] - 19s 571ms/step - loss: 0.8735 - accuracy: 0.7013 - val_loss: 5.0138 - val_accuracy: 0.0993\n", + "Epoch 9/100\n", + "34/34 [==============================] - 19s 571ms/step - loss: 0.8979 - accuracy: 0.7077 - val_loss: 4.8411 - val_accuracy: 0.1066\n", + "Epoch 10/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.7525 - accuracy: 0.7426 - val_loss: 5.3135 - val_accuracy: 0.1029\n", + "Epoch 11/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.7249 - accuracy: 0.7592 - val_loss: 4.7052 - val_accuracy: 0.1324\n", + "Epoch 12/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.7058 - accuracy: 0.7583 - val_loss: 3.4063 - val_accuracy: 0.2169\n", + "Epoch 13/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.6227 - accuracy: 0.7923 - val_loss: 3.5960 - val_accuracy: 0.2390\n", + "Epoch 14/100\n", + "34/34 [==============================] - 23s 684ms/step - loss: 0.5363 - accuracy: 0.8290 - val_loss: 2.3539 - val_accuracy: 0.4375\n", + "Epoch 15/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.5091 - accuracy: 0.8318 - val_loss: 2.4025 - val_accuracy: 0.4706\n", + "Epoch 16/100\n", + "34/34 [==============================] - 20s 576ms/step - loss: 0.4949 - accuracy: 0.8300 - val_loss: 2.9511 - val_accuracy: 0.3419\n", + "Epoch 17/100\n", + "34/34 [==============================] - 23s 675ms/step - loss: 0.4770 - accuracy: 0.8346 - val_loss: 1.6597 - val_accuracy: 0.5735\n", + "Epoch 18/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.4326 - accuracy: 0.8585 - val_loss: 2.2440 - val_accuracy: 0.4816\n", + "Epoch 19/100\n", + "34/34 [==============================] - 23s 672ms/step - loss: 0.3691 - accuracy: 0.8778 - val_loss: 1.6387 - val_accuracy: 0.6029\n", + "Epoch 20/100\n", + "34/34 [==============================] - 23s 679ms/step - loss: 0.4038 - accuracy: 0.8575 - val_loss: 1.3619 - val_accuracy: 0.6507\n", + "Epoch 21/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.3602 - accuracy: 0.8778 - val_loss: 1.6731 - val_accuracy: 0.5809\n", + "Epoch 22/100\n", + "34/34 [==============================] - 23s 667ms/step - loss: 0.3433 - accuracy: 0.8796 - val_loss: 1.0580 - val_accuracy: 0.7132\n", + "Epoch 23/100\n", + "34/34 [==============================] - 19s 570ms/step - loss: 0.3768 - accuracy: 0.8814 - val_loss: 1.3455 - val_accuracy: 0.6618\n", + "Epoch 24/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.3039 - accuracy: 0.9017 - val_loss: 1.2854 - val_accuracy: 0.6654\n", + "Epoch 25/100\n", + "34/34 [==============================] - 20s 577ms/step - loss: 0.3111 - accuracy: 0.8925 - val_loss: 1.3274 - val_accuracy: 0.6875\n", + "Epoch 26/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.3072 - accuracy: 0.9007 - val_loss: 2.1699 - val_accuracy: 0.5515\n", + "Epoch 27/100\n", + "34/34 [==============================] - 20s 578ms/step - loss: 0.2506 - accuracy: 0.9228 - val_loss: 1.2866 - val_accuracy: 0.6838\n", + "Epoch 28/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.2427 - accuracy: 0.9164 - val_loss: 1.1020 - val_accuracy: 0.7353\n", + "Epoch 29/100\n", + "34/34 [==============================] - 20s 579ms/step - loss: 0.2441 - accuracy: 0.9173 - val_loss: 1.5090 - val_accuracy: 0.6324\n", + "Epoch 30/100\n", + "34/34 [==============================] - 23s 679ms/step - loss: 0.2284 - accuracy: 0.9301 - val_loss: 1.0456 - val_accuracy: 0.7353\n", + "Epoch 31/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.1670 - accuracy: 0.9439 - val_loss: 1.0975 - val_accuracy: 0.7426\n", + "Epoch 32/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.1801 - accuracy: 0.9338 - val_loss: 1.7434 - val_accuracy: 0.6140\n", + "Epoch 33/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.1899 - accuracy: 0.9320 - val_loss: 1.8054 - val_accuracy: 0.5993\n", + "Epoch 34/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.1806 - accuracy: 0.9476 - val_loss: 1.4145 - val_accuracy: 0.6912\n", + "Epoch 35/100\n", + "34/34 [==============================] - 23s 674ms/step - loss: 0.1928 - accuracy: 0.9357 - val_loss: 0.9944 - val_accuracy: 0.7463\n", + "Epoch 36/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.1652 - accuracy: 0.9485 - val_loss: 1.2809 - val_accuracy: 0.7279\n", + "Epoch 37/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.1842 - accuracy: 0.9357 - val_loss: 2.1901 - val_accuracy: 0.5956\n", + "Epoch 38/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.1597 - accuracy: 0.9458 - val_loss: 1.3488 - val_accuracy: 0.6949\n", + "Epoch 39/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.1627 - accuracy: 0.9504 - val_loss: 1.1944 - val_accuracy: 0.7169\n", + "Epoch 40/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.1306 - accuracy: 0.9540 - val_loss: 1.3589 - val_accuracy: 0.6728\n", + "Epoch 41/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.1483 - accuracy: 0.9577 - val_loss: 1.9703 - val_accuracy: 0.6397\n", + "Epoch 42/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.0896 - accuracy: 0.9715 - val_loss: 1.2209 - val_accuracy: 0.7353\n", + "Epoch 43/100\n", + "34/34 [==============================] - 23s 683ms/step - loss: 0.0573 - accuracy: 0.9825 - val_loss: 0.9555 - val_accuracy: 0.7684\n", + "Epoch 44/100\n", + "34/34 [==============================] - 23s 670ms/step - loss: 0.0613 - accuracy: 0.9825 - val_loss: 0.8906 - val_accuracy: 0.7831\n", + "Epoch 45/100\n", + "34/34 [==============================] - 23s 682ms/step - loss: 0.0451 - accuracy: 0.9881 - val_loss: 0.8770 - val_accuracy: 0.7904\n", + "Epoch 46/100\n", + "34/34 [==============================] - 23s 669ms/step - loss: 0.0487 - accuracy: 0.9871 - val_loss: 0.8389 - val_accuracy: 0.7904\n", + "Epoch 47/100\n", + "34/34 [==============================] - 19s 571ms/step - loss: 0.0340 - accuracy: 0.9908 - val_loss: 0.8394 - val_accuracy: 0.8015\n", + "Epoch 48/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0477 - accuracy: 0.9853 - val_loss: 0.8681 - val_accuracy: 0.7978\n", + "Epoch 49/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0236 - accuracy: 0.9963 - val_loss: 0.8662 - val_accuracy: 0.7868\n", + "Epoch 50/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0319 - accuracy: 0.9954 - val_loss: 0.8971 - val_accuracy: 0.7831\n", + "Epoch 51/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0362 - accuracy: 0.9908 - val_loss: 0.8795 - val_accuracy: 0.7868\n", + "Epoch 52/100\n", + "34/34 [==============================] - 23s 680ms/step - loss: 0.0303 - accuracy: 0.9908 - val_loss: 0.8235 - val_accuracy: 0.8015\n", + "Epoch 53/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0365 - accuracy: 0.9890 - val_loss: 0.8499 - val_accuracy: 0.7868\n", + "Epoch 54/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0317 - accuracy: 0.9936 - val_loss: 0.8610 - val_accuracy: 0.7941\n", + "Epoch 55/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0264 - accuracy: 0.9936 - val_loss: 0.8967 - val_accuracy: 0.7978\n", + "Epoch 56/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0265 - accuracy: 0.9945 - val_loss: 0.8602 - val_accuracy: 0.7978\n", + "Epoch 57/100\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "34/34 [==============================] - 19s 573ms/step - loss: 0.0239 - accuracy: 0.9982 - val_loss: 0.8435 - val_accuracy: 0.8015\n", + "Epoch 58/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0237 - accuracy: 0.9991 - val_loss: 0.8479 - val_accuracy: 0.8015\n", + "Epoch 59/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0265 - accuracy: 0.9954 - val_loss: 0.8422 - val_accuracy: 0.8162\n", + "Epoch 60/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0318 - accuracy: 0.9926 - val_loss: 0.8483 - val_accuracy: 0.8051\n", + "Epoch 61/100\n", + "34/34 [==============================] - 20s 576ms/step - loss: 0.0306 - accuracy: 0.9936 - val_loss: 0.8758 - val_accuracy: 0.7941\n", + "Epoch 62/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0268 - accuracy: 0.9936 - val_loss: 0.8854 - val_accuracy: 0.7941\n", + "Epoch 63/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0242 - accuracy: 0.9945 - val_loss: 0.8775 - val_accuracy: 0.8015\n", + "Epoch 64/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.0164 - accuracy: 0.9991 - val_loss: 0.8602 - val_accuracy: 0.8125\n", + "Epoch 65/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0190 - accuracy: 0.9972 - val_loss: 0.8858 - val_accuracy: 0.7941\n", + "Epoch 66/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0213 - accuracy: 0.9945 - val_loss: 0.8573 - val_accuracy: 0.8162\n", + "Epoch 67/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0310 - accuracy: 0.9917 - val_loss: 0.8512 - val_accuracy: 0.7978\n", + "Epoch 68/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0231 - accuracy: 0.9917 - val_loss: 0.8371 - val_accuracy: 0.8015\n", + "Epoch 69/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0265 - accuracy: 0.9936 - val_loss: 0.8836 - val_accuracy: 0.8051\n", + "Epoch 70/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.0259 - accuracy: 0.9926 - val_loss: 0.8874 - val_accuracy: 0.7941\n", + "Epoch 71/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0168 - accuracy: 0.9972 - val_loss: 0.8745 - val_accuracy: 0.7831\n", + "Epoch 72/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0241 - accuracy: 0.9936 - val_loss: 0.8773 - val_accuracy: 0.7978\n", + "Epoch 73/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0224 - accuracy: 0.9945 - val_loss: 0.9092 - val_accuracy: 0.7941\n", + "Epoch 74/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0327 - accuracy: 0.9908 - val_loss: 0.8578 - val_accuracy: 0.7941\n", + "Epoch 75/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0201 - accuracy: 0.9945 - val_loss: 0.8747 - val_accuracy: 0.8051\n", + "Epoch 76/100\n", + "34/34 [==============================] - 19s 571ms/step - loss: 0.0353 - accuracy: 0.9908 - val_loss: 0.9268 - val_accuracy: 0.7978\n", + "Epoch 77/100\n", + "34/34 [==============================] - 19s 574ms/step - loss: 0.0345 - accuracy: 0.9899 - val_loss: 0.8946 - val_accuracy: 0.7904\n", + "Epoch 78/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0204 - accuracy: 0.9945 - val_loss: 0.8962 - val_accuracy: 0.8015\n", + "Epoch 79/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0187 - accuracy: 0.9936 - val_loss: 0.8986 - val_accuracy: 0.8015\n", + "Epoch 80/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0207 - accuracy: 0.9972 - val_loss: 0.8944 - val_accuracy: 0.8051\n", + "Epoch 81/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0225 - accuracy: 0.9963 - val_loss: 0.9194 - val_accuracy: 0.8015\n", + "Epoch 82/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0157 - accuracy: 0.9972 - val_loss: 0.9018 - val_accuracy: 0.8088\n", + "Epoch 83/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0158 - accuracy: 0.9963 - val_loss: 0.8948 - val_accuracy: 0.8015\n", + "Epoch 84/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0226 - accuracy: 0.9917 - val_loss: 0.8920 - val_accuracy: 0.8015\n", + "Epoch 85/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0198 - accuracy: 0.9954 - val_loss: 0.8888 - val_accuracy: 0.8015\n", + "Epoch 86/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0139 - accuracy: 0.9972 - val_loss: 0.8852 - val_accuracy: 0.7978\n", + "Epoch 87/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0139 - accuracy: 0.9972 - val_loss: 0.8870 - val_accuracy: 0.7978\n", + "Epoch 88/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0205 - accuracy: 0.9963 - val_loss: 0.8866 - val_accuracy: 0.8015\n", + "Epoch 89/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.0171 - accuracy: 0.9945 - val_loss: 0.8845 - val_accuracy: 0.8015\n", + "Epoch 90/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0176 - accuracy: 0.9972 - val_loss: 0.8909 - val_accuracy: 0.7978\n", + "Epoch 91/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0216 - accuracy: 0.9945 - val_loss: 0.8935 - val_accuracy: 0.7978\n", + "Epoch 92/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0167 - accuracy: 0.9972 - val_loss: 0.8974 - val_accuracy: 0.7978\n", + "Epoch 93/100\n", + "34/34 [==============================] - 19s 572ms/step - loss: 0.0209 - accuracy: 0.9936 - val_loss: 0.9062 - val_accuracy: 0.7978\n", + "Epoch 94/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0127 - accuracy: 0.9982 - val_loss: 0.9032 - val_accuracy: 0.7978\n", + "Epoch 95/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0126 - accuracy: 0.9991 - val_loss: 0.8994 - val_accuracy: 0.7978\n", + "Epoch 96/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0219 - accuracy: 0.9963 - val_loss: 0.8988 - val_accuracy: 0.7978\n", + "Epoch 97/100\n", + "34/34 [==============================] - 20s 575ms/step - loss: 0.0212 - accuracy: 0.9954 - val_loss: 0.8945 - val_accuracy: 0.7978\n", + "Epoch 98/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0197 - accuracy: 0.9963 - val_loss: 0.8907 - val_accuracy: 0.7978\n", + "Epoch 99/100\n", + "34/34 [==============================] - 20s 574ms/step - loss: 0.0147 - accuracy: 0.9972 - val_loss: 0.8944 - val_accuracy: 0.7978\n", + "Epoch 100/100\n", + "34/34 [==============================] - 19s 573ms/step - loss: 0.0126 - accuracy: 0.9972 - val_loss: 0.8948 - val_accuracy: 0.7978\n" + ] + } + ], + "source": [ + "# 定义优化器,loss function,训练过程中计算准确率\n", + "model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])\n", + "\n", + "# Tensorflow2.1版本(包括2.1)之后可以直接使用fit训练模型\n", + "history = model.fit(x=train_generator,epochs=epochs,validation_data=test_generator,callbacks=callbacks)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "89b71112", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# 画出训练集准确率曲线图\n", + "plt.plot(np.arange(epochs),history.history['accuracy'],c='b',label='train_accuracy')\n", + "# 画出验证集准确率曲线图\n", + "plt.plot(np.arange(epochs),history.history['val_accuracy'],c='y',label='val_accuracy')\n", + "# 图例\n", + "plt.legend()\n", + "# x坐标描述\n", + "plt.xlabel('epochs')\n", + "# y坐标描述\n", + "plt.ylabel('accuracy')\n", + "# 显示图像\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "dfb34900", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# 画出训练集loss曲线图\n", + "plt.plot(np.arange(epochs),history.history['loss'],c='b',label='train_loss')\n", + "# 画出验证集loss曲线图\n", + "plt.plot(np.arange(epochs),history.history['val_loss'],c='y',label='val_loss')\n", + "# 图例\n", + "plt.legend()\n", + "# x坐标描述\n", + "plt.xlabel('epochs')\n", + "# y坐标描述\n", + "plt.ylabel('loss')\n", + "# 显示图像\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b02cfa4", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:tf2.3]", + "language": "python", + "name": "conda-env-tf2.3-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM.ipynb" "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM.ipynb" new file mode 100644 index 0000000..1de9451 --- /dev/null +++ "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/CBAM.ipynb" @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "from tensorflow.keras.layers import Activation, Add, Concatenate, Conv1D, Conv2D, Dense,multiply,Input\n", + "from tensorflow.keras.layers import GlobalAveragePooling2D, GlobalMaxPooling2D, Lambda, BatchNormalization,Reshape\n", + "from tensorflow.keras.layers import Multiply\n", + "from tensorflow.keras.models import Model\n", + "from plot_model import plot_model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Channel Attention Module\n", + "def channelAttention(input_feature,ratio=16,name=\"\"):\n", + " # 获取特征层的通道数\n", + " channel=input_feature.shape[-1]\n", + " \n", + " shared_layer_one=Dense(channel//ratio,\n", + " activation='relu',\n", + " use_bias=False,\n", + " name=\"channel_attention_shared_one_\" + str(name))\n", + " shared_layer_two=Dense(channel,\n", + " use_bias=False,\n", + " name=\"channel_attention_shared_two_\" + str(name))\n", + " \n", + " # 全局平均池化\n", + " avg_pool=GlobalAveragePooling2D()(input_feature)\n", + " # 全局最大池化\n", + " max_pool=GlobalMaxPooling2D()(input_feature)\n", + " \n", + " avg_pool=Reshape((1,1,channel))(avg_pool)\n", + " max_pool=Reshape((1,1,channel))(max_pool)\n", + " \n", + " avg_pool=shared_layer_one(avg_pool)\n", + " max_pool=shared_layer_one(max_pool)\n", + " \n", + " avg_pool=shared_layer_two(avg_pool)\n", + " max_pool=shared_layer_two(max_pool)\n", + " \n", + " #相加\n", + " cbam_feature=Add()([avg_pool,max_pool])\n", + " #获得输入特征层每一个通道的权值\n", + " cbam_feature=Activation('sigmoid')(cbam_feature)\n", + " #将这个权值与原输入特征层相乘\n", + " out=Multiply()([input_feature,cbam_feature])\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Spatial Attention Module\n", + "def spatialAttention(input_feature,kernel_size=7,name=\"\"):\n", + " cbam_feature=input_feature\n", + " #在通道维度上分别做最大池化和平均池化\n", + " avg_pool=tf.reduce_mean(input_feature,axis=3,keepdims=True)\n", + " max_pool=tf.reduce_max(input_feature,axis=3,keepdims=True)\n", + " \n", + " concat=Concatenate(axis=3)([avg_pool,max_pool])\n", + " \n", + " cbam_feature=Conv2D(filters=1,\n", + " kernel_size=kernel_size,\n", + " strides=1,\n", + " padding='same',\n", + " use_bias=False,\n", + " name=\"spatial_attention_\" + str(name))(concat)\n", + " cbam_feature=Activation('sigmoid')(cbam_feature)\n", + " \n", + " out=Multiply()([input_feature,cbam_feature])\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# CBAM Block\n", + "def cbamBlock(cbam_feature,ratio=16,name=\"\"):\n", + " # 先通道注意力,再空间注意力,原论文中真名这种排列效果更好。\n", + " cbam_feature=channelAttention(cbam_feature,ratio,name)\n", + " cbam_feature=spatialAttention(cbam_feature,name)\n", + " return cbam_feature" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"model\"\n", + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "input_1 (InputLayer) [(None, 26, 26, 512) 0 \n", + "__________________________________________________________________________________________________\n", + "global_average_pooling2d (Globa (None, 512) 0 input_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "global_max_pooling2d (GlobalMax (None, 512) 0 input_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape (Reshape) (None, 1, 1, 512) 0 global_average_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "reshape_1 (Reshape) (None, 1, 1, 512) 0 global_max_pooling2d[0][0] \n", + "__________________________________________________________________________________________________\n", + "channel_attention_shared_one_ ( (None, 1, 1, 32) 16384 reshape[0][0] \n", + " reshape_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "channel_attention_shared_two_ ( (None, 1, 1, 512) 16384 channel_attention_shared_one_[0][\n", + " channel_attention_shared_one_[1][\n", + "__________________________________________________________________________________________________\n", + "add (Add) (None, 1, 1, 512) 0 channel_attention_shared_two_[0][\n", + " channel_attention_shared_two_[1][\n", + "__________________________________________________________________________________________________\n", + "activation (Activation) (None, 1, 1, 512) 0 add[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply (Multiply) (None, 26, 26, 512) 0 input_1[0][0] \n", + " activation[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Mean (TensorFlowOpL [(None, 26, 26, 1)] 0 multiply[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf_op_layer_Max (TensorFlowOpLa [(None, 26, 26, 1)] 0 multiply[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate (Concatenate) (None, 26, 26, 2) 0 tf_op_layer_Mean[0][0] \n", + " tf_op_layer_Max[0][0] \n", + "__________________________________________________________________________________________________\n", + "spatial_attention_ (Conv2D) (None, 26, 26, 1) 98 concatenate[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_1 (Activation) (None, 26, 26, 1) 0 spatial_attention_[0][0] \n", + "__________________________________________________________________________________________________\n", + "multiply_1 (Multiply) (None, 26, 26, 512) 0 multiply[0][0] \n", + " activation_1[0][0] \n", + "==================================================================================================\n", + "Total params: 32,866\n", + "Trainable params: 32,866\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n" + ] + } + ], + "source": [ + "inputs=Input([26,26,512])\n", + "x=channelAttention(inputs)\n", + "x=spatialAttention(x)\n", + "model=Model(inputs,x)\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Onv2rG97VlaW3n77bcNPbqmsrNSiRYuCUluknisYHA6HHA6HsrKy/La//PLL+stf/kIvJBAEhEgACLEHHnhAX331lTZt2uTblpCQoOLiYi1fvrxd4xKlhrUj+/fvH5SZ25F6rmCorq7WypUrVVxc7FtwXGrohXz88cc1e/ZsXX311SZWCHQN3M4GgDC4++67dfDgQb3zzjt+291ut4qLiwO6rY3mFRYWKjMzUykpKX7bf/vb3+qee+5RVVUVIRLouIcIkQAQBuXl5UpNTdXu3bs1duxYs8uJOufOndPYsWN11VVXaf369WaXA3QFhEgACAePx6Nrr71Wl19+uX73u9+ZXU7UWbNmjebPn68PPvhAo0ePNrscoCsgRAJAuLz++uuyWq3avn17k2VnEDqnT5/WlVdeqenTp6u4uNjscoCughAJAOF0yy23qEePHtq8ebPZpUSNgoICLV68WHv37tXFF19sdjlAV8ESPwAQTsuWLdOWLVu0ZcsWs0uJCocOHdKyZcv08MMPEyCBIKMnEgDC7I477tDevXu1e/du9ejRw+xyurT7779fb7zxhj7++GP16dPH7HKAroSeSAAIt1//+tfav3+/fv7zn5tdSpdWWVmpF154Qc888wwBEggBeiIBwAS/+tWv9Oijj2r37t266qqrzC6ny6mrq9MNN9yg/v37M/4UCA0m1gCAGerr6zVx4kTFxcXp7bffVkxMjNkldSnLli3T0qVLVVVVpVGjRpldDtAVcTsbAMwQExOj4uJi7dq1S8uWLTO7nC7lww8/1BNPPKFly5YRIIEQoicSAEz03HPP6Uc/+pHKy8s1adIks8vp9M6ePavx48erT58+2rp1Kz28QOjQEwkAZvr+978vm82mjIwMHTlyxOxyOo3du3frwQcf1IEDB/y2L1u2THv37tWLL75IgARCjBAJACZbvXq1unXrpvvuu0/19fVN9s2bN8+kyiLXhg0btGrVKo0ZM0bbt2+XJO3atUvLly/Xk08+qeHDh5tcIdD1cTsbACLAjh07NG3aND3wwAN65plnJEnPP/+87r//fknS5s2blZqaamaJEcPj8Wjo0KH64osvFBMTo27duumZZ57RihUrNHDgQG3evFkWi8XsMoGujtnZABAp1q1bp4yMDK1atUqxsbG6//77de7cOcXGxmr8+PF69913zS4xImz//9m7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CxcXF4NljP005ebmIioqCtOnT7dUqHYvMjISY8eOhZeXV7l5ZfvaVXS56NatGwYOHIiFCxfKWpf7s/bVxv6sTRwn0q5NZhJJRIooKCjAggULMH/+fDz++OP44osvLFbrQ7WrSZMmmD9/vn5YGyIJk0i7xsHGiUgZbm5umDNnDlJSUuDh4YHevXvjzTffRHZ2ttKhkQy5ubm4efOmrD6RRGQfmEQSkaI6dOiAxMREfPPNN0hMTMRjjz2GpUuXoqioSOnQyATSINpMIokcD5NIIrIKo0aNwqlTpzBp0iS8//77eOqpp7B3716lw6IqZGRkQKVS1cojD4nItjCJJCKrUb9+fcybNw8nT56Ej48P+vfvj9GjR+PixYtKh0YVSE9PR7NmzVC3bl2lQyEiC2MSSURWp23btvjhhx8QHx+Po0ePokOHDpg/fz7u3LmjdGhURlpaGpuyiRwUk0gislpqtRq///47Zs2ahQULFqBNmzb46quvcP/+faVDo3/IHWiciOwHk0gismr16tXDhx9+iPPnz+Oll17CxIkT8eSTT2Lnzp1Kh0ZgEknkyJhEEpFN8PLywhdffIETJ06gXbt2GDZsGAYMGIDjx48rHZpDy8jIQOvWrZUOg4gUwCSSiGxK+/btsWXLFhw4cAB37txBt27dEBgYiKysLKVDczhXr15FXl4e78wmclBMIonIJj377LP45Zdf8M033+DIkSNo37493nvvPVy9elXp0OzWyZMncfr0ady9exeAeGc2wDEiiRwVH3tIRDavoKAAq1atwrx583D79m288847mD59Opo0aaJ0aHal9LOXPT090bRpU/z999/w9/dH69at0apVK/j6+sLX1xdOTqyjID720M7x2dlEZD/+/vtvLF++HJ9++ikKCwsxbdo0TJs2DY0aNVI6NLvw6KOPIjU11WCak5MTXF1dUVxcrH/K0Nq1a/H6668rECFZGyaRdo3PziYi++Hu7o73338faWlpmDFjBj777DO0bt0aCxYsQH5+vtLh2bxBgwbB1dXVYNr9+/dx7949g8dUPvnkk5YOjYgUwCSSiOxOw4YNodFokJ6ejuDgYISHh6NNmzZYsmQJByyvgR49elQ6RqerqyteeOEFPP300xaMioiUwiSSiOyWh4cHwsLCkJaWhtdffx0ajQZt27bF4sWLcfv27SrXT0tLw2+//WaB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1y6lpKRYXQqiiBAJAAAi6uOPP9bx48eVmppqdSmIIr6xBgA6CZvNZnUJ8MJfn22rq6vT5MmT9fnnn2vAgAFWl4PomMcSPwDQSdTX12vv3r1WlxGy++67T3379tUvf/lLq0sJG3P92rdjxw4lJSURILs4QiQAdBKXXXaZ1SWEZd26dTp06JCmT59udSmIsnfeeUff//73rS4DUcacSABATCQmJqqpqcnqMhADdrtdI0eOtLoMRBkhEgAQE0lJSXI6nVaXgRiw2+1KT0+3ugxEGSESABATSUlJ9ER2Ax999JGcTichshsgRAIAYqJfv346cOCA1WUgyrZs2aLTTjuNENkNECIBADExaNAgHTlyREePHrW6FERRfX29Ro0apd69e1tdCqKMEAkAiIlBgwZJkvbt22dxJYiml19+WWPHjrW6DMQAIRIAEBODBw+WJH366acWV4JoOXz4sOx2u/7rv/7L6lIQA4RIAEBMJCcnq2fPnvrss8+sLgVR8q9//Us9evTQuHHjrC4FMUCIBADERI8ePZScnMxwdhf27LPPKiMjQ4mJiVaXghggRAIAYuacc87Rnj17rC4DUbJhwwZNnTrV6jIQI4RIAEDMpKSkaOfOnVaXgSh466231NjYqCuvvNLqUhAjhEgAQMykpaVp165dVpeBKHj66ac1dOhQvu6wGyFEAgBiJjU1VTt37pTL5bK6FETY2rVrde2118pms1ldCmKEEAkAiJnU1FR99dVX+uSTT6wuBRH03nvv6b333tP06dOtLgUxRIgEAMRMWlqaJGnHjh0WV4JIqqmp0ZAhQ5SRkWF1KYghQiQAIGaSk5M1cOBAvf3221aXggg5deqUqqqqlJ2dzVB2N0OIBADEVHp6urZt22Z1GYiQTZs2affu3fr5z39udSmIMUIkACCm0tPTZbfbrS4DEfLYY48pIyNDI0aMsLoUxBghEgAQUyNHjtQ777yjEydOWF0KwtTU1KSnn36aXshuihAJAIipkSNH6uuvv9YHH3xgdSkI0xNPPKEePXooJyfH6lJgAUIkACCmhg0bpj59+uj111+3uhSEweVyqby8XDfccIP69u1rdTmwACESABBTPXv21GWXXaaXXnrJ6lIQho0bN+rDDz/UL3/5S6tLgUUIkQCAmBs3bpxefPFFq8tAGJYtW6YJEybou9/9rtWlwCKESABAzI0b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WrZsmdXldGmnTp1SRkaGTj/9dD3//PNMIUAgGM4GAMSnAQMGaNmyZSovL9fGjRutLqdLq6io0LZt2/TII48QIBEweiIBAHFtxowZamho0FtvvaXExESry+ly9u/frwsuuED5+fm65557rC4HnQfD2QCA+HbgwAF9//vf11VXXaVHH33U6nK6nJ/97Gd688039e677+r000+3uhx0HgxnAwDi24ABA7R8+XI9/vjjeuKJJ6wup0t5/PHH9be//U2PPvooARJBoycSANAp3HHHHVq2bJkaGhp04YUXWl1Op7d7925ddNFFmjNnjsrKyqwuB50Pw9kAgM7h5MmTmjRpkj777DO9+uqrzI8M0KFDh9S3b1/16OEZfDSv5RdffKHXXntN3/jGNyysEJ0Uw9kAgM4hISFBTz75pA4fPqwbbrhBJ0+e9Nl/8uRJPfPMMzp27JhFFcafpqYmJSYm6pJLLpHT6XRvf+CBB9TQ0KBVq1YRIBEyQiQAoNMYNGiQnnrqKT377LMqKipyb3e5XMrLy9NPf/pT/eEPf7Cwwvjy1FNPSZLefvttXXLJJdq+fbveeustFRcX6+6771Z6errFFaIzYzgbANDpVFdXKzc3V8uWLVN+fr5+8YtfaOXKlTp16pSSkpL08ccf8y03kjIyMrR161adOnVKPXv21GmnnaaBAwfqrLPO0vPPP6+EhASrS0TnxXA2AKDzycnJ0ZIlS3TLLbfoJz/5iTtAStKRI0f4hhtJu3bt0quvvuq+LidOnNCxY8e0a9cujRs3jgCJsNETCQDolFwul0aPHq3XX39dLf8qS0pK0t69e9WnTx+LqrNeaWmpSktL1dzc3GqfzWZTTk6OKisrddppp1lQHboAeiIBAJ1TUVGR3wApSYcPH9YjjzxiQVXxY+XKlX4DpGQE8JqaGl166aXavXt3bAtDl0GIBAB0Or/97W913333+Q2QknGn9j333NNt79RuaGjQnj172j3mxIkTeu+99/T000/HqCp0NYRIAECn8thjj2nhwoVtBkjToUOHVF5eHqOq4ktVVZV69+7d5v5evXqpb9++Ki8v169//esYVoauhDmRAIBOZevWrZo0aZKOHDmihISEVutFeuvfv7/27t2rb37zmzGs0FrHjx/Xt7/9bR06dKjVvoSEBJ06dUo5OTkqKytTcnKyBRWii2BOJACgcxk1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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_model(model,to_file='img/CBAM.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:tensorflow2.0-gpu]", + "language": "python", + "name": "conda-env-tensorflow2.0-gpu-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git "a/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/img/CBAM.png" "b/\347\273\217\345\205\270\347\275\221\347\273\234/CBAM(\351\200\232\351\201\223+\347\251\272\351\227\264\346\263\250\346\204\217\345\212\233\346\234\272\345\210\266)/img/CBAM.png" new file mode 100644 index 0000000000000000000000000000000000000000..b5555036a09cb44033eaa758b87f5084da984b98 GIT binary patch literal 69399 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 F-vI%=SsMTV literal 0 HcmV?d00001 -- GitLab