HorNet: 高效的空间交互模块

本文提出递归门控卷积(gnConv),它通过门控卷积核递归设计执行高效、可扩展和平移等变的高阶空间交互,即插即用来改进各种视觉Transformer和基于CNN的模型,并提出新的视觉骨干网络家族:HorNet

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

hornet: 高效的空间交互模块 - 创想鸟

超越 ConvNeXt、Swin(涨点神器): 利用递归门控卷积的高阶空间交互网络

HorNet:新的空间交互模块

1. 摘要

     本文提出递归门控卷积(gnConv),它通过门控卷积核递归设计执行高效、可扩展和平移等变的高阶空间交互,即插即用来改进各种视觉Transformer和基于CNN的模型,并提出新的视觉骨干网络家族:HorNet

2.设计缘由

     1、利用点乘积的自我注意在视觉任务中的有效性尚未从高阶空间交互的方面进行分析;

     2、由于非线性的原因,深度模型存在复杂的计算和经常高阶两个空间位置之间的交互,自注意力和其他动态网络的成功表明,显式和高阶空间交互引入的设计有利于提高视觉模型的建模能力。

     3、视觉建模的基本操作(例如自注意力中的点乘)趋势表明,可以通过增加空间交互的次数来提高网络容量。下图展示了普通卷积、注意力卷积、Transformer block以及本文的递归模块。顺序依次为a、b、c、d。 HorNet: 高效的空间交互模块 - 创想鸟

3.核心架构:递归门控卷积

     门控卷积结构如下图所示,括号中表示输出通道数。从图中可以看出,门控卷积就是首先通过两个卷积层来调整特征通道数。接着,将深度可分离卷积的输出特征沿着特征分成多块,每一块与前一块交互的特征进一步进行逐元素相乘的方式进行交互,最终得到输出特征。这里递归就是不断地进行逐元素相乘操作,通过这种递归方式特征越在后面的特征高阶信息保存越多,这样在高阶中特征交互就会足够多。HorNet: 高效的空间交互模块 - 创想鸟

4.代码复现

本项目基于Paddleclas对HorNet进行复现,对Paddleclas感兴趣的可以去GITHUB了解一下。

代码位置: Hornet.py和PaddleClas/ppcls/arch/backbone/modelzoo/hornet.py

核心代码展示(gnConv部分)

 class gnconv(nn.Layer):    def __init__(self, dim, order=5, gflayer=None, h=14, w=8, s=1.0):        super().__init__()        self.order = order        self.dims = [dim // 2 ** i for i in range(order)]        self.dims.reverse()        self.proj_in = nn.Conv2D(dim, 2*dim, 1)        if gflayer is None: #这里就是定义上图中的深度可分离卷积            self.dwconv = get_dwconv(sum(self.dims), 7, True)         else:            self.dwconv = gflayer(sum(self.dims), h=h, w=w)                self.proj_out = nn.Conv2D(dim, dim, 1) #这里就是第一个映射层        self.pws = nn.LayerList(            [nn.Conv2D(self.dims[i], self.dims[i+1], 1) for i in range(order-1)]        )        self.scale = s        #print('[gnconv]', order, 'order with dims=', self.dims, 'scale=%.4f'%self.scale)    def forward(self, x, mask=None, dummy=False):        B, C, H, W = x.shape        fused_x = self.proj_in(x)        pwa, abc = paddle.split(fused_x, (self.dims[0], sum(self.dims)), axis=1) #第一个分离部分        dw_abc = self.dwconv(abc) * self.scale        dw_list = paddle.split(dw_abc, self.dims, axis=1) #将特征分成对应的几个部分,也就是第二个split        x = pwa * dw_list[0]        for i in range(self.order -1):            x = self.pws[i](x) * dw_list[i+1]  #这里就是逐元素相乘操作        x = self.proj_out(x)        return x

其余部分和ConNeXt类似,这里就不进行详细的展示

5. ImageNet实验结果

下面我们对模型在ImageNet验证集上效果进行展示。

In [ ]

#解压数据集!mkdir data/ILSVRC2012!tar -xf ~/data/data105740/ILSVRC2012_val.tar -C ~/data/ILSVRC2012

In [ ]

#导入必要的库import osimport cv2import numpy as npimport warningsimport paddleimport paddle.vision.transforms as Tfrom PIL import Imagewarnings.filterwarnings('ignore')# 构建数据集class ILSVRC2012(paddle.io.Dataset):    def __init__(self, root, label_list, transform, backend='pil'):        self.transform = transform        self.root = root        self.label_list = label_list        self.backend = backend        self.load_datas()    def load_datas(self):        self.imgs = []        self.labels = []        with open(self.label_list, 'r') as f:            for line in f:                img, label = line[:-1].split(' ')                self.imgs.append(os.path.join(self.root, img))                self.labels.append(int(label))    def __getitem__(self, idx):        label = self.labels[idx]        image = self.imgs[idx]        if self.backend=='cv2':            image = cv2.imread(image)        else:            image = Image.open(image).convert('RGB')        image = self.transform(image)        return image.astype('float32'), np.array(label).astype('int64')    def __len__(self):        return len(self.imgs)val_transforms = T.Compose([    T.Resize(int(224 / 0.96), interpolation='bicubic'),    T.CenterCrop(224),    T.ToTensor(),    T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])val_transform_384 = T.Compose([    T.Resize(int(384 / 0.96), interpolation='bicubic'),    T.CenterCrop(384),    T.ToTensor(),    T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])

In [ ]

%cd /home/aistudio/
/home/aistudio

In [ ]

#创建模型,这里我们复现三个不同体量模型from Hornet import hornet_tiny_7x7,hornet_small_7x7,hornet_base_gfmodel = hornet_tiny_7x7(drop_path_rate = 0.,layer_scale_init_value = 1e-6)model_small = hornet_small_7x7(drop_path_rate = 0.,layer_scale_init_value = 1e-6)model_base_gf = hornet_base_gf(drop_path_rate = 0.,layer_scale_init_value = 1e-6)
W0801 16:01:38.262773   286 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1W0801 16:01:38.267696   286 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.

In [ ]

#导入权重model.load_dict(paddle.load('/home/aistudio/hornet_tiny_7x7.pdparams'))model = paddle.Model(model)model_small.load_dict(paddle.load('/home/aistudio/hornet_small_7x7.pdparams'))model_small = paddle.Model(model_small)model_base_gf.load_dict(paddle.load("/home/aistudio/hornet_base_gf.pdparams"))model_base_gf = paddle.Model(model_base_gf)

In [ ]

#模型结构model.summary((1, 3, 224, 224))
--------------------------------------------------------------------------- Layer (type)       Input Shape          Output Shape         Param #    ===========================================================================   Conv2D-1      [[1, 3, 224, 224]]    [1, 64, 56, 56]         3,136       LayerNorm-1    [[1, 64, 56, 56]]     [1, 64, 56, 56]          128        LayerNorm-5    [[1, 64, 56, 56]]     [1, 64, 56, 56]          128         Conv2D-5      [[1, 64, 56, 56]]     [1, 128, 56, 56]        8,320        Conv2D-6      [[1, 96, 56, 56]]     [1, 96, 56, 56]         4,800        Conv2D-8      [[1, 32, 56, 56]]     [1, 64, 56, 56]         2,112        Conv2D-7      [[1, 64, 56, 56]]     [1, 64, 56, 56]         4,160        gnconv-1      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0         Identity-1     [[1, 64, 56, 56]]     [1, 64, 56, 56]           0         LayerNorm-6    [[1, 56, 56, 64]]     [1, 56, 56, 64]          128         Linear-1      [[1, 56, 56, 64]]     [1, 56, 56, 256]       16,640         GELU-1       [[1, 56, 56, 256]]    [1, 56, 56, 256]          0          Linear-2      [[1, 56, 56, 256]]    [1, 56, 56, 64]        16,448         Block-1      [[1, 64, 56, 56]]     [1, 64, 56, 56]          128        LayerNorm-7    [[1, 64, 56, 56]]     [1, 64, 56, 56]          128         Conv2D-9      [[1, 64, 56, 56]]     [1, 128, 56, 56]        8,320        Conv2D-10     [[1, 96, 56, 56]]     [1, 96, 56, 56]         4,800        Conv2D-12     [[1, 32, 56, 56]]     [1, 64, 56, 56]         2,112        Conv2D-11     [[1, 64, 56, 56]]     [1, 64, 56, 56]         4,160        gnconv-2      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0         Identity-2     [[1, 64, 56, 56]]     [1, 64, 56, 56]           0         LayerNorm-8    [[1, 56, 56, 64]]     [1, 56, 56, 64]          128         Linear-3      [[1, 56, 56, 64]]     [1, 56, 56, 256]       16,640         GELU-2       [[1, 56, 56, 256]]    [1, 56, 56, 256]          0          Linear-4      [[1, 56, 56, 256]]    [1, 56, 56, 64]        16,448         Block-2      [[1, 64, 56, 56]]     [1, 64, 56, 56]          128        LayerNorm-2    [[1, 64, 56, 56]]     [1, 64, 56, 56]          128         Conv2D-2      [[1, 64, 56, 56]]     [1, 128, 28, 28]       32,896       LayerNorm-9    [[1, 128, 28, 28]]    [1, 128, 28, 28]         256         Conv2D-13     [[1, 128, 28, 28]]    [1, 256, 28, 28]       33,024        Conv2D-14     [[1, 224, 28, 28]]    [1, 224, 28, 28]       11,200        Conv2D-16     [[1, 32, 28, 28]]     [1, 64, 28, 28]         2,112        Conv2D-17     [[1, 64, 28, 28]]     [1, 128, 28, 28]        8,320        Conv2D-15     [[1, 128, 28, 28]]    [1, 128, 28, 28]       16,512        gnconv-3      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0         Identity-3     [[1, 128, 28, 28]]    [1, 128, 28, 28]          0        LayerNorm-10    [[1, 28, 28, 128]]    [1, 28, 28, 128]         256         Linear-5      [[1, 28, 28, 128]]    [1, 28, 28, 512]       66,048         GELU-3       [[1, 28, 28, 512]]    [1, 28, 28, 512]          0          Linear-6      [[1, 28, 28, 512]]    [1, 28, 28, 128]       65,664         Block-3      [[1, 128, 28, 28]]    [1, 128, 28, 28]         256       LayerNorm-11    [[1, 128, 28, 28]]    [1, 128, 28, 28]         256         Conv2D-18     [[1, 128, 28, 28]]    [1, 256, 28, 28]       33,024        Conv2D-19     [[1, 224, 28, 28]]    [1, 224, 28, 28]       11,200        Conv2D-21     [[1, 32, 28, 28]]     [1, 64, 28, 28]         2,112        Conv2D-22     [[1, 64, 28, 28]]     [1, 128, 28, 28]        8,320        Conv2D-20     [[1, 128, 28, 28]]    [1, 128, 28, 28]       16,512        gnconv-4      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0         Identity-4     [[1, 128, 28, 28]]    [1, 128, 28, 28]          0        LayerNorm-12    [[1, 28, 28, 128]]    [1, 28, 28, 128]         256         Linear-7      [[1, 28, 28, 128]]    [1, 28, 28, 512]       66,048         GELU-4       [[1, 28, 28, 512]]    [1, 28, 28, 512]          0          Linear-8      [[1, 28, 28, 512]]    [1, 28, 28, 128]       65,664         Block-4      [[1, 128, 28, 28]]    [1, 128, 28, 28]         256       LayerNorm-13    [[1, 128, 28, 28]]    [1, 128, 28, 28]         256         Conv2D-23     [[1, 128, 28, 28]]    [1, 256, 28, 28]       33,024        Conv2D-24     [[1, 224, 28, 28]]    [1, 224, 28, 28]       11,200        Conv2D-26     [[1, 32, 28, 28]]     [1, 64, 28, 28]         2,112        Conv2D-27     [[1, 64, 28, 28]]     [1, 128, 28, 28]        8,320        Conv2D-25     [[1, 128, 28, 28]]    [1, 128, 28, 28]       16,512        gnconv-5      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0         Identity-5     [[1, 128, 28, 28]]    [1, 128, 28, 28]          0        LayerNorm-14    [[1, 28, 28, 128]]    [1, 28, 28, 128]         256         Linear-9      [[1, 28, 28, 128]]    [1, 28, 28, 512]       66,048         GELU-5       [[1, 28, 28, 512]]    [1, 28, 28, 512]          0          Linear-10     [[1, 28, 28, 512]]    [1, 28, 28, 128]       65,664         Block-5      [[1, 128, 28, 28]]    [1, 128, 28, 28]         256        LayerNorm-3    [[1, 128, 28, 28]]    [1, 128, 28, 28]         256         Conv2D-3      [[1, 128, 28, 28]]    [1, 256, 14, 14]       131,328     LayerNorm-15    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-28     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-29     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-31     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-32     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-33     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-30     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-6      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-6     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-16    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-11     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-6      [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-12    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400        Block-6      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-17    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-34     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-35     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-37     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-38     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-39     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-36     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-7      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-7     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-18    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-13     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-7      [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-14    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400        Block-7      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-19    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-40     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-41     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-43     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-44     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-45     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-42     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-8      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-8     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-20    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-15     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-8      [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-16    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400        Block-8      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-21    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-46     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-47     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-49     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-50     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-51     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-48     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-9      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-9     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-22    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-17     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-9      [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-18    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400        Block-9      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-23    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-52     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-53     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-55     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-56     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-57     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-54     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-10     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-10    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-24    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-19     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-10     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-20    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-10      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-25    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-58     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-59     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-61     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-62     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-63     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-60     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-11     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-11    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-26    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-21     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-11     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-22    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-11      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-27    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-64     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-65     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-67     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-68     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-69     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-66     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-12     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-12    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-28    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-23     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-12     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-24    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-12      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-29    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-70     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-71     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-73     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-74     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-75     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-72     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-13     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-13    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-30    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-25     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-13     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-26    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-13      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-31    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-76     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-77     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-79     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-80     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-81     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-78     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-14     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-14    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-32    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-27     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-14     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-28    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-14      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-33    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-82     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-83     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-85     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-86     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-87     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-84     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-15     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-15    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-34    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-29     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-15     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-30    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-15      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-35    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-88     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-89     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-91     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-92     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-93     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-90     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-16     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-16    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-36    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-31     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-16     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-32    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-16      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-37    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-94     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584       Conv2D-95     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000        Conv2D-97     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112        Conv2D-98     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320        Conv2D-99     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024        Conv2D-96     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-17     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-17    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-38    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-33     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-17     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-34    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-17      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-39    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-100     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-101     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-103     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-104     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-105     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-102     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-18     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-18    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-40    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-35     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-18     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-36    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-18      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-41    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-106     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-107     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-109     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-110     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-111     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-108     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-19     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-19    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-42    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-37     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-19     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-38    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-19      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-43    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-112     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-113     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-115     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-116     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-117     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-114     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-20     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-20    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-44    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-39     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-20     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-40    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-20      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-45    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-118     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-119     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-121     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-122     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-123     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-120     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-21     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-21    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-46    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-41     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-21     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-42    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-21      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-47    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-124     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-125     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-127     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-128     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-129     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-126     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-22     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-22    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-48    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-43     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-22     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-44    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-22      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512       LayerNorm-49    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        Conv2D-130     [[1, 256, 14, 14]]    [1, 512, 14, 14]       131,584      Conv2D-131     [[1, 480, 14, 14]]    [1, 480, 14, 14]       24,000       Conv2D-133     [[1, 32, 14, 14]]     [1, 64, 14, 14]         2,112       Conv2D-134     [[1, 64, 14, 14]]     [1, 128, 14, 14]        8,320       Conv2D-135     [[1, 128, 14, 14]]    [1, 256, 14, 14]       33,024       Conv2D-132     [[1, 256, 14, 14]]    [1, 256, 14, 14]       65,792        gnconv-23     [[1, 256, 14, 14]]    [1, 256, 14, 14]          0         Identity-23    [[1, 256, 14, 14]]    [1, 256, 14, 14]          0        LayerNorm-50    [[1, 14, 14, 256]]    [1, 14, 14, 256]         512         Linear-45     [[1, 14, 14, 256]]   [1, 14, 14, 1024]       263,168        GELU-23     [[1, 14, 14, 1024]]   [1, 14, 14, 1024]          0          Linear-46    [[1, 14, 14, 1024]]    [1, 14, 14, 256]       262,400       Block-23      [[1, 256, 14, 14]]    [1, 256, 14, 14]         512        LayerNorm-4    [[1, 256, 14, 14]]    [1, 256, 14, 14]         512         Conv2D-4      [[1, 256, 14, 14]]     [1, 512, 7, 7]        524,800     LayerNorm-51     [[1, 512, 7, 7]]      [1, 512, 7, 7]         1,024       Conv2D-136      [[1, 512, 7, 7]]     [1, 1024, 7, 7]        525,312      Conv2D-137      [[1, 992, 7, 7]]      [1, 992, 7, 7]        49,600       Conv2D-139      [[1, 32, 7, 7]]       [1, 64, 7, 7]          2,112       Conv2D-140      [[1, 64, 7, 7]]       [1, 128, 7, 7]         8,320       Conv2D-141      [[1, 128, 7, 7]]      [1, 256, 7, 7]        33,024       Conv2D-142      [[1, 256, 7, 7]]      [1, 512, 7, 7]        131,584      Conv2D-138      [[1, 512, 7, 7]]      [1, 512, 7, 7]        262,656       gnconv-24      [[1, 512, 7, 7]]      [1, 512, 7, 7]           0         Identity-24     [[1, 512, 7, 7]]      [1, 512, 7, 7]           0        LayerNorm-52     [[1, 7, 7, 512]]      [1, 7, 7, 512]         1,024        Linear-47      [[1, 7, 7, 512]]     [1, 7, 7, 2048]       1,050,624       GELU-24      [[1, 7, 7, 2048]]     [1, 7, 7, 2048]           0          Linear-48     [[1, 7, 7, 2048]]      [1, 7, 7, 512]       1,049,088      Block-24       [[1, 512, 7, 7]]      [1, 512, 7, 7]         1,024      LayerNorm-53     [[1, 512, 7, 7]]      [1, 512, 7, 7]         1,024       Conv2D-143      [[1, 512, 7, 7]]     [1, 1024, 7, 7]        525,312      Conv2D-144      [[1, 992, 7, 7]]      [1, 992, 7, 7]        49,600       Conv2D-146      [[1, 32, 7, 7]]       [1, 64, 7, 7]          2,112       Conv2D-147      [[1, 64, 7, 7]]       [1, 128, 7, 7]         8,320       Conv2D-148      [[1, 128, 7, 7]]      [1, 256, 7, 7]        33,024       Conv2D-149      [[1, 256, 7, 7]]      [1, 512, 7, 7]        131,584      Conv2D-145      [[1, 512, 7, 7]]      [1, 512, 7, 7]        262,656       gnconv-25      [[1, 512, 7, 7]]      [1, 512, 7, 7]           0         Identity-25     [[1, 512, 7, 7]]      [1, 512, 7, 7]           0        LayerNorm-54     [[1, 7, 7, 512]]      [1, 7, 7, 512]         1,024        Linear-49      [[1, 7, 7, 512]]     [1, 7, 7, 2048]       1,050,624       GELU-25      [[1, 7, 7, 2048]]     [1, 7, 7, 2048]           0          Linear-50     [[1, 7, 7, 2048]]      [1, 7, 7, 512]       1,049,088      Block-25       [[1, 512, 7, 7]]      [1, 512, 7, 7]         1,024      LayerNorm-55        [[1, 512]]            [1, 512]            1,024        Linear-51         [[1, 512]]           [1, 1000]           513,000    ===========================================================================Total params: 22,409,512Trainable params: 22,409,512Non-trainable params: 0---------------------------------------------------------------------------Input size (MB): 0.57Forward/backward pass size (MB): 263.41Params size (MB): 85.49Estimated Total Size (MB): 349.47---------------------------------------------------------------------------
{'total_params': 22409512, 'trainable_params': 22409512}

In [ ]

#tiny模型结果model.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))val_dataset = ILSVRC2012('/home/aistudio/data/ILSVRC2012/ILSVRC2012_val', transform=val_transforms, label_list='/home/aistudio/data/ILSVRC2012/ILSVRC2012_val/val_list.txt', backend='pil')acc = model.evaluate(val_dataset, batch_size=32, num_workers=4, verbose=1)print(acc)
Eval begin...step 1563/1563 [==============================] - acc_top1: 0.8270 - acc_top5: 0.9637 - 98ms/step         Eval samples: 50000{'acc_top1': 0.82698, 'acc_top5': 0.96374}

In [ ]

#small模型结果model_small.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))val_dataset = ILSVRC2012('/home/aistudio/data/ILSVRC2012/ILSVRC2012_val', transform=val_transforms, label_list='/home/aistudio/data/ILSVRC2012/ILSVRC2012_val/val_list.txt', backend='pil')acc = model_small.evaluate(val_dataset, batch_size=32, num_workers=4, verbose=1)print(acc)
Eval begin...step 1563/1563 [==============================] - acc_top1: 0.8390 - acc_top5: 0.9681 - 111ms/step         Eval samples: 50000{'acc_top1': 0.83898, 'acc_top5': 0.96814}

In [ ]

#base模型结果model_base_gf.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))val_dataset = ILSVRC2012('/home/aistudio/data/ILSVRC2012/ILSVRC2012_val', transform=val_transforms, label_list='/home/aistudio/data/ILSVRC2012/ILSVRC2012_val/val_list.txt', backend='pil')acc = model_base_gf.evaluate(val_dataset, batch_size=32, num_workers=4, verbose=1)print(acc)
Eval begin...step 1563/1563 [==============================] - acc_top1: 0.8448 - acc_top5: 0.9701 - 183ms/step         Eval samples: 50000{'acc_top1': 0.84476, 'acc_top5': 0.97008}

6、Flowers102数据集训练对比

为了公平比较CNN、Transformer与HorNet,本文借助Paddleclas在Flowers102数据集上对ResNet50vd、Swin、HorNet进行对比

In [ ]

#解压数据集!mkdir data/flowers!tar -xf ~/data/data19852/flowers102.tar -C ~/data/flowers
[]

In [ ]

%cd PaddleClas/
/home/aistudio/PaddleClas

In [ ]

#安装必要库!pip install -r requirements.txt

首先进行HorNet的训练和验证

In [ ]

!python -m paddle.distributed.launch --gpus 0 tools/train.py -c ppcls/configs/hornet_tiny_7x7.yaml                                                              -o Global.pretrained_model=/home/aistudio/hornet_tiny_7x7

In [ ]

!python tools/eval.py -c ppcls/configs/hornet_tiny_7x7.yaml -o Global.pretrained_model=output/hornet_tiny_7x7/best_model
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import MutableMapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Iterable, Mapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sized[2022/08/01 17:19:29] ppcls INFO: =============================================================        PaddleClas is powered by PaddlePaddle !        ===============================================================                                                       ====   For more info please go to the following website.   ====                                                       ====       https://github.com/PaddlePaddle/PaddleClas      =============================================================[2022/08/01 17:19:29] ppcls INFO: Arch : [2022/08/01 17:19:29] ppcls INFO:     class_num : 102[2022/08/01 17:19:29] ppcls INFO:     drop_path_rate : 0.2[2022/08/01 17:19:29] ppcls INFO:     head_init_scale : 1.0[2022/08/01 17:19:29] ppcls INFO:     layer_scale_init_value : 1e-06[2022/08/01 17:19:29] ppcls INFO:     name : hornet_tiny_7x7[2022/08/01 17:19:29] ppcls INFO: DataLoader : [2022/08/01 17:19:29] ppcls INFO:     Eval : [2022/08/01 17:19:29] ppcls INFO:         dataset : [2022/08/01 17:19:29] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/valid.txt[2022/08/01 17:19:29] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:19:29] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:19:29] ppcls INFO:             transform_ops : [2022/08/01 17:19:29] ppcls INFO:                 DecodeImage : [2022/08/01 17:19:29] ppcls INFO:                     channel_first : False[2022/08/01 17:19:29] ppcls INFO:                     to_rgb : True[2022/08/01 17:19:29] ppcls INFO:                 ResizeImage : [2022/08/01 17:19:29] ppcls INFO:                     backend : pil[2022/08/01 17:19:29] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:19:29] ppcls INFO:                     resize_short : 256[2022/08/01 17:19:29] ppcls INFO:                 CropImage : [2022/08/01 17:19:29] ppcls INFO:                     size : 224[2022/08/01 17:19:29] ppcls INFO:                 NormalizeImage : [2022/08/01 17:19:29] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:19:29] ppcls INFO:                     order : [2022/08/01 17:19:29] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:19:29] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:19:29] ppcls INFO:         loader : [2022/08/01 17:19:29] ppcls INFO:             num_workers : 4[2022/08/01 17:19:29] ppcls INFO:             use_shared_memory : True[2022/08/01 17:19:29] ppcls INFO:         sampler : [2022/08/01 17:19:29] ppcls INFO:             batch_size : 128[2022/08/01 17:19:29] ppcls INFO:             drop_last : False[2022/08/01 17:19:29] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:19:29] ppcls INFO:             shuffle : False[2022/08/01 17:19:29] ppcls INFO:     Train : [2022/08/01 17:19:29] ppcls INFO:         dataset : [2022/08/01 17:19:29] ppcls INFO:             batch_transform_ops : [2022/08/01 17:19:29] ppcls INFO:                 OpSampler : [2022/08/01 17:19:29] ppcls INFO:                     CutmixOperator : [2022/08/01 17:19:29] ppcls INFO:                         alpha : 1.0[2022/08/01 17:19:29] ppcls INFO:                         prob : 0.5[2022/08/01 17:19:29] ppcls INFO:                     MixupOperator : [2022/08/01 17:19:29] ppcls INFO:                         alpha : 0.8[2022/08/01 17:19:29] ppcls INFO:                         prob : 0.5[2022/08/01 17:19:29] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/train.txt[2022/08/01 17:19:29] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:19:29] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:19:29] ppcls INFO:             transform_ops : [2022/08/01 17:19:29] ppcls INFO:                 DecodeImage : [2022/08/01 17:19:29] ppcls INFO:                     channel_first : False[2022/08/01 17:19:29] ppcls INFO:                     to_rgb : True[2022/08/01 17:19:29] ppcls INFO:                 RandCropImage : [2022/08/01 17:19:29] ppcls INFO:                     backend : pil[2022/08/01 17:19:29] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:19:29] ppcls INFO:                     size : 224[2022/08/01 17:19:29] ppcls INFO:                 RandFlipImage : [2022/08/01 17:19:29] ppcls INFO:                     flip_code : 1[2022/08/01 17:19:29] ppcls INFO:                 TimmAutoAugment : [2022/08/01 17:19:29] ppcls INFO:                     config_str : rand-m9-mstd0.5-inc1[2022/08/01 17:19:29] ppcls INFO:                     img_size : 224[2022/08/01 17:19:29] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:19:29] ppcls INFO:                 NormalizeImage : [2022/08/01 17:19:29] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:19:29] ppcls INFO:                     order : [2022/08/01 17:19:29] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:19:29] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:19:29] ppcls INFO:                 RandomErasing : [2022/08/01 17:19:29] ppcls INFO:                     EPSILON : 0.25[2022/08/01 17:19:29] ppcls INFO: ------------------------------------------------------------[2022/08/01 17:19:29] ppcls INFO:                     attempt : 10[2022/08/01 17:19:29] ppcls INFO:                     mode : pixel[2022/08/01 17:19:29] ppcls INFO:                     r1 : 0.3[2022/08/01 17:19:29] ppcls INFO:                     sh : 1.0/3.0[2022/08/01 17:19:29] ppcls INFO:                     sl : 0.02[2022/08/01 17:19:29] ppcls INFO:                     use_log_aspect : True[2022/08/01 17:19:29] ppcls INFO:         loader : [2022/08/01 17:19:29] ppcls INFO:             num_workers : 4[2022/08/01 17:19:29] ppcls INFO:             use_shared_memory : True[2022/08/01 17:19:29] ppcls INFO:         sampler : [2022/08/01 17:19:29] ppcls INFO:             batch_size : 32[2022/08/01 17:19:29] ppcls INFO:             drop_last : False[2022/08/01 17:19:29] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:19:29] ppcls INFO:             shuffle : True[2022/08/01 17:19:29] ppcls INFO: EMA : [2022/08/01 17:19:29] ppcls INFO:     decay : 0.9999[2022/08/01 17:19:29] ppcls INFO: ------------------------------------------------------------[2022/08/01 17:19:29] ppcls INFO: Global : [2022/08/01 17:19:29] ppcls INFO:     checkpoints : None[2022/08/01 17:19:29] ppcls INFO:     device : gpu[2022/08/01 17:19:29] ppcls INFO:     epochs : 50[2022/08/01 17:19:29] ppcls INFO:     eval_during_train : True[2022/08/01 17:19:29] ppcls INFO:     eval_interval : 1[2022/08/01 17:19:29] ppcls INFO:     image_shape : [3, 224, 224][2022/08/01 17:19:29] ppcls INFO:     output_dir : ./output/[2022/08/01 17:19:29] ppcls INFO:     pretrained_model : output/hornet_tiny_7x7/best_model[2022/08/01 17:19:29] ppcls INFO:     print_batch_step : 10[2022/08/01 17:19:29] ppcls INFO:     save_inference_dir : ./inference[2022/08/01 17:19:29] ppcls INFO:     save_interval : 1[2022/08/01 17:19:29] ppcls INFO:     update_freq : 4[2022/08/01 17:19:29] ppcls INFO:     use_visualdl : False[2022/08/01 17:19:29] ppcls INFO: Infer : [2022/08/01 17:19:29] ppcls INFO:     PostProcess : [2022/08/01 17:19:29] ppcls INFO:         class_id_map_file : ./dataset/flowers102/flowers102_label_list.txt[2022/08/01 17:19:29] ppcls INFO:         name : Topk[2022/08/01 17:19:29] ppcls INFO:         topk : 5[2022/08/01 17:19:29] ppcls INFO:     batch_size : 10[2022/08/01 17:19:29] ppcls INFO:     infer_imgs : docs/images/inference_deployment/whl_demo.jpg[2022/08/01 17:19:29] ppcls INFO:     transforms : [2022/08/01 17:19:29] ppcls INFO:         DecodeImage : [2022/08/01 17:19:29] ppcls INFO:             channel_first : False[2022/08/01 17:19:29] ppcls INFO:             to_rgb : True[2022/08/01 17:19:29] ppcls INFO:         ResizeImage : [2022/08/01 17:19:29] ppcls INFO:             resize_short : 256[2022/08/01 17:19:29] ppcls INFO:         CropImage : [2022/08/01 17:19:29] ppcls INFO:             size : 224[2022/08/01 17:19:29] ppcls INFO:         NormalizeImage : [2022/08/01 17:19:29] ppcls INFO:             mean : [0.485, 0.456, 0.406][2022/08/01 17:19:29] ppcls INFO:             order : [2022/08/01 17:19:29] ppcls INFO:             scale : 1.0/255.0[2022/08/01 17:19:29] ppcls INFO:             std : [0.229, 0.224, 0.225][2022/08/01 17:19:29] ppcls INFO:         ToCHWImage : None[2022/08/01 17:19:29] ppcls INFO: Loss : [2022/08/01 17:19:29] ppcls INFO:     Eval : [2022/08/01 17:19:29] ppcls INFO:         CELoss : [2022/08/01 17:19:29] ppcls INFO:             weight : 1.0[2022/08/01 17:19:29] ppcls INFO:     Train : [2022/08/01 17:19:29] ppcls INFO:         CELoss : [2022/08/01 17:19:29] ppcls INFO:             weight : 1.0[2022/08/01 17:19:29] ppcls INFO: Metric : [2022/08/01 17:19:29] ppcls INFO:     Eval : [2022/08/01 17:19:29] ppcls INFO:         TopkAcc : [2022/08/01 17:19:29] ppcls INFO:             topk : [1, 5][2022/08/01 17:19:29] ppcls INFO:     Train : [2022/08/01 17:19:29] ppcls INFO:         TopkAcc : [2022/08/01 17:19:29] ppcls INFO:             topk : [1, 5][2022/08/01 17:19:29] ppcls INFO: Optimizer : [2022/08/01 17:19:29] ppcls INFO:     beta1 : 0.9[2022/08/01 17:19:29] ppcls INFO:     beta2 : 0.999[2022/08/01 17:19:29] ppcls INFO:     epsilon : 1e-08[2022/08/01 17:19:29] ppcls INFO:     lr : [2022/08/01 17:19:29] ppcls INFO:         eta_min : 1e-06[2022/08/01 17:19:29] ppcls INFO:         learning_rate : 0.0005[2022/08/01 17:19:29] ppcls INFO:         name : Cosine[2022/08/01 17:19:29] ppcls INFO:         warmup_epoch : 5[2022/08/01 17:19:29] ppcls INFO:         warmup_start_lr : 0[2022/08/01 17:19:29] ppcls INFO:     name : AdamW[2022/08/01 17:19:29] ppcls INFO:     one_dim_param_no_weight_decay : True[2022/08/01 17:19:29] ppcls INFO:     weight_decay : 0.05[2022/08/01 17:19:29] ppcls INFO: train with paddle 2.3.1 and device Place(gpu:0)W0801 17:19:29.716073 14503 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1W0801 17:19:29.721376 14503 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.+++++++[2022/08/01 17:19:36] ppcls INFO: [Eval][Epoch 0][Iter: 0/8]CELoss: 3.77862, loss: 3.77862, top1: 0.95312, top5: 0.99219, batch_cost: 5.59765s, reader_cost: 3.28722, ips: 22.86673 images/sec[2022/08/01 17:19:38] ppcls INFO: [Eval][Epoch 0][Avg]CELoss: 3.75967, loss: 3.75967, top1: 0.96961, top5: 0.99314

接着是ResNet50vd的训练和验证

In [ ]

!python -m paddle.distributed.launch --gpus 0 tools/train.py -c ppcls/configs/resnet50.yaml                                                              -o Global.pretrained_model=https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/ResNet50_vd_pretrained.pdparams

In [ ]

!python tools/eval.py -c ppcls/configs/resnet50.yaml -o Global.pretrained_model=output/ResNet50_vd/best_model
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import MutableMapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Iterable, Mapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sized[2022/08/01 17:29:21] ppcls INFO: =============================================================        PaddleClas is powered by PaddlePaddle !        ===============================================================                                                       ====   For more info please go to the following website.   ====                                                       ====       https://github.com/PaddlePaddle/PaddleClas      =============================================================[2022/08/01 17:29:21] ppcls INFO: Arch : [2022/08/01 17:29:21] ppcls INFO:     class_num : 102[2022/08/01 17:29:21] ppcls INFO:     name : ResNet50_vd[2022/08/01 17:29:21] ppcls INFO: DataLoader : [2022/08/01 17:29:21] ppcls INFO:     Eval : [2022/08/01 17:29:21] ppcls INFO:         dataset : [2022/08/01 17:29:21] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/valid.txt[2022/08/01 17:29:21] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:29:21] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:29:21] ppcls INFO:             transform_ops : [2022/08/01 17:29:21] ppcls INFO:                 DecodeImage : [2022/08/01 17:29:21] ppcls INFO:                     channel_first : False[2022/08/01 17:29:21] ppcls INFO:                     to_rgb : True[2022/08/01 17:29:21] ppcls INFO:                 ResizeImage : [2022/08/01 17:29:21] ppcls INFO:                     resize_short : 256[2022/08/01 17:29:21] ppcls INFO:                 CropImage : [2022/08/01 17:29:21] ppcls INFO:                     size : 224[2022/08/01 17:29:21] ppcls INFO:                 NormalizeImage : [2022/08/01 17:29:21] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:29:21] ppcls INFO:                     order : [2022/08/01 17:29:21] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:29:21] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:29:21] ppcls INFO:         loader : [2022/08/01 17:29:21] ppcls INFO:             num_workers : 4[2022/08/01 17:29:21] ppcls INFO:             use_shared_memory : True[2022/08/01 17:29:21] ppcls INFO:         sampler : [2022/08/01 17:29:21] ppcls INFO:             batch_size : 128[2022/08/01 17:29:21] ppcls INFO:             drop_last : False[2022/08/01 17:29:21] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:29:21] ppcls INFO:             shuffle : False[2022/08/01 17:29:21] ppcls INFO:     Train : [2022/08/01 17:29:21] ppcls INFO:         dataset : [2022/08/01 17:29:21] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/train.txt[2022/08/01 17:29:21] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:29:21] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:29:21] ppcls INFO:             transform_ops : [2022/08/01 17:29:21] ppcls INFO:                 DecodeImage : [2022/08/01 17:29:21] ppcls INFO:                     channel_first : False[2022/08/01 17:29:21] ppcls INFO:                     to_rgb : True[2022/08/01 17:29:21] ppcls INFO:                 RandCropImage : [2022/08/01 17:29:21] ppcls INFO:                     size : 224[2022/08/01 17:29:21] ppcls INFO:                 RandFlipImage : [2022/08/01 17:29:21] ppcls INFO:                     flip_code : 1[2022/08/01 17:29:21] ppcls INFO:                 NormalizeImage : [2022/08/01 17:29:21] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:29:21] ppcls INFO:                     order : [2022/08/01 17:29:21] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:29:21] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:29:21] ppcls INFO:         loader : [2022/08/01 17:29:21] ppcls INFO:             num_workers : 4[2022/08/01 17:29:21] ppcls INFO:             use_shared_memory : True[2022/08/01 17:29:21] ppcls INFO:         sampler : [2022/08/01 17:29:21] ppcls INFO:             batch_size : 32[2022/08/01 17:29:21] ppcls INFO:             drop_last : False[2022/08/01 17:29:21] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:29:21] ppcls INFO:             shuffle : True[2022/08/01 17:29:21] ppcls INFO: Global : [2022/08/01 17:29:21] ppcls INFO:     checkpoints : None[2022/08/01 17:29:21] ppcls INFO:     device : gpu[2022/08/01 17:29:21] ppcls INFO:     epochs : 50[2022/08/01 17:29:21] ppcls INFO:     eval_during_train : True[2022/08/01 17:29:21] ppcls INFO:     eval_interval : 1[2022/08/01 17:29:21] ppcls INFO:     image_shape : [3, 224, 224][2022/08/01 17:29:21] ppcls INFO:     output_dir : ./output/[2022/08/01 17:29:21] ppcls INFO:     pretrained_model : output/ResNet50_vd/best_model[2022/08/01 17:29:21] ppcls INFO:     print_batch_step : 10[2022/08/01 17:29:21] ppcls INFO:     save_inference_dir : ./inference[2022/08/01 17:29:21] ppcls INFO:     save_interval : 1[2022/08/01 17:29:21] ppcls INFO:     use_visualdl : False[2022/08/01 17:29:21] ppcls INFO: Infer : [2022/08/01 17:29:21] ppcls INFO:     PostProcess : [2022/08/01 17:29:21] ppcls INFO:         class_id_map_file : ./dataset/flowers102/flowers102_label_list.txt[2022/08/01 17:29:21] ppcls INFO:         name : Topk[2022/08/01 17:29:21] ppcls INFO:         topk : 5[2022/08/01 17:29:21] ppcls INFO:     batch_size : 10[2022/08/01 17:29:21] ppcls INFO:     infer_imgs : docs/images/inference_deployment/whl_demo.jpg[2022/08/01 17:29:21] ppcls INFO:     transforms : [2022/08/01 17:29:21] ppcls INFO:         DecodeImage : [2022/08/01 17:29:21] ppcls INFO:             channel_first : False[2022/08/01 17:29:21] ppcls INFO:             to_rgb : True[2022/08/01 17:29:21] ppcls INFO:         ResizeImage : [2022/08/01 17:29:21] ppcls INFO:             resize_short : 256[2022/08/01 17:29:21] ppcls INFO:         CropImage : [2022/08/01 17:29:21] ppcls INFO:             size : 224[2022/08/01 17:29:21] ppcls INFO:         NormalizeImage : [2022/08/01 17:29:21] ppcls INFO:             mean : [0.485, 0.456, 0.406][2022/08/01 17:29:21] ppcls INFO:             order : [2022/08/01 17:29:21] ppcls INFO:             scale : 1.0/255.0[2022/08/01 17:29:21] ppcls INFO:             std : [0.229, 0.224, 0.225][2022/08/01 17:29:21] ppcls INFO:         ToCHWImage : None[2022/08/01 17:29:21] ppcls INFO: Loss : [2022/08/01 17:29:21] ppcls INFO:     Eval : [2022/08/01 17:29:21] ppcls INFO:         CELoss : [2022/08/01 17:29:21] ppcls INFO:             weight : 1.0[2022/08/01 17:29:21] ppcls INFO:     Train : [2022/08/01 17:29:21] ppcls INFO:         CELoss : [2022/08/01 17:29:21] ppcls INFO:             weight : 1.0[2022/08/01 17:29:21] ppcls INFO: Metric : [2022/08/01 17:29:21] ppcls INFO:     Eval : [2022/08/01 17:29:21] ppcls INFO:         TopkAcc : [2022/08/01 17:29:21] ppcls INFO:             topk : [1, 5][2022/08/01 17:29:21] ppcls INFO:     Train : [2022/08/01 17:29:21] ppcls INFO:         TopkAcc : [2022/08/01 17:29:21] ppcls INFO:             topk : [1, 5][2022/08/01 17:29:21] ppcls INFO: Optimizer : [2022/08/01 17:29:21] ppcls INFO:     lr : [2022/08/01 17:29:21] ppcls INFO:         learning_rate : 0.0125[2022/08/01 17:29:21] ppcls INFO:         name : Cosine[2022/08/01 17:29:21] ppcls INFO:         warmup_epoch : 5[2022/08/01 17:29:21] ppcls INFO:     momentum : 0.9[2022/08/01 17:29:21] ppcls INFO:     name : Momentum[2022/08/01 17:29:21] ppcls INFO:     regularizer : [2022/08/01 17:29:21] ppcls INFO:         coeff : 1e-05[2022/08/01 17:29:21] ppcls INFO:         name : L2[2022/08/01 17:29:21] ppcls INFO: train with paddle 2.3.1 and device Place(gpu:0)W0801 17:29:21.801292 22024 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1W0801 17:29:21.806051 22024 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.+++++++[2022/08/01 17:29:26] ppcls INFO: [Eval][Epoch 0][Iter: 0/8]CELoss: 0.32419, loss: 0.32419, top1: 0.92188, top5: 0.96875, batch_cost: 3.66914s, reader_cost: 1.63267, ips: 34.88556 images/sec[2022/08/01 17:29:27] ppcls INFO: [Eval][Epoch 0][Avg]CELoss: 0.21094, loss: 0.21094, top1: 0.95588, top5: 0.98529

最后是Swin的验证

In [37]

!python -m paddle.distributed.launch --gpus 0 tools/train.py -c ppcls/configs/swin.yaml                                                              -o Global.pretrained_model=https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams

In [38]

!python tools/eval.py -c ppcls/configs/swin.yaml -o Global.pretrained_model=output/SwinTransformer_tiny_patch4_window7_224/best_model
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import MutableMapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Iterable, Mapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sized[2022/08/01 17:51:34] ppcls INFO: =============================================================        PaddleClas is powered by PaddlePaddle !        ===============================================================                                                       ====   For more info please go to the following website.   ====                                                       ====       https://github.com/PaddlePaddle/PaddleClas      =============================================================[2022/08/01 17:51:34] ppcls INFO: Arch : [2022/08/01 17:51:34] ppcls INFO:     class_num : 102[2022/08/01 17:51:34] ppcls INFO:     name : SwinTransformer_tiny_patch4_window7_224[2022/08/01 17:51:34] ppcls INFO: DataLoader : [2022/08/01 17:51:34] ppcls INFO:     Eval : [2022/08/01 17:51:34] ppcls INFO:         dataset : [2022/08/01 17:51:34] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/valid.txt[2022/08/01 17:51:34] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:51:34] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:51:34] ppcls INFO:             transform_ops : [2022/08/01 17:51:34] ppcls INFO:                 DecodeImage : [2022/08/01 17:51:34] ppcls INFO:                     channel_first : False[2022/08/01 17:51:34] ppcls INFO:                     to_rgb : True[2022/08/01 17:51:34] ppcls INFO:                 ResizeImage : [2022/08/01 17:51:34] ppcls INFO:                     backend : pil[2022/08/01 17:51:34] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:51:34] ppcls INFO:                     resize_short : 256[2022/08/01 17:51:34] ppcls INFO:                 CropImage : [2022/08/01 17:51:34] ppcls INFO:                     size : 224[2022/08/01 17:51:34] ppcls INFO:                 NormalizeImage : [2022/08/01 17:51:34] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:51:34] ppcls INFO:                     order : [2022/08/01 17:51:34] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:51:34] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:51:34] ppcls INFO:         loader : [2022/08/01 17:51:34] ppcls INFO:             num_workers : 4[2022/08/01 17:51:34] ppcls INFO:             use_shared_memory : True[2022/08/01 17:51:34] ppcls INFO:         sampler : [2022/08/01 17:51:34] ppcls INFO:             batch_size : 128[2022/08/01 17:51:34] ppcls INFO:             drop_last : False[2022/08/01 17:51:34] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:51:34] ppcls INFO:             shuffle : False[2022/08/01 17:51:34] ppcls INFO:     Train : [2022/08/01 17:51:34] ppcls INFO:         dataset : [2022/08/01 17:51:34] ppcls INFO:             batch_transform_ops : [2022/08/01 17:51:34] ppcls INFO:                 OpSampler : [2022/08/01 17:51:34] ppcls INFO:                     CutmixOperator : [2022/08/01 17:51:34] ppcls INFO:                         alpha : 1.0[2022/08/01 17:51:34] ppcls INFO:                         prob : 0.5[2022/08/01 17:51:34] ppcls INFO:                     MixupOperator : [2022/08/01 17:51:34] ppcls INFO:                         alpha : 0.8[2022/08/01 17:51:34] ppcls INFO:                         prob : 0.5[2022/08/01 17:51:34] ppcls INFO:             cls_label_path : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers/train.txt[2022/08/01 17:51:34] ppcls INFO:             image_root : /home/aistudio/data/flowers/oxford-102-flowers/oxford-102-flowers[2022/08/01 17:51:34] ppcls INFO:             name : ImageNetDataset[2022/08/01 17:51:34] ppcls INFO:             transform_ops : [2022/08/01 17:51:34] ppcls INFO:                 DecodeImage : [2022/08/01 17:51:34] ppcls INFO:                     channel_first : False[2022/08/01 17:51:34] ppcls INFO:                     to_rgb : True[2022/08/01 17:51:34] ppcls INFO:                 RandCropImage : [2022/08/01 17:51:34] ppcls INFO:                     backend : pil[2022/08/01 17:51:34] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:51:34] ppcls INFO:                     size : 224[2022/08/01 17:51:34] ppcls INFO:                 RandFlipImage : [2022/08/01 17:51:34] ppcls INFO:                     flip_code : 1[2022/08/01 17:51:34] ppcls INFO:                 TimmAutoAugment : [2022/08/01 17:51:34] ppcls INFO:                     config_str : rand-m9-mstd0.5-inc1[2022/08/01 17:51:34] ppcls INFO:                     img_size : 224[2022/08/01 17:51:34] ppcls INFO:                     interpolation : bicubic[2022/08/01 17:51:34] ppcls INFO:                 NormalizeImage : [2022/08/01 17:51:34] ppcls INFO:                     mean : [0.485, 0.456, 0.406][2022/08/01 17:51:34] ppcls INFO:                     order : [2022/08/01 17:51:34] ppcls INFO:                     scale : 1.0/255.0[2022/08/01 17:51:34] ppcls INFO:                     std : [0.229, 0.224, 0.225][2022/08/01 17:51:34] ppcls INFO:                 RandomErasing : [2022/08/01 17:51:34] ppcls INFO:                     EPSILON : 0.25[2022/08/01 17:51:34] ppcls INFO: ------------------------------------------------------------[2022/08/01 17:51:34] ppcls INFO:                     attempt : 10[2022/08/01 17:51:34] ppcls INFO:                     mode : pixel[2022/08/01 17:51:34] ppcls INFO:                     r1 : 0.3[2022/08/01 17:51:34] ppcls INFO:                     sh : 1.0/3.0[2022/08/01 17:51:34] ppcls INFO:                     sl : 0.02[2022/08/01 17:51:34] ppcls INFO:                     use_log_aspect : True[2022/08/01 17:51:34] ppcls INFO:         loader : [2022/08/01 17:51:34] ppcls INFO:             num_workers : 4[2022/08/01 17:51:34] ppcls INFO:             use_shared_memory : True[2022/08/01 17:51:34] ppcls INFO:         sampler : [2022/08/01 17:51:34] ppcls INFO:             batch_size : 32[2022/08/01 17:51:34] ppcls INFO:             drop_last : False[2022/08/01 17:51:34] ppcls INFO:             name : DistributedBatchSampler[2022/08/01 17:51:34] ppcls INFO:             shuffle : True[2022/08/01 17:51:34] ppcls INFO: Global : [2022/08/01 17:51:34] ppcls INFO:     checkpoints : None[2022/08/01 17:51:34] ppcls INFO:     device : gpu[2022/08/01 17:51:34] ppcls INFO:     epochs : 50[2022/08/01 17:51:34] ppcls INFO:     eval_during_train : True[2022/08/01 17:51:34] ppcls INFO:     eval_interval : 1[2022/08/01 17:51:34] ppcls INFO:     image_shape : [3, 224, 224][2022/08/01 17:51:34] ppcls INFO:     output_dir : ./output/[2022/08/01 17:51:34] ppcls INFO:     pretrained_model : output/SwinTransformer_tiny_patch4_window7_224/best_model[2022/08/01 17:51:34] ppcls INFO:     print_batch_step : 10[2022/08/01 17:51:34] ppcls INFO:     save_inference_dir : ./inference[2022/08/01 17:51:34] ppcls INFO:     save_interval : 1[2022/08/01 17:51:34] ppcls INFO:     to_static : False[2022/08/01 17:51:34] ppcls INFO:     use_visualdl : False[2022/08/01 17:51:34] ppcls INFO: Infer : [2022/08/01 17:51:34] ppcls INFO:     PostProcess : [2022/08/01 17:51:34] ppcls INFO:         class_id_map_file : ppcls/utils/imagenet1k_label_list.txt[2022/08/01 17:51:34] ppcls INFO:         name : Topk[2022/08/01 17:51:34] ppcls INFO:         topk : 5[2022/08/01 17:51:34] ppcls INFO:     batch_size : 10[2022/08/01 17:51:34] ppcls INFO:     infer_imgs : docs/images/inference_deployment/whl_demo.jpg[2022/08/01 17:51:34] ppcls INFO:     transforms : [2022/08/01 17:51:34] ppcls INFO:         DecodeImage : [2022/08/01 17:51:34] ppcls INFO:             channel_first : False[2022/08/01 17:51:34] ppcls INFO:             to_rgb : True[2022/08/01 17:51:34] ppcls INFO:         ResizeImage : [2022/08/01 17:51:34] ppcls INFO:             backend : pil[2022/08/01 17:51:34] ppcls INFO:             interpolation : bicubic[2022/08/01 17:51:34] ppcls INFO:             resize_short : 256[2022/08/01 17:51:34] ppcls INFO:         CropImage : [2022/08/01 17:51:34] ppcls INFO:             size : 224[2022/08/01 17:51:34] ppcls INFO:         NormalizeImage : [2022/08/01 17:51:34] ppcls INFO:             mean : [0.485, 0.456, 0.406][2022/08/01 17:51:34] ppcls INFO:             order : [2022/08/01 17:51:34] ppcls INFO:             scale : 1.0/255.0[2022/08/01 17:51:34] ppcls INFO:             std : [0.229, 0.224, 0.225][2022/08/01 17:51:34] ppcls INFO:         ToCHWImage : None[2022/08/01 17:51:34] ppcls INFO: Loss : [2022/08/01 17:51:34] ppcls INFO:     Eval : [2022/08/01 17:51:34] ppcls INFO:         CELoss : [2022/08/01 17:51:34] ppcls INFO:             weight : 1.0[2022/08/01 17:51:34] ppcls INFO:     Train : [2022/08/01 17:51:34] ppcls INFO:         CELoss : [2022/08/01 17:51:34] ppcls INFO:             epsilon : 0.1[2022/08/01 17:51:34] ppcls INFO:             weight : 1.0[2022/08/01 17:51:34] ppcls INFO: Metric : [2022/08/01 17:51:34] ppcls INFO:     Eval : [2022/08/01 17:51:34] ppcls INFO:         TopkAcc : [2022/08/01 17:51:34] ppcls INFO:             topk : [1, 5][2022/08/01 17:51:34] ppcls INFO: Optimizer : [2022/08/01 17:51:34] ppcls INFO:     beta1 : 0.9[2022/08/01 17:51:34] ppcls INFO:     beta2 : 0.999[2022/08/01 17:51:34] ppcls INFO:     epsilon : 1e-08[2022/08/01 17:51:34] ppcls INFO:     lr : [2022/08/01 17:51:34] ppcls INFO:         eta_min : 2e-05[2022/08/01 17:51:34] ppcls INFO:         learning_rate : 1.25e-05[2022/08/01 17:51:34] ppcls INFO:         name : Cosine[2022/08/01 17:51:34] ppcls INFO:         warmup_epoch : 5[2022/08/01 17:51:34] ppcls INFO:         warmup_start_lr : 2e-06[2022/08/01 17:51:34] ppcls INFO:     name : AdamW[2022/08/01 17:51:34] ppcls INFO:     no_weight_decay_name : absolute_pos_embed relative_position_bias_table .bias norm[2022/08/01 17:51:34] ppcls INFO:     one_dim_param_no_weight_decay : True[2022/08/01 17:51:34] ppcls INFO:     weight_decay : 0.05[2022/08/01 17:51:34] ppcls INFO: train with paddle 2.3.1 and device Place(gpu:0)W0801 17:51:34.209131 26352 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1W0801 17:51:34.214239 26352 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.+++++++[2022/08/01 17:51:41] ppcls INFO: [Eval][Epoch 0][Iter: 0/8]CELoss: 0.49065, loss: 0.49065, top1: 0.89844, top5: 0.97656, batch_cost: 5.42404s, reader_cost: 2.71487, ips: 23.59865 images/sec[2022/08/01 17:51:42] ppcls INFO: [Eval][Epoch 0][Avg]CELoss: 0.39882, loss: 0.39882, top1: 0.94510, top5: 0.98529

对比实验结果

model Val Acc

ResNet50vd0.95588Swin-Transformer0.94510HorNet0.96961

从实验结果可以看出,HorNet优势还是很明显的,这也表明HorNet中模块的有效性

以上就是HorNet: 高效的空间交互模块的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/40841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
天猫超市买的东西超时配送怎么处理?天猫超市超时配送怎么办
上一篇 2025年11月6日 10:37:31
深入理解Java中的OutOfMemoryError及其与无限循环的误区
下一篇 2025年11月6日 10:38:32

相关推荐

发表回复

登录后才能评论
关注微信