AI科技大本营|Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码( 二 )
nn.Sigmoid
)
def forward( self, x):
y = self.avg_pool(x)
y = self.ca(y)
returnx * y
classBlock(nn.Module):
def __init__( self, conv, dim, kernel_size,):
super(Block, self).__init__
self.conv1=conv(dim, dim, kernel_size, bias=True)
self.act1=nn.ReLU(inplace=True)
self.conv2=conv(dim,dim,kernel_size,bias=True)
self.calayer= CALayer(dim)
self.palayer=PALayer(dim)
def forward( self, x):
res= self.act1( self.conv1(x))
res=res+x
res= self.conv2(res)
res= self.calayer(res)
res= self.palayer(res)
res += x
returnres
classGroup(nn.Module):
def __init__( self, conv, dim, kernel_size, blocks):
super(Group, self).__init__
modules = [ Block(conv, dim, kernel_size) for_ inrange(blocks)]
modules.append(conv(dim, dim, kernel_size))
self.gp = nn.Sequential(*modules)
【AI科技大本营|Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码】def forward( self, x):
res = self.gp(x)
res += x
returnres
classFFA(nn.Module):
def __init__( self,gps,blocks,conv=default_conv):
super(FFA, self).__init__
self.gps=gps
self.dim= 64
kernel_size= 3
pre_process = [conv( 3, self.dim, kernel_size)]
assert self.gps== 3
self.g1= Group(conv, self.dim, kernel_size,blocks=blocks)
self.g2= Group(conv, self.dim, kernel_size,blocks=blocks)
self.g3= Group(conv, self.dim, kernel_size,blocks=blocks)
self.ca=nn.Sequential(*[
nn.AdaptiveAvgPool2d( 1),
nn.Conv2d( self.dim* self.gps, self.dim //16,1,padding=0),
nn.ReLU(inplace=True),
nn.Conv2d( self.dim //16, self.dim*self.gps, 1, padding=0, bias=True),
nn.Sigmoid
])
self.palayer=PALayer( self.dim)
post_precess = [
conv( self.dim, self.dim, kernel_size),
conv( self.dim, 3, kernel_size)]
self.pre = nn.Sequential(*pre_process)
self.post = nn.Sequential(*post_precess)
def forward( self, x1):
x = self.pre(x1)
res1= self.g1(x)
res2= self.g2(res1)
res3= self.g3(res2)
w= self.ca(torch.cat([res1,res2,res3],dim= 1))
w=w.view( -1, self.gps, self.dim)[:,:,:,None,None]
out=w[:, 0,::]*res1+w[:, 1,::]*res2+w[:, 2,::]*res3
out= self.palayer( out)
x= self.post( out)
returnx + x1
使用
pythonmain.py --net= 'ffa'--crop --crop_size= 240--blocks= 19--gps= 3--bs= 2--lr= 0. 0001--trainset= 'its_train'--testset= 'its_test'--steps= 500000--eval_step= 5000
命令实现模型的训练功能 。
使用
pythontest.py --task= 'its or ots'--test_imgs= 'test_imgs'
来测试模型效果:
最终得到效果如下:
本文插图
暗通道去雾算法搭建
何恺明的暗通道先验(dark channel prior)去雾算法是CV界去雾领域很有名的算法 , 关于该算法的论文"Single Image Haze Removal Using DarkChannel Prior"一举获得2009年CVPR最佳论文 。 作者统计了大量的无雾图像 , 发现一条规律:每一幅图像的每一个像素的RGB三个颜色通道中 , 总有一个通道的灰度值很低 。 基于这个几乎可以视作是定理的先验知识 , 作者提出暗通道先验的去雾算法 。
推荐阅读
- 趣头条|颜值与动力共存,科技与豪华同在,瑞虎7就是一款性能全面的车
- 科技小新迷|2020年迎来了动力电池报废的高峰期,很多人后悔买新能源汽车
- 科技每天报告|应急车道换车胎被扣12分?车主冤枉,老司机:这些常识不懂该扣
- 海尔|海尔3D除菌舱科技对用户有啥好处?空调干净、空气更干净
- 对开门|颜值、保鲜、容量一个都不能少,十字对开门冰箱怎么选?
- 大佛|大佛无恙 古人智慧和现代科技留下伏笔
- |VV7科技版:我不是针对谁,最智能豪华自主品牌SUV正是在下
- DeepTech深科技|不吃药也能控制HIV复制?“精英控制者”罕见防御力之谜有解
- G时尚|赵丽颖快乐大本营预告照片,一身牛仔套装元气满满
- 车壹号|实力不允许RS-5低调!10万多,有30万豪华体验,领先科技