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:36:50
下一篇 2025年11月6日 10:42:36

相关推荐

  • Uniapp 中如何不拉伸不裁剪地展示图片?

    灵活展示图片:如何不拉伸不裁剪 在界面设计中,常常需要以原尺寸展示用户上传的图片。本文将介绍一种在 uniapp 框架中实现该功能的简单方法。 对于不同尺寸的图片,可以采用以下处理方式: 极端宽高比:撑满屏幕宽度或高度,再等比缩放居中。非极端宽高比:居中显示,若能撑满则撑满。 然而,如果需要不拉伸不…

    2025年12月24日
    400
  • 如何让小说网站控制台显示乱码,同时网页内容正常显示?

    如何在不影响用户界面的情况下实现控制台乱码? 当在小说网站上下载小说时,大家可能会遇到一个问题:网站上的文本在网页内正常显示,但是在控制台中却是乱码。如何实现此类操作,从而在不影响用户界面(UI)的情况下保持控制台乱码呢? 答案在于使用自定义字体。网站可以通过在服务器端配置自定义字体,并通过在客户端…

    2025年12月24日
    800
  • 如何在地图上轻松创建气泡信息框?

    地图上气泡信息框的巧妙生成 地图上气泡信息框是一种常用的交互功能,它简便易用,能够为用户提供额外信息。本文将探讨如何借助地图库的功能轻松创建这一功能。 利用地图库的原生功能 大多数地图库,如高德地图,都提供了现成的信息窗体和右键菜单功能。这些功能可以通过以下途径实现: 高德地图 JS API 参考文…

    2025年12月24日
    400
  • 如何使用 scroll-behavior 属性实现元素scrollLeft变化时的平滑动画?

    如何实现元素scrollleft变化时的平滑动画效果? 在许多网页应用中,滚动容器的水平滚动条(scrollleft)需要频繁使用。为了让滚动动作更加自然,你希望给scrollleft的变化添加动画效果。 解决方案:scroll-behavior 属性 要实现scrollleft变化时的平滑动画效果…

    2025年12月24日
    000
  • 如何为滚动元素添加平滑过渡,使滚动条滑动时更自然流畅?

    给滚动元素平滑过渡 如何在滚动条属性(scrollleft)发生改变时为元素添加平滑的过渡效果? 解决方案:scroll-behavior 属性 为滚动容器设置 scroll-behavior 属性可以实现平滑滚动。 html 代码: click the button to slide right!…

    2025年12月24日
    500
  • 如何选择元素个数不固定的指定类名子元素?

    灵活选择元素个数不固定的指定类名子元素 在网页布局中,有时需要选择特定类名的子元素,但这些元素的数量并不固定。例如,下面这段 html 代码中,activebar 和 item 元素的数量均不固定: *n *n 如果需要选择第一个 item元素,可以使用 css 选择器 :nth-child()。该…

    2025年12月24日
    200
  • 使用 SVG 如何实现自定义宽度、间距和半径的虚线边框?

    使用 svg 实现自定义虚线边框 如何实现一个具有自定义宽度、间距和半径的虚线边框是一个常见的前端开发问题。传统的解决方案通常涉及使用 border-image 引入切片图片,但是这种方法存在引入外部资源、性能低下的缺点。 为了避免上述问题,可以使用 svg(可缩放矢量图形)来创建纯代码实现。一种方…

    2025年12月24日
    100
  • 如何解决本地图片在使用 mask JS 库时出现的跨域错误?

    如何跨越localhost使用本地图片? 问题: 在本地使用mask js库时,引入本地图片会报跨域错误。 解决方案: 要解决此问题,需要使用本地服务器启动文件,以http或https协议访问图片,而不是使用file://协议。例如: python -m http.server 8000 然后,可以…

    2025年12月24日
    200
  • 旋转长方形后,如何计算其相对于画布左上角的轴距?

    绘制长方形并旋转,计算旋转后轴距 在拥有 1920×1080 画布中,放置一个宽高为 200×20 的长方形,其坐标位于 (100, 100)。当以任意角度旋转长方形时,如何计算它相对于画布左上角的 x、y 轴距? 以下代码提供了一个计算旋转后长方形轴距的解决方案: const x = 200;co…

    2025年12月24日
    000
  • 旋转长方形后,如何计算它与画布左上角的xy轴距?

    旋转后长方形在画布上的xy轴距计算 在画布中添加一个长方形,并将其旋转任意角度,如何计算旋转后的长方形与画布左上角之间的xy轴距? 问题分解: 要计算旋转后长方形的xy轴距,需要考虑旋转对长方形宽高和位置的影响。首先,旋转会改变长方形的长和宽,其次,旋转会改变长方形的中心点位置。 求解方法: 计算旋…

    2025年12月24日
    000
  • 旋转长方形后如何计算其在画布上的轴距?

    旋转长方形后计算轴距 假设长方形的宽、高分别为 200 和 20,初始坐标为 (100, 100),我们将它旋转一个任意角度。根据旋转矩阵公式,旋转后的新坐标 (x’, y’) 可以通过以下公式计算: x’ = x * cos(θ) – y * sin(θ)y’ = x * …

    2025年12月24日
    000
  • 如何让“元素跟随文本高度,而不是撑高父容器?

    如何让 元素跟随文本高度,而不是撑高父容器 在页面布局中,经常遇到父容器高度被子元素撑开的问题。在图例所示的案例中,父容器被较高的图片撑开,而文本的高度没有被考虑。本问答将提供纯css解决方案,让图片跟随文本高度,确保父容器的高度不会被图片影响。 解决方法 为了解决这个问题,需要将图片从文档流中脱离…

    2025年12月24日
    000
  • 如何计算旋转后长方形在画布上的轴距?

    旋转后长方形与画布轴距计算 在给定的画布中,有一个长方形,在随机旋转一定角度后,如何计算其在画布上的轴距,即距离左上角的距离? 以下提供一种计算长方形相对于画布左上角的新轴距的方法: const x = 200; // 初始 x 坐标const y = 90; // 初始 y 坐标const w =…

    2025年12月24日
    200
  • CSS元素设置em和transition后,为何载入页面无放大效果?

    css元素设置em和transition后,为何载入无放大效果 很多开发者在设置了em和transition后,却发现元素载入页面时无放大效果。本文将解答这一问题。 原问题:在视频演示中,将元素设置如下,载入页面会有放大效果。然而,在个人尝试中,并未出现该效果。这是由于macos和windows系统…

    2025年12月24日
    200
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 如何利用 CSS 选中激活标签并影响相邻元素的样式?

    如何利用 css 选中激活标签并影响相邻元素? 为了实现激活标签影响相邻元素的样式需求,可以通过 :has 选择器来实现。以下是如何具体操作: 对于激活标签相邻后的元素,可以在 css 中使用以下代码进行设置: li:has(+li.active) { border-radius: 0 0 10px…

    2025年12月24日
    100
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 如何计算旋转后的长方形在画布上的 XY 轴距?

    旋转长方形后计算其画布xy轴距 在创建的画布上添加了一个长方形,并提供其宽、高和初始坐标。为了视觉化旋转效果,还提供了一些旋转特定角度后的图片。 问题是如何计算任意角度旋转后,这个长方形的xy轴距。这涉及到使用三角学来计算旋转后的坐标。 以下是一个 javascript 代码示例,用于计算旋转后长方…

    2025年12月24日
    000
  • 为什么我的 Safari 自定义样式表在百度页面上失效了?

    为什么在 Safari 中自定义样式表未能正常工作? 在 Safari 的偏好设置中设置自定义样式表后,您对其进行测试却发现效果不同。在您自己的网页中,样式有效,而在百度页面中却失效。 造成这种情况的原因是,第一个访问的项目使用了文件协议,可以访问本地目录中的图片文件。而第二个访问的百度使用了 ht…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信