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

相关推荐

  • 币圈交易所资源整合 2025年币圈交易App评测

    进入2025年,全球加密货币市场呈现出愈发复杂和多元化的竞争格局。数字资产的普及度持续提升,吸引了大量新增用户进入这个充满机遇与挑战并存的领域。对于每一位市场参与者而言,选择一个安全、高效、功能全面的交易平台是进行资产管理和投资布局的关键一步。市场的演变推动着各大交易所不断进行技术革新与服务整合,它…

    2025年12月8日 好文分享
    000
  • SUI价格,现实世界中的资产和区块链集成:一个新时代?

    探索SUI在现实世界中的兴起,区块链整合及其对加密市场的影响,包括价格分析和未来潜力。 Sui正在浪潮,将现实世界的资产与区块链技术融为一体。让我们深入了解SUI的价格行动,它进入了现实世界中的资产(RWAS)以及更广泛的区块链集成。这是未来吗? SUI价格势头:$ 3的眼睛 Sui的价格显示出生命…

    2025年12月8日
    000
  • 雪崩价格预测:灰度提升信号潜在集会到50美元?

    雪崩(avax)因其不断增强的链上活跃度与机构关注度正逐步升温,其价格是否有望冲高至50美元?我们来看看最新的价格预测和市场动向。 雪崩价格展望:灰度背书预示或将冲击50美元? 雪崩(AVAX)展现出强劲的韧性,吸引了越来越多机构的关注,并在链上活动方面表现突出。这是否意味着一场大规模上涨即将到来?…

    2025年12月8日
    000
  • Chainlink(LINK)质押功能上线,预言机龙头开启新篇章?

    Chainlink作为预言机龙头,其质押(Staking)功能的上线是其生态发展中的一个里程碑事件。本文将详细阐述Chainlink质押功能的核心机制,分析它如何为网络带来更高的安全性,并探讨这一功能为何被视为开启了Chainlink发展的新篇章。通过对质押目的和过程的讲解,可以清晰地了解其对整个网…

    2025年12月8日
    000
  • Cosmos(ATOM)跨链枢纽价值被低估?生态爆发前夜信号显现

    本文将围绕Cosmos(ATOM)作为跨链枢纽的价值进行探讨,分析其当前可能被市场低估的原因,并通过解读其核心技术、经济模型演进以及生态发展的关键信号,阐述为何Cosmos生态可能正处于爆发的前夜。文章将深入讲解其底层协议与新功能,帮助理解其价值捕获能力的提升过程。 2025主流加密货币交易所官网注…

    2025年12月8日
    000
  • Blockdag,Cosmos和Algorand:在2025年浏览加密货币景观

    在2025年,加密货币的格局正在被重塑,blockdag、cosmos和algorand以其独特的创新能力和市场定位脱颖而出。 Blockdag,Cosmos和Algorand:2025年加密市场的关键参与者 加密世界从不停歇,进入2025年,Blockdag、Cosmos与Algorand正逐渐成…

    2025年12月8日
    000
  • 加密货币,Web3和AI:绘制趋势并发现宝石

    探索加密货币、web3 与人工智能的最新动向与深度见解,聚焦这一快速演进领域中的核心参与者和新兴机遇。 加密货币、Web3 与 AI 的交汇正在重塑数字世界格局,带来挑战的同时也开启了前所未有的机会。让我们深入探讨这一活跃领域的最新动态、发展趋势以及关键洞见。 崭露头角的加密项目 加密市场虽经历波动…

    2025年12月8日
    000
  • Chainlink的17美元突破:由万事达卡合作伙伴关系推动的看涨势头

    chainlink(link)正展现出强劲的上涨趋势,有望触及17美元。受与万事达卡达成重要合作伙伴关系的推动,chainlink在连接去中心化金融(defi)与传统金融(tradfi)方面发挥了桥梁作用。 Chainlink冲击17美元:万事达合作点燃看涨情绪 在与万事达卡建立战略合作的支持下,C…

    2025年12月8日
    000
  • 币圈前十交易平台有哪些 2025年交易所App榜单排名

    数字资产的世界充满了活力与变迁,交易平台作为连接投资者与数字货币市场的核心桥梁,其重要性不言而喻。用户在选择一个交易平台时,会考量其安全性、流动性、用户体验、资产多样性以及客户服务等多个维度。一个功能全面且运行稳定的应用程序,能够极大地提升用户的交易效率和资产管理体验。市场上涌现出众多交易平台,它们…

    2025年12月8日 好文分享
    000
  • BlockDag:这是增长最快的加密货币,准备爆炸吗?

    blockdag凭借其创新技术与亮眼的预售表现吸引了众多关注。但这是否真的是目前发展最快的加密货币呢? BlockDag正在引发热议!该项目设定了6亿美元的融资目标,并以实际进展支撑其计划。但它真的能够兑现承诺吗? Blockdag:只是炒作还是真有实力? 在加密领域,炒作层出不穷,但一些项目确实在…

    2025年12月8日
    000
  • Grayscale的前20名加密货币排名:Avax和Morpho晋级!

    灰度更新了其2025年第三季度前20大加密货币榜单,avax和morpho强势加入,而一些老牌项目仍未上榜。让我们一起看看这些变化背后的动因与趋势。 Crypto Fam,什么是最新动态?Grayscale刚刚发布了最新的第三季度前20名加密资产名单,整个社区都在热烈讨论。市场格局正在发生变化,我们…

    2025年12月8日
    000
  • Ruvi AI:被审核的令牌回声在加密货币空间中

    ruvi ai凭借其以实用为导向的模型、经过审核的安全机制以及结构化增长路径,正在引发广泛关注。这是否将成为下一个重大投资机会? Ruvi AI(简称Ruvi)通过结合人工智能与区块链技术,致力于打造营销与娱乐领域的创新解决方案,正逐步走向聚光灯下。强调实用性与安全保障,这是否正是你一直在寻找的加密…

    2025年12月8日
    000
  • Ruvi AI:实用模型推动价值激增

    发现Ruvi AI的创新实用工具模型如何引发价值激增,为传统加密货币提供了令人信服的替代方案。 在不断发展的加密货币世界中,Ruvi AI(Ruvi)正在以重点关注现实世界实用程序和结构化的增长,使其与更投机的标记区分开来。让我们深入了解为什么Ruvi AI经历了价值激增以及使其实用性模型如此引人注…

    2025年12月8日
    000
  • 卡尔达诺(ADA)创始人Hoskinson最新访谈:Cardano的下一步计划

    本文将围绕卡尔达诺创始人Charles Hoskinson在近期访谈中透露的网络未来发展蓝图进行阐述。文章将详细解析Cardano即将进入的关键阶段,包括如何实现完全的去中心化治理,以及在性能和可扩展性方面的具体举措,旨在帮助读者清晰地了解Cardano接下来的发展路径和核心计划。 2025卡尔达诺…

    2025年12月8日
    000
  • Uniswap(UNI)遭遇强劲对手,DEX龙头地位会被颠覆吗?

    去中心化交易所(DEX)的竞争日趋激烈,Uniswap作为曾经无可争议的领导者,其地位正面临来自各方的严峻挑战。本文将围绕这一问题展开探讨,通过分析Uniswap自身的核心优势、当前面临的竞争格局以及影响DEX市场未来的关键变量,来阐释其龙头地位是否稳固,并探讨其可能的发展路径。 2025主流加密货…

    2025年12月8日
    000
  • Avalanche(AVAX)子网生态爆发,哪些项目最具潜力?

    随着Avalanche子网技术的成熟,其生态系统正经历快速扩张。本文将深入探讨Avalanche子网的核心优势,并为您解析当前生态中一些备受关注且具有潜力的项目。我们将通过介绍子网的基本概念,并列举不同领域的代表性项目,为您提供一个评估其潜力的分析框架,帮助您理解这些项目能够脱颖而出的原因。 202…

    2025年12月8日
    000
  • LTC看跌,湿度低,Web3 AI高:加密预测是什么?

    litecoin和shiba inu遭遇市场阻力,而web3 ai凭借其人工智能技术的加密工具逐渐崭露头角。web3 ai是否会成为下一个爆发的加密项目? LTC走势疲软,市场情绪低迷,Web3 AI表现强劲:加密货币未来预测 加密货币市场如同坐过山车一般波动剧烈。LTC和SHIB面临下行压力,而W…

    2025年12月8日
    000
  • 未固定:重新定义加密货币超越持有

    unstaked正在通过加密领域的脚本翻转策略,利用其ai驱动的生态系统和基于性能的奖励机制,超越了传统的持有模式。这是否预示着加密参与的新时代? 未固定:重塑加密未来,不止于持有 加密领域正迎来一种全新的参与方式,而Unstaked正是这场变革的引领者。不再只是紧握手中的代币;Unstaked倡导…

    2025年12月8日
    000
  • Ruvi AI,Dogecoin和ROI:解码加密透明炒作

    探索ruvi ai与dogecoin的投资回报潜力。揭示了关键洞察和趋势,对比分析了ruvi ai的结构性增长与dogecoin由模因驱动的流行现象。 加密货币市场持续引发热议,其中关于投资回报的讨论中,Ruvi AI与Dogecoin成为焦点。让我们深入探讨这两者背后的运作机制,并评估它们在ROI…

    2025年12月8日
    000
  • Qubetics,Monero,至今:解码加密货币收益

    探索qubetics、monero与kaspa,开启加密资产增值新机遇。qubetics以互操作性为核心驱动力,monero持续提供隐私保障,而kaspa则主打高速交易性能。 加密市场永不停歇,2025年正迎来前所未有的波动与机遇!在Monero和Kaspa频繁登上新闻头条的同时,Qubetics正…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信