一图说清ShuffleNet中的通道混洗(附两种pytorch实现)

0.看ShuffleNet的通道混洗没看明白,后来在大神博客:https://blog.csdn.net/u011974639/article/details/79200559上看明白了。把自己理解写在下面方便像我这样的小白更清晰理解。

1.上图:通道混洗就是打乱原特征图通道顺序。

上图说的够明白了吧。首先确定自己的特征图通道数多少,再确定组数多少,然后将通道分组后作为输入(input)就可以了。

最终的输出还是组的形式,再将其拼接就是和原来输入一样shape的特征图了。只不过通道被打乱了。

2.pytorch代码:代码是和上面图通道数一一对应的,比对着看更香

代码1:严格按论文的感觉,自己打印下输入和输出对比上面图看 一目了然。

#第一种  严格按论文的感觉
a = torch.randn(1,15,3,3)
batchsize, channels, height, width = a.size()
groups = 3
channels_per_group = int(channels /groups)
x = a.view(batchsize, groups, channels_per_group, height, width)
x = x.transpose(1, 2).contiguous()
x = x.view(batchsize, -1, height, width)

代码2:写法不同,但输出和上面一模一样

#第二种  
x = torch.randn(1,15,3,3)
N, C, H, W = x.size()
groups = 3
out = x.view(N, groups, C // groups, H, W).permute(0, 2, 1, 3, 4).contiguous().view(N, C, H, W)

参考文献:1. https://blog.csdn.net/u011974639/article/details/79200559 

  • 20
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
通道先是由Kaiming He等人在2009年提出,在图像处理领域有广泛的应用。它能有效地去除图像的雾霾,增强图像的晰度和对比度。PyTorch是一个开源的深度学习框架,它提供了一种方便的方式来实现通道算法。 要在PyTorch实现通道算法,首先需要加载图像数据,并将其转换为PyTorch的张量格式。然后,可以利用PyTorch提供的各种卷积、池化和激活函数等操作来构建暗通道算法所需的神经网络模型。 在构建模型的过程,需要考虑如何设计网络结构和参数,以最大程度地提取图像的暗通道信息,并生成理想的去雾图像。可以尝试不同的网络结构和超参数组合,通过训练和验证来寻找最优的模型配置。 一旦构建好了暗通道算法的模型,就可以使用PyTorch提供的优化器和损失函数来进行训练。通过反向传播算法,模型会不断地优化自身的参数,以最小化损失函数,从而得到更准确的去雾效果。 最后,将训练好的暗通道算法模型应用到新的图像数据上,可以得到晰度更高、对比度更强的去雾图像。通过PyTorch提供的图像处理工具,还可以进一步对去雾图像进行后处理,以适应不同的应用场景。 总之,PyTorch提供了丰富的工具和接口,使得实现通道算法变得更加高效和灵活。通过合理地利用PyTorch的功能,可以快速地实现并优化暗通道算法,为图像处理领域带来更大的创新和发展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值