ShuffleNetV2:设计轻量化卷积神经网络的理论准则和应用实现

简介: 目前,神经网络架构设计主要由计算复杂度的间接度量,即 FLOPs 指导。然而,直接指标(例如速度)还取决于其他因素,例如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接指标,而不仅仅是考虑 FLOP。基于一系列受控实验,这项工作得出了几个有效网络设计的实用指南。因此,提出了一种新的架构,称为 ShuffleNet V2。全面的消融实验验证了我们的模型在速度和准确性的权衡方面是最先进的。

@toc

  参考论文:ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design

   作者:Ningning Ma, Xiangyu Zhang, Hai-Tao Zheng, Jian Sun;

  上一篇我们复现过ShuffleNetV1架构,今天来复现ShuffleNetV2架构

  前置知识:MobileNetV1MobileNetV2ShuffleNetV1

1、论文摘要

  目前,神经网络架构设计主要由计算复杂度的间接度量,即 FLOPs 指导。然而,直接指标(例如速度)还取决于其他因素,例如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接指标,而不仅仅是考虑 FLOP。基于一系列受控实验,这项工作得出了几个有效网络设计的实用指南。因此,提出了一种新的架构,称为 ShuffleNet V2。全面的消融实验验证了我们的模型在速度和准确性的权衡方面是最先进的。

image-20220819172115858

  作者在摘要和综述部分主要想说明不能仅仅只是用FLOPs来衡量网络性能,因该使用直接指标(例如速度),而不是间接指标(FLOPs),还应该在真实真实硬件上测试真实延迟。

image-20220819172828772

  如图 2 所示。我们注意到 FLOPs 指标仅考虑卷积部分。虽然这部分消耗的时间最多,但其他操作包括数据 I/O、数据 shuffle 和元素操作(AddTensor、ReLU 等)也占用了相当多的时间。因此,FLOPs 对实际运行时间的估计不够准确。

2、设计轻量化网络的四条准则

  • 输入输出通道相同时,内存访问量MAC最小。
  • 分组数过大的分组卷积会增加MAC
  • 碎片化操作对并行加速不友好,例如多分支、多路
  • 逐元素操作(Element-wise)带来的内存和耗时不可忽略,例如残差中的逐元素加法

3、ShuffleNetV2的骨干网络

image-20220819173232265

  Channel Split:在每个单元格的开始,c个特征通道的输入被分成两个分支,分别具有$c-c'$和$c'$个通道。(论文后面说为了方便直接设计成$c'=\frac{1}{2} c$,即通道对半分,一部分用于残差连接,一部分用于特征提取)

  ChannelShuffle:将堆叠的特征图通道重排,实现各分组之间的特征融合。

   ==注意,ShuffleNetV2没有分组卷积操作,和ShuffleNetV1是不同的,说来也有意思,分组卷积还是ShuffleNetV1的创新点,V2直接删了,哈哈==

image-20220819173742393

  在ShuffleNetV2基本模块中,特征图大小不变,通道数不变(因为刚开始通道数就被Channel Split操作分办,后面又用Concat操作在通道方向堆叠)

  在ShuffleNetV2下采样模块中,特征图长宽减半,通道数加倍。

4、ShuffleNetV2网络架构设计

image-20220819174020781

  和ShuffleNetV1没有啥大的区别,就是多了个Conv5,即在全局平均池化前添加一个额外的1*1卷积来混合特征。

  # of Weights表示权重个数

  从表中可以看出,每个stage模块的第一个block的stride=2,即第一个block是ShuffleNetV2的下采样模块(d图),其他的stride=1,即ShuffleNetV2的基本模块(c图)。

  Stage模块一个ShuffleNetv2下采样模块若干个ShuffleNetv2基本模块 组成。常用的模块是outchannel列的宽度超参数为1的那一列。

5、ShuffleNet-V2网络结构复现

import tensorflow as tf
from tensorflow.keras.layers import concatenate, Conv2D, Activation, BatchNormalization, DepthwiseConv2D
from tensorflow.keras.layers import add, AvgPool2D, MaxPooling2D, GlobalAveragePooling2D, Dense
from tensorflow.keras.layers import ReLU, Concatenate,Input
from tensorflow.keras.models import Model
from plot_model import plot_model

5.1 标准卷积块

标准卷积块=卷积+批标准化+ReLU

# 标准卷积快:卷积+批标准化+ReLU
# 普通卷积:卷积+批标准化+ReLU激活
def conv_block(inputs, filters, kernel_size, stride=1):
    x = Conv2D(filters, kernel_size, stride, padding='same', use_bias=False)(inputs)
    x = BatchNormalization()(x)
    x = ReLU()(x)
    return x

5.2 深度可分离卷积块

论文中DWconv的kernel_size都是3*3,只是下采样模块中的stride=2

# 深度可分离卷积模块
def depthwise_conv_block(inputs, kernel_size, stride=1):
    x = DepthwiseConv2D(kernel_size,
                        strides=stride,
                        padding='same',
                        use_bias=False  # 有BN就不要用偏置
                        )(inputs)
    x = BatchNormalization()(x)
    return x

5.3 Channel Shuffle

# Channel Shuffle模块
# 通道重排,跨组信息交互
# num_groups=2:论文中默认就是2组特征,对应左分支的shortcut和右边经过卷积之后的
def channel_shuffle(inputs, num_groups=2):
    # 先得到输入特征图的shape,b:batch size,h,w:一张图的size,c:通道数
    b, h, w, c = inputs.shape

    # 确定shape = [b, h, w, num_groups, c//num_groups]。通道维度原来是一个长为c的一维tensor,变成num_groups行n列的矩阵
    # 在通道维度上将特征图reshape为num_groups行n列的矩阵
    x_reshaped = tf.reshape(inputs, [-1, h, w, num_groups, c // num_groups])

    # 确定转置的矩形的shape = [b, h, w, c//num_groups, num_groups]
    # 矩阵转置,最后两个维度从num_groups行n列变成n行num_groups列
    x_transposed = tf.transpose(x_reshaped, [0, 1, 2, 4, 3])

    # 重新排列,shotcut和x的通道像素交叉排列,通道维度重新变成一维tensor
    output = tf.reshape(x_transposed, [-1, h, w, c])
    # 返回通道维度交叉排序后的tensor
    return output

5.4 Channel Split操作

这里原论文中直接对半分了。

def channel_split(inputs, num_splits=2):
    b1, b2 = tf.split(inputs, num_splits, axis=-1)
    return b1, b2

5.5 ShuffleNetV2基本模块

# ShuffleNetV2基本模块
# 长宽不变,通道数不变
def shuffle_block_s1(inputs, out_channels):
    # 论文中直接将特征图在通道维度分成两半,分别经过左右分支
    x1, x2 = channel_split(inputs)  # 此时左右分支的通道数都只有原来的一半
    # 右分支:1*1Conv+3*3DWConv+1*1Conv
    x2 = conv_block(x2, filters=out_channels // 2, kernel_size=(1, 1), stride=1)
    x2 = depthwise_conv_block(x2, kernel_size=(3, 3), stride=1)
    x2 = conv_block(x2, filters=out_channels // 2, kernel_size=(1, 1), stride=1)

    # 左右分支在通道方向上堆叠(concat)
    x = Concatenate(axis=-1)([x1, x2])
    # Channel Shuffle
    x = channel_shuffle(x)
    return x

image-20220819174914574

5.6 ShueffleNetV2下采样模块

# ShuffleNetV2下采样模块
# 下采样模块没有进行Channel Split操作,最后还是用了Concat
# 所以长宽减半,通道数加倍
# 左分支输出特征图数量+右分支输出特征图数量=下采样模块输出特征图数量
def shuffle_block_s2(inputs, out_channels):
    shortcut=inputs
    in_channels = inputs.shape[-1]

    # 左分支:3*3 DWConv(stride=2)+1*1Conv
    shortcut = depthwise_conv_block(shortcut, kernel_size=(3, 3), stride=2)  # 特征图size减半
    shortcut = conv_block(shortcut,in_channels, kernel_size=(1, 1), stride=1)

    # 右分支:1*1Conv+3*3DWConv(stride=2)+1*1Conv
    x=conv_block(inputs,in_channels//2,kernel_size=(1,1),stride=1)
    x=depthwise_conv_block(x,kernel_size=(3,3),stride=2)
    # 右分支的通道数和左分支的通道数叠加 == 输出特征图的通道数out_channel
    x=conv_block(x,out_channels-in_channels,kernel_size=(1,1),stride=1)
    # 左右分支的特征在通道维度上堆叠,out.shape[-1]==out_channel
    out=Concatenate(axis=-1)([shortcut,x])
    out=channel_shuffle(out,2)
    return out

image-20220819174950511

5.7 stage设计

每个stage中的第一个block的stride = 2(即下采样模块),其他block的stride = 1(即基本模块)

都是按照论文搭建的,要去看论文原文,要不你绝对不理解为什么这样搭建。

def stage(inputs,out_channels,n):
    # 每个stage中的第一个block的stride = 2(即下采样模块),其他block的stride = 1(即基本模块)
    # 下采样单元
    x=shuffle_block_s2(inputs,out_channels)
    for _ in range(n):
        x=shuffle_block_s1(x,out_channels)
    return x

5.8 完整网络搭建

def ShuffleNet(input_shape,num_classes):
    # 构建输入Tensor
    inputs=Input(shape=input_shape)

    x=Conv2D(filters=24,kernel_size=(3,3),strides=2,padding='same')(inputs)
    x=MaxPooling2D(pool_size=(3,3),strides=2,padding='same')(x)

    x=stage(x,out_channels=116,n=3)
    x=stage(x,out_channels=232,n=7)
    x=stage(x,out_channels=464,n=3)

    x=Conv2D(filters=1024,kernel_size=(1,1),strides=1,padding='same')(x)
    x=GlobalAveragePooling2D()(x)
    x=Dense(num_classes,activation='softmax')(x)

    model=Model(inputs,x)
    return model
model=ShuffleNet(input_shape=(224,224,3),num_classes=1000)
model.summary()

5.9 模型摘要

Model: "model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 224, 224, 3) 0                                            
__________________________________________________________________________________________________
conv2d (Conv2D)                 (None, 112, 112, 24) 672         input_1[0][0]                    
__________________________________________________________________________________________________
max_pooling2d (MaxPooling2D)    (None, 56, 56, 24)   0           conv2d[0][0]                     
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 56, 56, 12)   288         max_pooling2d[0][0]              
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 56, 56, 12)   48          conv2d_2[0][0]                   
__________________________________________________________________________________________________
re_lu_1 (ReLU)                  (None, 56, 56, 12)   0           batch_normalization_2[0][0]      
__________________________________________________________________________________________________
depthwise_conv2d (DepthwiseConv (None, 28, 28, 24)   216         max_pooling2d[0][0]              
__________________________________________________________________________________________________
depthwise_conv2d_1 (DepthwiseCo (None, 28, 28, 12)   108         re_lu_1[0][0]                    
__________________________________________________________________________________________________
batch_normalization (BatchNorma (None, 28, 28, 24)   96          depthwise_conv2d[0][0]           
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 28, 28, 12)   48          depthwise_conv2d_1[0][0]         
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 28, 28, 24)   576         batch_normalization[0][0]        
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 28, 28, 92)   1104        batch_normalization_3[0][0]      
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 28, 28, 24)   96          conv2d_1[0][0]                   
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 28, 28, 92)   368         conv2d_3[0][0]                   
__________________________________________________________________________________________________
re_lu (ReLU)                    (None, 28, 28, 24)   0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
re_lu_2 (ReLU)                  (None, 28, 28, 92)   0           batch_normalization_4[0][0]      
__________________________________________________________________________________________________
concatenate (Concatenate)       (None, 28, 28, 116)  0           re_lu[0][0]                      
                                                                 re_lu_2[0][0]                    
__________________________________________________________________________________________________
tf_op_layer_Reshape (TensorFlow [(None, 28, 28, 2, 5 0           concatenate[0][0]                
__________________________________________________________________________________________________
tf_op_layer_transpose (TensorFl [(None, 28, 28, 58,  0           tf_op_layer_Reshape[0][0]        
__________________________________________________________________________________________________
tf_op_layer_Reshape_1 (TensorFl [(None, 28, 28, 116) 0           tf_op_layer_transpose[0][0]      
__________________________________________________________________________________________________
tf_op_layer_split (TensorFlowOp [(None, 28, 28, 58), 0           tf_op_layer_Reshape_1[0][0]      
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 28, 28, 58)   3364        tf_op_layer_split[0][1]          
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 28, 28, 58)   232         conv2d_4[0][0]                   
__________________________________________________________________________________________________
re_lu_3 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_5[0][0]      
__________________________________________________________________________________________________
depthwise_conv2d_2 (DepthwiseCo (None, 28, 28, 58)   522         re_lu_3[0][0]                    
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 28, 28, 58)   232         depthwise_conv2d_2[0][0]         
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 28, 28, 58)   3364        batch_normalization_6[0][0]      
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 28, 28, 58)   232         conv2d_5[0][0]                   
__________________________________________________________________________________________________
re_lu_4 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_7[0][0]      
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 28, 28, 116)  0           tf_op_layer_split[0][0]          
                                                                 re_lu_4[0][0]                    
__________________________________________________________________________________________________
tf_op_layer_Reshape_2 (TensorFl [(None, 28, 28, 2, 5 0           concatenate_1[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_1 (Tensor [(None, 28, 28, 58,  0           tf_op_layer_Reshape_2[0][0]      
__________________________________________________________________________________________________
tf_op_layer_Reshape_3 (TensorFl [(None, 28, 28, 116) 0           tf_op_layer_transpose_1[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_1 (TensorFlow [(None, 28, 28, 58), 0           tf_op_layer_Reshape_3[0][0]      
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 28, 28, 58)   3364        tf_op_layer_split_1[0][1]        
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 28, 28, 58)   232         conv2d_6[0][0]                   
__________________________________________________________________________________________________
re_lu_5 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_8[0][0]      
__________________________________________________________________________________________________
depthwise_conv2d_3 (DepthwiseCo (None, 28, 28, 58)   522         re_lu_5[0][0]                    
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 28, 28, 58)   232         depthwise_conv2d_3[0][0]         
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 28, 28, 58)   3364        batch_normalization_9[0][0]      
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 28, 28, 58)   232         conv2d_7[0][0]                   
__________________________________________________________________________________________________
re_lu_6 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_10[0][0]     
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 28, 28, 116)  0           tf_op_layer_split_1[0][0]        
                                                                 re_lu_6[0][0]                    
__________________________________________________________________________________________________
tf_op_layer_Reshape_4 (TensorFl [(None, 28, 28, 2, 5 0           concatenate_2[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_2 (Tensor [(None, 28, 28, 58,  0           tf_op_layer_Reshape_4[0][0]      
__________________________________________________________________________________________________
tf_op_layer_Reshape_5 (TensorFl [(None, 28, 28, 116) 0           tf_op_layer_transpose_2[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_2 (TensorFlow [(None, 28, 28, 58), 0           tf_op_layer_Reshape_5[0][0]      
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 28, 28, 58)   3364        tf_op_layer_split_2[0][1]        
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 28, 28, 58)   232         conv2d_8[0][0]                   
__________________________________________________________________________________________________
re_lu_7 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_11[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_4 (DepthwiseCo (None, 28, 28, 58)   522         re_lu_7[0][0]                    
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 28, 28, 58)   232         depthwise_conv2d_4[0][0]         
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 28, 28, 58)   3364        batch_normalization_12[0][0]     
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 28, 28, 58)   232         conv2d_9[0][0]                   
__________________________________________________________________________________________________
re_lu_8 (ReLU)                  (None, 28, 28, 58)   0           batch_normalization_13[0][0]     
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 28, 28, 116)  0           tf_op_layer_split_2[0][0]        
                                                                 re_lu_8[0][0]                    
__________________________________________________________________________________________________
tf_op_layer_Reshape_6 (TensorFl [(None, 28, 28, 2, 5 0           concatenate_3[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_3 (Tensor [(None, 28, 28, 58,  0           tf_op_layer_Reshape_6[0][0]      
__________________________________________________________________________________________________
tf_op_layer_Reshape_7 (TensorFl [(None, 28, 28, 116) 0           tf_op_layer_transpose_3[0][0]    
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 28, 28, 58)   6728        tf_op_layer_Reshape_7[0][0]      
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 28, 28, 58)   232         conv2d_11[0][0]                  
__________________________________________________________________________________________________
re_lu_10 (ReLU)                 (None, 28, 28, 58)   0           batch_normalization_16[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_5 (DepthwiseCo (None, 14, 14, 116)  1044        tf_op_layer_Reshape_7[0][0]      
__________________________________________________________________________________________________
depthwise_conv2d_6 (DepthwiseCo (None, 14, 14, 58)   522         re_lu_10[0][0]                   
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_5[0][0]         
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 14, 14, 58)   232         depthwise_conv2d_6[0][0]         
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_14[0][0]     
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 14, 14, 116)  6728        batch_normalization_17[0][0]     
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 14, 14, 116)  464         conv2d_10[0][0]                  
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 14, 14, 116)  464         conv2d_12[0][0]                  
__________________________________________________________________________________________________
re_lu_9 (ReLU)                  (None, 14, 14, 116)  0           batch_normalization_15[0][0]     
__________________________________________________________________________________________________
re_lu_11 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_18[0][0]     
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 14, 14, 232)  0           re_lu_9[0][0]                    
                                                                 re_lu_11[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_8 (TensorFl [(None, 14, 14, 2, 1 0           concatenate_4[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_4 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_8[0][0]      
__________________________________________________________________________________________________
tf_op_layer_Reshape_9 (TensorFl [(None, 14, 14, 232) 0           tf_op_layer_transpose_4[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_3 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_9[0][0]      
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_3[0][1]        
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 14, 14, 116)  464         conv2d_13[0][0]                  
__________________________________________________________________________________________________
re_lu_12 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_19[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_7 (DepthwiseCo (None, 14, 14, 116)  1044        re_lu_12[0][0]                   
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_7[0][0]         
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_20[0][0]     
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 14, 14, 116)  464         conv2d_14[0][0]                  
__________________________________________________________________________________________________
re_lu_13 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_21[0][0]     
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 14, 14, 232)  0           tf_op_layer_split_3[0][0]        
                                                                 re_lu_13[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_10 (TensorF [(None, 14, 14, 2, 1 0           concatenate_5[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_5 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_10[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_11 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_5[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_4 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_11[0][0]     
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_4[0][1]        
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 14, 14, 116)  464         conv2d_15[0][0]                  
__________________________________________________________________________________________________
re_lu_14 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_22[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_8 (DepthwiseCo (None, 14, 14, 116)  1044        re_lu_14[0][0]                   
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_8[0][0]         
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_23[0][0]     
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 14, 14, 116)  464         conv2d_16[0][0]                  
__________________________________________________________________________________________________
re_lu_15 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_24[0][0]     
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 14, 14, 232)  0           tf_op_layer_split_4[0][0]        
                                                                 re_lu_15[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_12 (TensorF [(None, 14, 14, 2, 1 0           concatenate_6[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_6 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_12[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_13 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_6[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_5 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_13[0][0]     
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_5[0][1]        
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 14, 14, 116)  464         conv2d_17[0][0]                  
__________________________________________________________________________________________________
re_lu_16 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_25[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_9 (DepthwiseCo (None, 14, 14, 116)  1044        re_lu_16[0][0]                   
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_9[0][0]         
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_26[0][0]     
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 14, 14, 116)  464         conv2d_18[0][0]                  
__________________________________________________________________________________________________
re_lu_17 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_27[0][0]     
__________________________________________________________________________________________________
concatenate_7 (Concatenate)     (None, 14, 14, 232)  0           tf_op_layer_split_5[0][0]        
                                                                 re_lu_17[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_14 (TensorF [(None, 14, 14, 2, 1 0           concatenate_7[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_7 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_14[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_15 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_7[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_6 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_15[0][0]     
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_6[0][1]        
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 14, 14, 116)  464         conv2d_19[0][0]                  
__________________________________________________________________________________________________
re_lu_18 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_28[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_10 (DepthwiseC (None, 14, 14, 116)  1044        re_lu_18[0][0]                   
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_10[0][0]        
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_29[0][0]     
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 14, 14, 116)  464         conv2d_20[0][0]                  
__________________________________________________________________________________________________
re_lu_19 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_30[0][0]     
__________________________________________________________________________________________________
concatenate_8 (Concatenate)     (None, 14, 14, 232)  0           tf_op_layer_split_6[0][0]        
                                                                 re_lu_19[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_16 (TensorF [(None, 14, 14, 2, 1 0           concatenate_8[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_8 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_16[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_17 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_8[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_7 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_17[0][0]     
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_7[0][1]        
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 14, 14, 116)  464         conv2d_21[0][0]                  
__________________________________________________________________________________________________
re_lu_20 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_31[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_11 (DepthwiseC (None, 14, 14, 116)  1044        re_lu_20[0][0]                   
__________________________________________________________________________________________________
batch_normalization_32 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_11[0][0]        
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_32[0][0]     
__________________________________________________________________________________________________
batch_normalization_33 (BatchNo (None, 14, 14, 116)  464         conv2d_22[0][0]                  
__________________________________________________________________________________________________
re_lu_21 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_33[0][0]     
__________________________________________________________________________________________________
concatenate_9 (Concatenate)     (None, 14, 14, 232)  0           tf_op_layer_split_7[0][0]        
                                                                 re_lu_21[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_18 (TensorF [(None, 14, 14, 2, 1 0           concatenate_9[0][0]              
__________________________________________________________________________________________________
tf_op_layer_transpose_9 (Tensor [(None, 14, 14, 116, 0           tf_op_layer_Reshape_18[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_19 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_9[0][0]    
__________________________________________________________________________________________________
tf_op_layer_split_8 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_19[0][0]     
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_8[0][1]        
__________________________________________________________________________________________________
batch_normalization_34 (BatchNo (None, 14, 14, 116)  464         conv2d_23[0][0]                  
__________________________________________________________________________________________________
re_lu_22 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_34[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_12 (DepthwiseC (None, 14, 14, 116)  1044        re_lu_22[0][0]                   
__________________________________________________________________________________________________
batch_normalization_35 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_12[0][0]        
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_35[0][0]     
__________________________________________________________________________________________________
batch_normalization_36 (BatchNo (None, 14, 14, 116)  464         conv2d_24[0][0]                  
__________________________________________________________________________________________________
re_lu_23 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_36[0][0]     
__________________________________________________________________________________________________
concatenate_10 (Concatenate)    (None, 14, 14, 232)  0           tf_op_layer_split_8[0][0]        
                                                                 re_lu_23[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_20 (TensorF [(None, 14, 14, 2, 1 0           concatenate_10[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_10 (Tenso [(None, 14, 14, 116, 0           tf_op_layer_Reshape_20[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_21 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_10[0][0]   
__________________________________________________________________________________________________
tf_op_layer_split_9 (TensorFlow [(None, 14, 14, 116) 0           tf_op_layer_Reshape_21[0][0]     
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 14, 14, 116)  13456       tf_op_layer_split_9[0][1]        
__________________________________________________________________________________________________
batch_normalization_37 (BatchNo (None, 14, 14, 116)  464         conv2d_25[0][0]                  
__________________________________________________________________________________________________
re_lu_24 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_37[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_13 (DepthwiseC (None, 14, 14, 116)  1044        re_lu_24[0][0]                   
__________________________________________________________________________________________________
batch_normalization_38 (BatchNo (None, 14, 14, 116)  464         depthwise_conv2d_13[0][0]        
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 14, 14, 116)  13456       batch_normalization_38[0][0]     
__________________________________________________________________________________________________
batch_normalization_39 (BatchNo (None, 14, 14, 116)  464         conv2d_26[0][0]                  
__________________________________________________________________________________________________
re_lu_25 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_39[0][0]     
__________________________________________________________________________________________________
concatenate_11 (Concatenate)    (None, 14, 14, 232)  0           tf_op_layer_split_9[0][0]        
                                                                 re_lu_25[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_22 (TensorF [(None, 14, 14, 2, 1 0           concatenate_11[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_11 (Tenso [(None, 14, 14, 116, 0           tf_op_layer_Reshape_22[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_23 (TensorF [(None, 14, 14, 232) 0           tf_op_layer_transpose_11[0][0]   
__________________________________________________________________________________________________
conv2d_28 (Conv2D)              (None, 14, 14, 116)  26912       tf_op_layer_Reshape_23[0][0]     
__________________________________________________________________________________________________
batch_normalization_42 (BatchNo (None, 14, 14, 116)  464         conv2d_28[0][0]                  
__________________________________________________________________________________________________
re_lu_27 (ReLU)                 (None, 14, 14, 116)  0           batch_normalization_42[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_14 (DepthwiseC (None, 7, 7, 232)    2088        tf_op_layer_Reshape_23[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_15 (DepthwiseC (None, 7, 7, 116)    1044        re_lu_27[0][0]                   
__________________________________________________________________________________________________
batch_normalization_40 (BatchNo (None, 7, 7, 232)    928         depthwise_conv2d_14[0][0]        
__________________________________________________________________________________________________
batch_normalization_43 (BatchNo (None, 7, 7, 116)    464         depthwise_conv2d_15[0][0]        
__________________________________________________________________________________________________
conv2d_27 (Conv2D)              (None, 7, 7, 232)    53824       batch_normalization_40[0][0]     
__________________________________________________________________________________________________
conv2d_29 (Conv2D)              (None, 7, 7, 232)    26912       batch_normalization_43[0][0]     
__________________________________________________________________________________________________
batch_normalization_41 (BatchNo (None, 7, 7, 232)    928         conv2d_27[0][0]                  
__________________________________________________________________________________________________
batch_normalization_44 (BatchNo (None, 7, 7, 232)    928         conv2d_29[0][0]                  
__________________________________________________________________________________________________
re_lu_26 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_41[0][0]     
__________________________________________________________________________________________________
re_lu_28 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_44[0][0]     
__________________________________________________________________________________________________
concatenate_12 (Concatenate)    (None, 7, 7, 464)    0           re_lu_26[0][0]                   
                                                                 re_lu_28[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_24 (TensorF [(None, 7, 7, 2, 232 0           concatenate_12[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_12 (Tenso [(None, 7, 7, 232, 2 0           tf_op_layer_Reshape_24[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_25 (TensorF [(None, 7, 7, 464)]  0           tf_op_layer_transpose_12[0][0]   
__________________________________________________________________________________________________
tf_op_layer_split_10 (TensorFlo [(None, 7, 7, 232),  0           tf_op_layer_Reshape_25[0][0]     
__________________________________________________________________________________________________
conv2d_30 (Conv2D)              (None, 7, 7, 232)    53824       tf_op_layer_split_10[0][1]       
__________________________________________________________________________________________________
batch_normalization_45 (BatchNo (None, 7, 7, 232)    928         conv2d_30[0][0]                  
__________________________________________________________________________________________________
re_lu_29 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_45[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_16 (DepthwiseC (None, 7, 7, 232)    2088        re_lu_29[0][0]                   
__________________________________________________________________________________________________
batch_normalization_46 (BatchNo (None, 7, 7, 232)    928         depthwise_conv2d_16[0][0]        
__________________________________________________________________________________________________
conv2d_31 (Conv2D)              (None, 7, 7, 232)    53824       batch_normalization_46[0][0]     
__________________________________________________________________________________________________
batch_normalization_47 (BatchNo (None, 7, 7, 232)    928         conv2d_31[0][0]                  
__________________________________________________________________________________________________
re_lu_30 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_47[0][0]     
__________________________________________________________________________________________________
concatenate_13 (Concatenate)    (None, 7, 7, 464)    0           tf_op_layer_split_10[0][0]       
                                                                 re_lu_30[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_26 (TensorF [(None, 7, 7, 2, 232 0           concatenate_13[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_13 (Tenso [(None, 7, 7, 232, 2 0           tf_op_layer_Reshape_26[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_27 (TensorF [(None, 7, 7, 464)]  0           tf_op_layer_transpose_13[0][0]   
__________________________________________________________________________________________________
tf_op_layer_split_11 (TensorFlo [(None, 7, 7, 232),  0           tf_op_layer_Reshape_27[0][0]     
__________________________________________________________________________________________________
conv2d_32 (Conv2D)              (None, 7, 7, 232)    53824       tf_op_layer_split_11[0][1]       
__________________________________________________________________________________________________
batch_normalization_48 (BatchNo (None, 7, 7, 232)    928         conv2d_32[0][0]                  
__________________________________________________________________________________________________
re_lu_31 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_48[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_17 (DepthwiseC (None, 7, 7, 232)    2088        re_lu_31[0][0]                   
__________________________________________________________________________________________________
batch_normalization_49 (BatchNo (None, 7, 7, 232)    928         depthwise_conv2d_17[0][0]        
__________________________________________________________________________________________________
conv2d_33 (Conv2D)              (None, 7, 7, 232)    53824       batch_normalization_49[0][0]     
__________________________________________________________________________________________________
batch_normalization_50 (BatchNo (None, 7, 7, 232)    928         conv2d_33[0][0]                  
__________________________________________________________________________________________________
re_lu_32 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_50[0][0]     
__________________________________________________________________________________________________
concatenate_14 (Concatenate)    (None, 7, 7, 464)    0           tf_op_layer_split_11[0][0]       
                                                                 re_lu_32[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_28 (TensorF [(None, 7, 7, 2, 232 0           concatenate_14[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_14 (Tenso [(None, 7, 7, 232, 2 0           tf_op_layer_Reshape_28[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_29 (TensorF [(None, 7, 7, 464)]  0           tf_op_layer_transpose_14[0][0]   
__________________________________________________________________________________________________
tf_op_layer_split_12 (TensorFlo [(None, 7, 7, 232),  0           tf_op_layer_Reshape_29[0][0]     
__________________________________________________________________________________________________
conv2d_34 (Conv2D)              (None, 7, 7, 232)    53824       tf_op_layer_split_12[0][1]       
__________________________________________________________________________________________________
batch_normalization_51 (BatchNo (None, 7, 7, 232)    928         conv2d_34[0][0]                  
__________________________________________________________________________________________________
re_lu_33 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_51[0][0]     
__________________________________________________________________________________________________
depthwise_conv2d_18 (DepthwiseC (None, 7, 7, 232)    2088        re_lu_33[0][0]                   
__________________________________________________________________________________________________
batch_normalization_52 (BatchNo (None, 7, 7, 232)    928         depthwise_conv2d_18[0][0]        
__________________________________________________________________________________________________
conv2d_35 (Conv2D)              (None, 7, 7, 232)    53824       batch_normalization_52[0][0]     
__________________________________________________________________________________________________
batch_normalization_53 (BatchNo (None, 7, 7, 232)    928         conv2d_35[0][0]                  
__________________________________________________________________________________________________
re_lu_34 (ReLU)                 (None, 7, 7, 232)    0           batch_normalization_53[0][0]     
__________________________________________________________________________________________________
concatenate_15 (Concatenate)    (None, 7, 7, 464)    0           tf_op_layer_split_12[0][0]       
                                                                 re_lu_34[0][0]                   
__________________________________________________________________________________________________
tf_op_layer_Reshape_30 (TensorF [(None, 7, 7, 2, 232 0           concatenate_15[0][0]             
__________________________________________________________________________________________________
tf_op_layer_transpose_15 (Tenso [(None, 7, 7, 232, 2 0           tf_op_layer_Reshape_30[0][0]     
__________________________________________________________________________________________________
tf_op_layer_Reshape_31 (TensorF [(None, 7, 7, 464)]  0           tf_op_layer_transpose_15[0][0]   
__________________________________________________________________________________________________
conv2d_36 (Conv2D)              (None, 7, 7, 1024)   476160      tf_op_layer_Reshape_31[0][0]     
__________________________________________________________________________________________________
global_average_pooling2d (Globa (None, 1024)         0           conv2d_36[0][0]                  
__________________________________________________________________________________________________
dense (Dense)                   (None, 1000)         1025000     global_average_pooling2d[0][0]   
==================================================================================================
Total params: 2,216,440
Trainable params: 2,203,236
Non-trainable params: 13,204

5.10 模型结构大图

图太长了,需要原图或者pdf,留下邮箱我私发你。

References

Ma N, Zhang X, Zheng H T, et al. Shufflenet v2: Practical guidelines for efficient cnn architecture design[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 116-131.

旷视轻量化网络ShuffleNet V2-论文精读

8.3 使用Tensorflow2搭建ShuffleNetv2

8.1 ShuffleNet v1 v2理论讲解

ShuffleNetV1:极致轻量化卷积神经网络(分组卷积+通道重排)

ShuffleNetV2 代码复现,网络解析,附Tensorflow完整代码

ShuffleNet V2 网络结构的原理与 Tensorflow2.0 实现

目录
相关文章
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
8月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
740 11
|
8月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
522 0
|
9月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
483 0
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
460 17
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们日常生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术和安全意识等方面的问题,并提供一些实用的建议和解决方案。我们将通过分析网络攻击的常见形式,揭示网络安全的脆弱性,并介绍如何利用加密技术来保护数据。此外,我们还将强调提高个人和企业的安全意识的重要性,以应对日益复杂的网络威胁。无论你是普通用户还是IT专业人士,这篇文章都将为你提供有价值的见解和指导。
|
存储 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已经成为了我们生活中不可或缺的一部分。本文将介绍网络安全的基本概念,包括网络安全漏洞、加密技术以及如何提高个人和组织的安全意识。我们将通过一些实际案例来说明这些概念的重要性,并提供一些实用的建议来保护你的信息和数据。无论你是网络管理员还是普通用户,都可以从中获得有用的信息和技能。
324 0
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
349 10
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及提升安全意识的重要性。通过深入浅出的解释和实际案例分析,我们将揭示网络攻击的常见手段,介绍加密技术如何保护数据安全,并强调个人和企业应如何提高安全防范意识。无论你是IT专业人士还是普通网民,这篇文章都将为你提供宝贵的信息和建议,帮助你在网络世界中更安全地航行。