IC-CONV:使用高效空洞搜索的 Inception 卷积

P粉084495128
发布: 2025-07-18 14:53:24
原创
1060人浏览过
本文介绍了基于Paddle实现Inception Conv及魔改版ResNet的过程。Inception Conv通过并联不同空洞卷积并拼接结果构成,魔改版ResNet将主干3x3标准卷积替换为Inception Conv。文中展示了模型搭建、测试细节,包括结构总览、参数量等,验证其在ILSVRC2012数据集上的精度,top1准确率达77.16%,top5达93.48%。

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

ic-conv:使用高效空洞搜索的 inception 卷积 - php中文网

引入

  • 空洞卷积(Dilation convolution)是标准卷积神经网络的关键变体,可以控制有效的感受野并处理对象的da尺度方差,而无需引入额外的计算
  • 为了充分挖掘其潜力,作者提出了一种新的空洞卷积变体,即 inception (dilated) 卷积,其中卷积在不同轴,通道和层之间具有独立的空洞
  • 本次就来使用 Paddle 实现 Inception Conv 和基于 Inception Conv 的魔改版 ResNet
  • 并使用官方提供的预训练模型参数进行精度验证

相关资料

  • 论文:Inception Convolution with Efficient Dilation Search
  • 官方项目:yifan123/IC-Conv

算子和模型的搭建

导入一些必要的包

In [1]
import reimport jsonimport paddleimport paddle.nn as nnfrom paddle.vision.models import resnet
登录后复制
   

IC_Conv

  • Inception Conv 的结构如下图:

    IC-CONV:使用高效空洞搜索的 Inception 卷积 - php中文网                

  • 大致的实现方法是使用多个不同的空洞卷积并联,然后将结果拼接到一起

    纳米搜索
    纳米搜索

    纳米搜索:360推出的新一代AI搜索引擎

    纳米搜索 30
    查看详情 纳米搜索
  • 通过 pattern_dist 参数加载搜索到的各个卷积的参数

In [2]
class IC_Conv2D(nn.Layer):
    def __init__(self, pattern_dist, inplanes, planes, kernel_size, stride=1, groups=1, bias_attr=False):
        super(IC_Conv2D, self).__init__()
        self.conv_list = nn.LayerList()
        self.planes = planes        for pattern in pattern_dist:
            channel = pattern_dist[pattern]
            pattern_trans = re.findall(r"\d+\.?\d*", pattern)
            pattern_trans[0] = int(pattern_trans[0])+1
            pattern_trans[1] = int(pattern_trans[1])+1
            if channel > 0:
                padding = [0, 0]
                padding[0] = (kernel_size+2*(pattern_trans[0]-1))//2
                padding[1] = (kernel_size+2*(pattern_trans[1]-1))//2
                self.conv_list.append(nn.Conv2D(inplanes, channel, kernel_size=kernel_size, stride=stride,
                                                padding=padding, bias_attr=bias_attr, groups=groups, dilation=pattern_trans))    def forward(self, x):
        out = []        for conv in self.conv_list:
            out.append(conv(x))
        out = paddle.concat(out, axis=1)        assert out.shape[1] == self.planes        return out
登录后复制
   

IC_ResNet

  • IC_ResNet 即一种添加了 Inception Conv 的魔改版 ResNet
  • 将 ResNet 主干中的 3x3 标准卷积替换为 Inception Conv
In [3]
class BottleneckBlock(resnet.BottleneckBlock):
    def __init__(self,
                 inplanes,
                 planes,
                 stride=1,
                 downsample=None,
                 groups=1,
                 base_width=64,
                 dilation=1,
                 norm_layer=None):
        super(BottleneckBlock, self).__init__(inplanes, planes, stride,
                                              downsample, groups, base_width, dilation, norm_layer)        global pattern, pattern_index
        pattern_index = pattern_index + 1
        width = int(planes * (base_width / 64.)) * groups
        self.conv2 = IC_Conv2D(
            pattern[pattern_index], width, width, kernel_size=3, stride=stride, bias_attr=False)class IC_ResNet(resnet.ResNet):
    def __init__(self, block, depth, pattern_path=None, class_dim=1000, with_pool=True):
        super(IC_ResNet, self).__init__(resnet.BottleneckBlock,
                                        depth, num_classes=class_dim, with_pool=with_pool)        global pattern, pattern_index        with open(pattern_path, 'r') as f:
            pattern = json.load(f)
        pattern_index = -1

        self.inplanes = 64
        self.dilation = 1

        layer_cfg = {            50: [3, 4, 6, 3],            101: [3, 4, 23, 3]
        }
        layers = layer_cfg[depth]

        self.layer1 = self._make_layer(block, 64, layers[0])
        self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
        self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
        self.layer4 = self._make_layer(block, 512, layers[3], stride=2)        assert len(pattern) == pattern_index + 1def ic_resnet_50_k9(pretrained=False, **kwargs):
    model = IC_ResNet(
        BottleneckBlock,
        depth=50,
        pattern_path='ic_resnet50_k9.json',
        **kwargs
    )    if pretrained:
        model.set_dict(paddle.load('ic_resnet50_k9_imagenet_retrain.pdparams'))    return model
登录后复制
   

模型测试

In [4]
# 实例化模型model = ic_resnet_50_k9(pretrained=True)
model.eval()# 模型结构总览paddle.summary(model, (1, 3, 224, 224))# 计算模型参数量和 flopspaddle.flops(model, (1, 3, 224, 224))# 准备一个随机输入x = paddle.randn((1, 3, 224, 224))# 测试前向计算out = model(x)# 打印输出结果的 shapeprint(out.shape)
登录后复制
       
-------------------------------------------------------------------------------
   Layer (type)         Input Shape          Output Shape         Param #    
===============================================================================
     Conv2D-1        [[1, 3, 224, 224]]   [1, 64, 112, 112]        9,408     
   BatchNorm2D-1    [[1, 64, 112, 112]]   [1, 64, 112, 112]         256      
      ReLU-1        [[1, 64, 112, 112]]   [1, 64, 112, 112]          0       
    MaxPool2D-1     [[1, 64, 112, 112]]    [1, 64, 56, 56]           0       
     Conv2D-55       [[1, 64, 56, 56]]     [1, 64, 56, 56]         4,096     
  BatchNorm2D-55     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-18        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-58       [[1, 64, 56, 56]]     [1, 42, 56, 56]        24,192     
     Conv2D-59       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-60       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-61       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-62       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-63       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-64       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-65       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-66       [[1, 64, 56, 56]]      [1, 2, 56, 56]         1,152     
     Conv2D-67       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
    IC_Conv2D-1      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-56     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-57       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-57     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
     Conv2D-54       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-54     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-17   [[1, 64, 56, 56]]     [1, 256, 56, 56]          0       
     Conv2D-68       [[1, 256, 56, 56]]    [1, 64, 56, 56]        16,384     
  BatchNorm2D-58     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-19        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-71       [[1, 64, 56, 56]]     [1, 30, 56, 56]        17,280     
     Conv2D-72       [[1, 64, 56, 56]]      [1, 6, 56, 56]         3,456     
     Conv2D-73       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-74       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-75       [[1, 64, 56, 56]]      [1, 9, 56, 56]         5,184     
     Conv2D-76       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-77       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-78       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-79       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-80       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-81       [[1, 64, 56, 56]]      [1, 4, 56, 56]         2,304     
     Conv2D-82       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
    IC_Conv2D-2      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-59     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-70       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-60     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-18   [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-83       [[1, 256, 56, 56]]    [1, 64, 56, 56]        16,384     
  BatchNorm2D-61     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
      ReLU-20        [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-86       [[1, 64, 56, 56]]     [1, 41, 56, 56]        23,616     
     Conv2D-87       [[1, 64, 56, 56]]      [1, 5, 56, 56]         2,880     
     Conv2D-88       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-89       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-90       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-91       [[1, 64, 56, 56]]      [1, 3, 56, 56]         1,728     
     Conv2D-92       [[1, 64, 56, 56]]      [1, 7, 56, 56]         4,032     
     Conv2D-93       [[1, 64, 56, 56]]      [1, 1, 56, 56]          576      
     Conv2D-94       [[1, 64, 56, 56]]      [1, 2, 56, 56]         1,152     
    IC_Conv2D-3      [[1, 64, 56, 56]]     [1, 64, 56, 56]           0       
  BatchNorm2D-62     [[1, 64, 56, 56]]     [1, 64, 56, 56]          256      
     Conv2D-85       [[1, 64, 56, 56]]     [1, 256, 56, 56]       16,384     
  BatchNorm2D-63     [[1, 256, 56, 56]]    [1, 256, 56, 56]        1,024     
BottleneckBlock-19   [[1, 256, 56, 56]]    [1, 256, 56, 56]          0       
     Conv2D-96       [[1, 256, 56, 56]]    [1, 128, 56, 56]       32,768     
  BatchNorm2D-65     [[1, 128, 56, 56]]    [1, 128, 56, 56]         512      
      ReLU-21        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
     Conv2D-99       [[1, 128, 56, 56]]    [1, 77, 28, 28]        88,704     
    Conv2D-100       [[1, 128, 56, 56]]     [1, 9, 28, 28]        10,368     
    Conv2D-101       [[1, 128, 56, 56]]     [1, 1, 28, 28]         1,152     
    Conv2D-102       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-103       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-104       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-105       [[1, 128, 56, 56]]     [1, 4, 28, 28]         4,608     
    Conv2D-106       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-107       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-108       [[1, 128, 56, 56]]     [1, 1, 28, 28]         1,152     
    Conv2D-109       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-110       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    Conv2D-111       [[1, 128, 56, 56]]     [1, 8, 28, 28]         9,216     
    Conv2D-112       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-113       [[1, 128, 56, 56]]     [1, 2, 28, 28]         2,304     
    Conv2D-114       [[1, 128, 56, 56]]     [1, 3, 28, 28]         3,456     
    IC_Conv2D-4      [[1, 128, 56, 56]]    [1, 128, 28, 28]          0       
  BatchNorm2D-66     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
     Conv2D-98       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-67     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
     Conv2D-95       [[1, 256, 56, 56]]    [1, 512, 28, 28]       131,072    
  BatchNorm2D-64     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-20   [[1, 256, 56, 56]]    [1, 512, 28, 28]          0       
    Conv2D-115       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-68     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-22        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-118       [[1, 128, 28, 28]]    [1, 65, 28, 28]        74,880     
    Conv2D-119       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-120       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-121       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-122       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-123       [[1, 128, 28, 28]]     [1, 7, 28, 28]         8,064     
    Conv2D-124       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-125       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-126       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-127       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-128       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-129       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-130       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-131       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-132       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-133       [[1, 128, 28, 28]]    [1, 13, 28, 28]        14,976     
    IC_Conv2D-5      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-69     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-117       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-70     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-21   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-134       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-71     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-23        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-137       [[1, 128, 28, 28]]    [1, 69, 28, 28]        79,488     
    Conv2D-138       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-139       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-140       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-141       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-142       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-143       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-144       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-145       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-146       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-147       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-148       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-149       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-150       [[1, 128, 28, 28]]     [1, 1, 28, 28]         1,152     
    Conv2D-151       [[1, 128, 28, 28]]    [1, 16, 28, 28]        18,432     
    IC_Conv2D-6      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-72     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-136       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-73     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-22   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-152       [[1, 512, 28, 28]]    [1, 128, 28, 28]       65,536     
  BatchNorm2D-74     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
      ReLU-24        [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-155       [[1, 128, 28, 28]]    [1, 57, 28, 28]        65,664     
    Conv2D-156       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-157       [[1, 128, 28, 28]]    [1, 12, 28, 28]        13,824     
    Conv2D-158       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-159       [[1, 128, 28, 28]]     [1, 9, 28, 28]        10,368     
    Conv2D-160       [[1, 128, 28, 28]]     [1, 6, 28, 28]         6,912     
    Conv2D-161       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-162       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-163       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    Conv2D-164       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-165       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-166       [[1, 128, 28, 28]]     [1, 2, 28, 28]         2,304     
    Conv2D-167       [[1, 128, 28, 28]]     [1, 5, 28, 28]         5,760     
    Conv2D-168       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-169       [[1, 128, 28, 28]]     [1, 3, 28, 28]         3,456     
    Conv2D-170       [[1, 128, 28, 28]]     [1, 4, 28, 28]         4,608     
    IC_Conv2D-7      [[1, 128, 28, 28]]    [1, 128, 28, 28]          0       
  BatchNorm2D-75     [[1, 128, 28, 28]]    [1, 128, 28, 28]         512      
    Conv2D-154       [[1, 128, 28, 28]]    [1, 512, 28, 28]       65,536     
  BatchNorm2D-76     [[1, 512, 28, 28]]    [1, 512, 28, 28]        2,048     
BottleneckBlock-23   [[1, 512, 28, 28]]    [1, 512, 28, 28]          0       
    Conv2D-172       [[1, 512, 28, 28]]    [1, 256, 28, 28]       131,072    
  BatchNorm2D-78     [[1, 256, 28, 28]]    [1, 256, 28, 28]        1,024     
      ReLU-25       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-175       [[1, 256, 28, 28]]    [1, 95, 14, 14]        218,880    
    Conv2D-176       [[1, 256, 28, 28]]    [1, 29, 14, 14]        66,816     
    Conv2D-177       [[1, 256, 28, 28]]     [1, 9, 14, 14]        20,736     
    Conv2D-178       [[1, 256, 28, 28]]     [1, 6, 14, 14]        13,824     
    Conv2D-179       [[1, 256, 28, 28]]    [1, 26, 14, 14]        59,904     
    Conv2D-180       [[1, 256, 28, 28]]    [1, 16, 14, 14]        36,864     
    Conv2D-181       [[1, 256, 28, 28]]    [1, 11, 14, 14]        25,344     
    Conv2D-182       [[1, 256, 28, 28]]     [1, 4, 14, 14]         9,216     
    Conv2D-183       [[1, 256, 28, 28]]    [1, 12, 14, 14]        27,648     
    Conv2D-184       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-185       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-186       [[1, 256, 28, 28]]     [1, 7, 14, 14]        16,128     
    Conv2D-187       [[1, 256, 28, 28]]    [1, 11, 14, 14]        25,344     
    Conv2D-188       [[1, 256, 28, 28]]     [1, 3, 14, 14]         6,912     
    Conv2D-189       [[1, 256, 28, 28]]     [1, 4, 14, 14]         9,216     
    Conv2D-190       [[1, 256, 28, 28]]     [1, 9, 14, 14]        20,736     
    IC_Conv2D-8      [[1, 256, 28, 28]]    [1, 256, 14, 14]          0       
  BatchNorm2D-79     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-174       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-80    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
    Conv2D-171       [[1, 512, 28, 28]]   [1, 1024, 14, 14]       524,288    
  BatchNorm2D-77    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-24   [[1, 512, 28, 28]]   [1, 1024, 14, 14]          0       
    Conv2D-191      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-81     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-26       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-194       [[1, 256, 14, 14]]    [1, 84, 14, 14]        193,536    
    Conv2D-195       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-196       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-197       [[1, 256, 14, 14]]    [1, 17, 14, 14]        39,168     
    Conv2D-198       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-199       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-200       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-201       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-202       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-203       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-204       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-205       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-206       [[1, 256, 14, 14]]    [1, 18, 14, 14]        41,472     
    Conv2D-207       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-208       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-209       [[1, 256, 14, 14]]    [1, 36, 14, 14]        82,944     
    IC_Conv2D-9      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-82     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-193       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-83    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-25  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-210      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-84     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-27       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-213       [[1, 256, 14, 14]]    [1, 92, 14, 14]        211,968    
    Conv2D-214       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-215       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-216       [[1, 256, 14, 14]]    [1, 17, 14, 14]        39,168     
    Conv2D-217       [[1, 256, 14, 14]]    [1, 15, 14, 14]        34,560     
    Conv2D-218       [[1, 256, 14, 14]]    [1, 19, 14, 14]        43,776     
    Conv2D-219       [[1, 256, 14, 14]]     [1, 1, 14, 14]         2,304     
    Conv2D-220       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-221       [[1, 256, 14, 14]]    [1, 20, 14, 14]        46,080     
    Conv2D-222       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-223       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-224       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-225       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
    Conv2D-226       [[1, 256, 14, 14]]    [1, 10, 14, 14]        23,040     
    Conv2D-227       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-228       [[1, 256, 14, 14]]    [1, 20, 14, 14]        46,080     
   IC_Conv2D-10      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-85     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-212       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-86    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-26  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-229      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-87     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-28       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-232       [[1, 256, 14, 14]]    [1, 88, 14, 14]        202,752    
    Conv2D-233       [[1, 256, 14, 14]]    [1, 29, 14, 14]        66,816     
    Conv2D-234       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-235       [[1, 256, 14, 14]]    [1, 19, 14, 14]        43,776     
    Conv2D-236       [[1, 256, 14, 14]]    [1, 18, 14, 14]        41,472     
    Conv2D-237       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-238       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-239       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-240       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
    Conv2D-241       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-242       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-243       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-244       [[1, 256, 14, 14]]    [1, 13, 14, 14]        29,952     
    Conv2D-245       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-246       [[1, 256, 14, 14]]     [1, 4, 14, 14]         9,216     
    Conv2D-247       [[1, 256, 14, 14]]    [1, 27, 14, 14]        62,208     
   IC_Conv2D-11      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-88     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-231       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-89    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-27  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-248      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-90     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-29       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-251       [[1, 256, 14, 14]]    [1, 111, 14, 14]       255,744    
    Conv2D-252       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-253       [[1, 256, 14, 14]]     [1, 8, 14, 14]        18,432     
    Conv2D-254       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-255       [[1, 256, 14, 14]]    [1, 15, 14, 14]        34,560     
    Conv2D-256       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-257       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-258       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-259       [[1, 256, 14, 14]]    [1, 13, 14, 14]        29,952     
    Conv2D-260       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-261       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-262       [[1, 256, 14, 14]]     [1, 9, 14, 14]        20,736     
    Conv2D-263       [[1, 256, 14, 14]]    [1, 14, 14, 14]        32,256     
    Conv2D-264       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-265       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-266       [[1, 256, 14, 14]]    [1, 12, 14, 14]        27,648     
   IC_Conv2D-12      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-91     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-250       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-92    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-28  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-267      [[1, 1024, 14, 14]]    [1, 256, 14, 14]       262,144    
  BatchNorm2D-93     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
      ReLU-30       [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-270       [[1, 256, 14, 14]]    [1, 105, 14, 14]       241,920    
    Conv2D-271       [[1, 256, 14, 14]]    [1, 21, 14, 14]        48,384     
    Conv2D-272       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-273       [[1, 256, 14, 14]]    [1, 22, 14, 14]        50,688     
    Conv2D-274       [[1, 256, 14, 14]]    [1, 16, 14, 14]        36,864     
    Conv2D-275       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-276       [[1, 256, 14, 14]]     [1, 5, 14, 14]        11,520     
    Conv2D-277       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-278       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
    Conv2D-279       [[1, 256, 14, 14]]     [1, 3, 14, 14]         6,912     
    Conv2D-280       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-281       [[1, 256, 14, 14]]     [1, 7, 14, 14]        16,128     
    Conv2D-282       [[1, 256, 14, 14]]    [1, 25, 14, 14]        57,600     
    Conv2D-283       [[1, 256, 14, 14]]     [1, 2, 14, 14]         4,608     
    Conv2D-284       [[1, 256, 14, 14]]     [1, 6, 14, 14]        13,824     
    Conv2D-285       [[1, 256, 14, 14]]    [1, 11, 14, 14]        25,344     
   IC_Conv2D-13      [[1, 256, 14, 14]]    [1, 256, 14, 14]          0       
  BatchNorm2D-94     [[1, 256, 14, 14]]    [1, 256, 14, 14]        1,024     
    Conv2D-269       [[1, 256, 14, 14]]   [1, 1024, 14, 14]       262,144    
  BatchNorm2D-95    [[1, 1024, 14, 14]]   [1, 1024, 14, 14]        4,096     
BottleneckBlock-29  [[1, 1024, 14, 14]]   [1, 1024, 14, 14]          0       
    Conv2D-287      [[1, 1024, 14, 14]]    [1, 512, 14, 14]       524,288    
  BatchNorm2D-97     [[1, 512, 14, 14]]    [1, 512, 14, 14]        2,048     
      ReLU-31        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-290       [[1, 512, 14, 14]]     [1, 134, 7, 7]        617,472    
    Conv2D-291       [[1, 512, 14, 14]]     [1, 53, 7, 7]         244,224    
    Conv2D-292       [[1, 512, 14, 14]]     [1, 32, 7, 7]         147,456    
    Conv2D-293       [[1, 512, 14, 14]]     [1, 23, 7, 7]         105,984    
    Conv2D-294       [[1, 512, 14, 14]]     [1, 66, 7, 7]         304,128    
    Conv2D-295       [[1, 512, 14, 14]]     [1, 31, 7, 7]         142,848    
    Conv2D-296       [[1, 512, 14, 14]]     [1, 15, 7, 7]         69,120     
    Conv2D-297       [[1, 512, 14, 14]]     [1, 23, 7, 7]         105,984    
    Conv2D-298       [[1, 512, 14, 14]]     [1, 30, 7, 7]         138,240    
    Conv2D-299       [[1, 512, 14, 14]]     [1, 20, 7, 7]         92,160     
    Conv2D-300       [[1, 512, 14, 14]]      [1, 7, 7, 7]         32,256     
    Conv2D-301       [[1, 512, 14, 14]]     [1, 10, 7, 7]         46,080     
    Conv2D-302       [[1, 512, 14, 14]]     [1, 33, 7, 7]         152,064    
    Conv2D-303       [[1, 512, 14, 14]]     [1, 12, 7, 7]         55,296     
    Conv2D-304       [[1, 512, 14, 14]]     [1, 10, 7, 7]         46,080     
    Conv2D-305       [[1, 512, 14, 14]]     [1, 13, 7, 7]         59,904     
   IC_Conv2D-14      [[1, 512, 14, 14]]     [1, 512, 7, 7]           0       
  BatchNorm2D-98      [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-289        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-99     [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
    Conv2D-286      [[1, 1024, 14, 14]]    [1, 2048, 7, 7]       2,097,152   
  BatchNorm2D-96     [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-30  [[1, 1024, 14, 14]]    [1, 2048, 7, 7]           0       
    Conv2D-306       [[1, 2048, 7, 7]]      [1, 512, 7, 7]       1,048,576   
  BatchNorm2D-100     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
      ReLU-32        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-309        [[1, 512, 7, 7]]      [1, 143, 7, 7]        658,944    
    Conv2D-310        [[1, 512, 7, 7]]      [1, 39, 7, 7]         179,712    
    Conv2D-311        [[1, 512, 7, 7]]      [1, 22, 7, 7]         101,376    
    Conv2D-312        [[1, 512, 7, 7]]      [1, 56, 7, 7]         258,048    
    Conv2D-313        [[1, 512, 7, 7]]      [1, 29, 7, 7]         133,632    
    Conv2D-314        [[1, 512, 7, 7]]      [1, 19, 7, 7]         87,552     
    Conv2D-315        [[1, 512, 7, 7]]       [1, 4, 7, 7]         18,432     
    Conv2D-316        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-317        [[1, 512, 7, 7]]      [1, 23, 7, 7]         105,984    
    Conv2D-318        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-319        [[1, 512, 7, 7]]       [1, 6, 7, 7]         27,648     
    Conv2D-320        [[1, 512, 7, 7]]      [1, 17, 7, 7]         78,336     
    Conv2D-321        [[1, 512, 7, 7]]      [1, 37, 7, 7]         170,496    
    Conv2D-322        [[1, 512, 7, 7]]      [1, 14, 7, 7]         64,512     
    Conv2D-323        [[1, 512, 7, 7]]      [1, 16, 7, 7]         73,728     
    Conv2D-324        [[1, 512, 7, 7]]      [1, 59, 7, 7]         271,872    
   IC_Conv2D-15       [[1, 512, 7, 7]]      [1, 512, 7, 7]           0       
  BatchNorm2D-101     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-308        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-102    [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-31   [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-325       [[1, 2048, 7, 7]]      [1, 512, 7, 7]       1,048,576   
  BatchNorm2D-103     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
      ReLU-33        [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
    Conv2D-328        [[1, 512, 7, 7]]      [1, 206, 7, 7]        949,248    
    Conv2D-329        [[1, 512, 7, 7]]      [1, 32, 7, 7]         147,456    
    Conv2D-330        [[1, 512, 7, 7]]      [1, 15, 7, 7]         69,120     
    Conv2D-331        [[1, 512, 7, 7]]      [1, 63, 7, 7]         290,304    
    Conv2D-332        [[1, 512, 7, 7]]      [1, 46, 7, 7]         211,968    
    Conv2D-333        [[1, 512, 7, 7]]      [1, 36, 7, 7]         165,888    
    Conv2D-334        [[1, 512, 7, 7]]       [1, 3, 7, 7]         13,824     
    Conv2D-335        [[1, 512, 7, 7]]       [1, 9, 7, 7]         41,472     
    Conv2D-336        [[1, 512, 7, 7]]      [1, 17, 7, 7]         78,336     
    Conv2D-337        [[1, 512, 7, 7]]       [1, 5, 7, 7]         23,040     
    Conv2D-338        [[1, 512, 7, 7]]       [1, 3, 7, 7]         13,824     
    Conv2D-339        [[1, 512, 7, 7]]       [1, 8, 7, 7]         36,864     
    Conv2D-340        [[1, 512, 7, 7]]      [1, 30, 7, 7]         138,240    
    Conv2D-341        [[1, 512, 7, 7]]      [1, 11, 7, 7]         50,688     
    Conv2D-342        [[1, 512, 7, 7]]       [1, 4, 7, 7]         18,432     
    Conv2D-343        [[1, 512, 7, 7]]      [1, 24, 7, 7]         110,592    
   IC_Conv2D-16       [[1, 512, 7, 7]]      [1, 512, 7, 7]           0       
  BatchNorm2D-104     [[1, 512, 7, 7]]      [1, 512, 7, 7]         2,048     
    Conv2D-327        [[1, 512, 7, 7]]     [1, 2048, 7, 7]       1,048,576   
  BatchNorm2D-105    [[1, 2048, 7, 7]]     [1, 2048, 7, 7]         8,192     
BottleneckBlock-32   [[1, 2048, 7, 7]]     [1, 2048, 7, 7]           0       
AdaptiveAvgPool2D-1  [[1, 2048, 7, 7]]     [1, 2048, 1, 1]           0       
     Linear-1           [[1, 2048]]           [1, 1000]          2,049,000   
===============================================================================
Total params: 25,610,152
Trainable params: 25,503,912
Non-trainable params: 106,240
-------------------------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 272.01
Params size (MB): 97.69
Estimated Total Size (MB): 370.28
-------------------------------------------------------------------------------

<class 'paddle.nn.layer.conv.Conv2D'>'s flops has been counted
<class 'paddle.nn.layer.norm.BatchNorm2D'>'s flops has been counted
<class 'paddle.nn.layer.activation.ReLU'>'s flops has been counted
Cannot find suitable count function for <class 'paddle.nn.layer.pooling.MaxPool2D'>. Treat it as zero FLOPs.
<class 'paddle.nn.layer.pooling.AdaptiveAvgPool2D'>'s flops has been counted
<class 'paddle.nn.layer.common.Linear'>'s flops has been counted
Total Flops: 4111514624     Total Params: 25610152
[1, 1000]
登录后复制
       
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT32, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
登录后复制
       

模型精度验证

解压数据集

In [6]
# 解压数据集!mkdir ~/data/ILSVRC2012
!tar -xf ~/data/data68594/ILSVRC2012_img_val.tar -C ~/data/ILSVRC2012
登录后复制
   

模型验证

In [8]
import osimport cv2import numpy as npimport paddleimport paddle.vision.transforms as Tfrom PIL import Image# 构建数据集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(256),
    T.CenterCrop(224),
    T.Normalize(
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True,
        data_format='HWC'
    ),
    T.ToTensor(),
])

model = paddle.Model(ic_resnet_50_k9(pretrained=True))
model.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))# 配置数据集val_dataset = ILSVRC2012('data/ILSVRC2012', transform=val_transforms, label_list='data/data68594/val_list.txt', backend='cv2')# 模型验证model.evaluate(val_dataset, batch_size=128)
登录后复制
       
{'acc_top1': 0.77162, 'acc_top5': 0.9348}
登录后复制
       

以上就是IC-CONV:使用高效空洞搜索的 Inception 卷积的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号