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

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • Golang JSON序列化:控制敏感字段暴露的最佳实践

    本教程探讨golang中如何高效控制结构体字段在json序列化时的可见性。当需要将包含敏感信息的结构体数组转换为json响应时,通过利用`encoding/json`包提供的结构体标签,特别是`json:”-“`,可以轻松实现对特定字段的忽略,从而避免敏感数据泄露,确保api…

    2026年5月10日
    000
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    000
  • 比特币新手教程 比特币交易平台有哪些

    比特币是一种去中心化的数字货币,基于区块链技术实现点对点交易,具有匿名性、有限发行和不可篡改等特点;新手可通过交易所购买,P2P交易获得比特币,常用平台包括Binance、OKX和Huobi;交易流程包括注册账户、实名认证、绑定支付方式、充值法币并下单购买,可选择市价单或限价单;比特币存储方式有交易…

    2026年5月10日
    000
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 《魔兽世界》将于6月11日开启国服回归技术测试

    《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试

    《%ign%ignore_a_1%re_a_1%》官方宣布,将于6月11日开启国服回归技术测试,时间为7天,并称可以在6月内正式开服,玩家们可以访问官网下载战网客户端并预下载“巫妖王之怒”客户端,技术测试详情见下图。 WordAi WordAI是一个AI驱动的内容重写平台 53 查看详情 以上就是《…

    2026年5月10日 用户投稿
    200
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    000
  • 创建指定大小并填充特定数据的Golang文件教程

    本文将介绍如何使用Golang创建一个指定大小的文件,并用特定数据填充它。我们将使用 `os` 包提供的函数来创建和截断文件,从而实现快速生成大文件的目的。示例代码展示了如何创建一个10MB的文件,并将其填充为全零数据。掌握这些方法,可以方便地在例如日志系统或磁盘队列等场景中,预先创建测试文件或初始…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • 如何插入查询结果数据_SQL插入Select查询结果方法

    如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法

    使用INSERT INTO…SELECT语句可高效插入数据,通过NOT EXISTS、LEFT JOIN、MERGE语句或唯一约束避免重复;表结构不一致时可通过别名、类型转换、默认值或计算字段处理;结合存储过程可提升可维护性,支持参数化与动态SQL。 将查询结果数据插入到另一个表中,可以…

    2026年5月10日 用户投稿
    000
  • 使用 WebCodecs VideoDecoder 实现精确逐帧回退

    本文档旨在解决在使用 WebCodecs VideoDecoder 进行视频解码时,实现精确逐帧回退的问题。通过比较帧的时间戳与目标帧的时间戳,可以避免渲染中间帧,从而提高用户体验。本文将提供详细的解决方案和示例代码,帮助开发者实现精确的视频帧控制。 在使用 WebCodecs VideoDecod…

    2026年5月10日
    000
  • Discord.py 交互按钮超时与持久化解决方案

    本教程旨在解决Discord.py中交互按钮在一段时间后出现“This Interaction Failed”错误的问题。我们将深入探讨视图(View)的超时机制,并提供通过正确设置timeout参数以及利用bot.add_view()方法实现按钮持久化的具体方案,确保您的机器人交互功能稳定可靠,即…

    2026年5月10日
    000
  • Debian Copilot的社区活跃度如何

    debian copilot是codeberg社区维护的ai助手,旨在为debian用户提供服务。尽管搜索结果中没有直接提供关于debian copilot社区支持活跃度的具体数据,但我们可以通过debian社区的整体活跃度和特点来推断其活跃性。 Debian社区的一般情况: Debian拥有详尽的…

    2026年5月10日
    000
  • Python递归函数追踪与性能考量:以序列打印为例

    本文深入探讨了Python中一种递归打印序列元素的方法,并着重演示了如何通过引入缩进参数来有效追踪递归函数的执行流程和参数变化。通过实际代码示例,文章揭示了递归调用可能带来的潜在性能开销,特别是对调用栈空间的需求,以及Python默认递归深度限制可能导致的错误,为读者提供了理解和优化递归算法的实用见…

    2026年5月10日
    000
  • python中zip函数详解 python多序列压缩zip函数应用场景

    zip函数的应用场景包括:1) 同时遍历多个序列,2) 合并多个列表的数据,3) 数据分析和科学计算中的元素运算,4) 处理csv文件,5) 性能优化。zip函数是一个强大的工具,能够简化代码并提高处理多个序列时的效率。 在Python中,zip函数是一个非常有用的工具,它能够将多个可迭代对象打包成…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信