当前位置: 首页 > AI > 文章内容页

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

时间:2025-07-19    作者:游乐小编    

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

ic-conv:使用高效空洞搜索的 inception 卷积 - 游乐网

引入

空洞卷积(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 卷积 - 游乐网                

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

通过 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 ConvIn [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,152Trainable params: 25,503,912Non-trainable params: 106,240-------------------------------------------------------------------------------Input size (MB): 0.57Forward/backward pass size (MB): 272.01Params size (MB): 97.69Estimated Total Size (MB): 370.28-------------------------------------------------------------------------------'s flops has been counted's flops has been counted's flops has been countedCannot find suitable count function for . Treat it as zero FLOPs.'s flops has been counted's flops has been countedTotal 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}
登录后复制        

热门推荐

更多

热门文章

更多

首页  返回顶部

本站所有软件都由网友上传,如有侵犯您的版权,请发邮件youleyoucom@outlook.com