第一次进入探探软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路。不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了。

文件:url80.ctfile.com/f/25127180-741946595-f1cd04?p=551685 (访问密码: 551685)

再到后来,看到许多大神也推出了同样仿探探效果的博客,从头到尾阅读下来,写得通俗易懂,基本上没什么问题。于是,实现仿探探效果的想法再次出现在脑海中。那么,还犹豫什么,趁热来一发吧!就这么愉快地决定了。


图像融合分为三步:特征提取,融合策略,图像重建。

当前端到端的图像融合方法:基于GAN的、还有本文提出的

研究背景:当前设计的融合策略在为特定任务生成融合图像方面是比较困难的。

研究目的:提出一种基于可以学习的融合网络架构(RFN)来实现端到端的图像融合方法(RFN-Nest)。

研究方法:

​ 使用基于残差架构的残差网络结构(RFN)来取代传统融合方法。

​ 使用一种新颖的细节保留损失函数和特征增强损失函数来训练RFN。

​ 使用新颖的两阶段训练策略来完成融合模型的学习。(第一阶段训练自编码器(带有Nest),第二阶段使用损失函数来训练RFN)

主要贡献:

​ 提出了一种可学习的融合网络来取代传统手工设计融合策略,整体网络变成端到端。

​ 设计了两阶段的训练策略。先把自编码器的特征提取和特征重建能力训练好,然后再训练提出的残差融合网络结构RFN。

​ 设计了新的损失函数(包括图像细节损失函数和特征增强损失函数)来训练RFN(可以保持更多的细节和特征)。

​ 本文提出的融合方法在公共数据集和上达到了更好的结果(相比于其他主流的融合方法)。

网络结构
整体结构
网络包含三个方面:编码器、残差融合网络RFN(用来提取某个尺度的融合特征的深层次特征)、解码器(基于Nest连接)。

编码-解码器表现非常强大的特征提取能力和特征重建能力,由于RFN是可学习的结构。因此使用两阶段的训练策略来训练网络。

设计一种新的损失函数L(RFN)来训练提出的RFN网络,可以有效保证可见光图像的细节信息,同时保持红外图像的显著特征。

整体流程:首先将红外图像和可见图像作为输入,编码器可以提取多尺度特征(浅层深层)。然后RFN会对每个尺度提供的特征进行特征融合并对融合特征进行更深的提取。最后多个RFN将不同尺度的融合特征送到解码器中。基于Nest连接的解码器充分利用多尺度结构的融合特征来重建融合图像。

RFN(Residual fusion network)
​ RFN由6个卷积层组成,输入是编码器某一尺度(m=1,2,3,4)提取的红外图像特征和可见图像特征。输出是这一尺度的融合特征。

经过conv1和conv2将两种特征串联起来然后作为后面的输入(深层RFN保留显著特征)。conv6直接将两种特征融合(浅层RFN保留图像细节)。

解码器(Nest)
左边是负责不同尺度的RFN产生的融合特征。DCB是卷积块,包含两个卷积层。每一行都有短连接(类似密集连接)。不同行通过跨层连接(将解码器中多尺度深层特征连接起来)。

两阶段训练策略
​ 1.训练一个自动编码器网络来重建输入图像。

​ 编码器提取输入图像的多尺度深层特征,基于Nest的解码器根据多尺度深层特征重建输入图像。在自动编码器的过程中,使用L(auto)损失函数。

​ L(auto) = L(pixel) + &L(ssim)

等式右边分别是像素损失和结构相似性损失。

​ L(pixel) = || O - I ||F ^2

(输出图像像素 - 输入图像像素) 进行范数操作(|| || F^2)。

​ L(ssim) = 1 - SSIM(O,I)

SSIM是计算输出图像与输入图像的结构相似性,SSIM值越大,L(ssim)值越小,代表输入输出图像越一致。

​ 2.向自编码器中加入RFN,固定自编码器网络的参数等等,使用合适的损失函数训练RFN。

第一阶段训练的编码器网络去提取两个源图像的多尺度深度特征
一个RFN负责一个尺度的深度特征,并将深度特征融合。

设计一个新的损失函数L(RFN)去训练RFN L(RFN) = & L(detail) + L(feather)

L(detail)表示背景细节保留损失函数,L(feather)表示目标特征增强损失函数。

大多数背景信息来自可见光图像。因此L(detail)是针对输出图像和可见光图像。

​ L(detail)= 1 - SSIM(O, I(vi)) I(vi)表示输入的可见光图像

L(feather)可以去约束融合的深度特征来保留红外图像显著结构。 W(vi) 和W(ir)可以控制融合特征与可见光特征和红外特征的相关影响。通过调节W(vi) 和W(ir)来控制融合信息中的显著特征。M(这里是4)是不同尺度的数量。W1是一个向量,可以平衡损失幅度。

首先详细介绍训练阶段和测试阶段的实验设置之后,进行消融实验,对最后与其他方法进行定性比较。

训练阶段和测试阶段,都是将数据集中的图像转到灰度图像并reshape大小后,进行实验。使用6个指标进行方法评估,熵(En)、标准偏差(SD)、交互信息(MI)、融合伪影测量(Nabf)、差异相关性总和(SCD)、多尺度结构相似性(MS-SSIM)。

消融实验

​ L(detail)和 L(feature) 的消融实验:通过设置&=0 或者& = 700 来控制L(detail)是否存在,对实验结果的影响。

通过实验发现 & = 700时候 Wir = 6.0 和 Wvi = 3.0 时候实验效果比较好。

​ &取值的消融实验:由上一条可知& != 0 实验效果更好,这个实验来确定&具体取哪些值会更好。通过实验发现 & = 700达到最好的实验效果。

​ 两阶段训练策略的消融实验

本文采取的是两阶段的训练策略,通过消融实验来说明为什么采取两阶段的训练策略。

一阶段的训练意味着 编码器、解码器、RFN同时训练。结构如下图所示

两阶段训练是先训练编码器-解码器结构、再固定自编码器来训练RFN结构。如下图所示。

一阶段与两阶段除训练步骤不同以外,采取所有相同的设置进行比较。

通过结果可以看到两阶段训练达到的实验效果比一阶段实验效果好。原因如下:

​ 1.编码器和解码器在使用一阶段训练策略进行设计时可能不具有理想的特征提取和重建能力。(自我感觉,应该是自编码器与RFN一块训练可能不具有良好特征提取和重建能力,要不两阶段训练策略的第一阶段为什么是训练自编码器来获取特征提取和重建能力)

​ 2.更重要的是,由于RFN是我们融合网络中的关键,因此应仔细训练它以获得良好的融合性能。所以采取两阶段训练。

Nest connection的消融实验

本文采用的是带有Nest的解码器,通过对Nest connection的消融实验来对比有无Nest的实验效果。除了有无Nest其它一切都相同。

由下表可知,带有Nest的实验效果比不带Nest的实验效果更好。

融合策略的消融实验

本文采用的是基于RFN(基于残差的可学习的融合网络)融合策略,通过和其他手工设计的融合策略进行比较。

“add”: 提取的源特征进行相加得到融合特征。 (红外源特征与可见光图像特征 ,下面也是 )

“max”: 源特征中每个元素中选择最大的值作为融合特征。

“L1-norm”: 根据L1范数计算权重,源图像特征*权重 相加 得到融合特征。

“L*-norm”: 计算深度特征的全局池化操作中涉及的矩阵的奇异值之和,以获得融合权值 。

“SCA”: 使用的空间/通道注意力融合策略。用

Android仿探探卡片式滑动效果实现相关推荐

  1. android 探探卡片,仿探探首页卡片式滑动效果

    Introduction CardSwipeLayout - Use RecyclerView to achieve card swipe layout , like Tantan . Screens ...

  2. Android横向滚动卡片,RecyclerView+CardView实现横向卡片式滑动效果

    现在来介绍两种控件recyclerview和cardview,并通过实例将它们结合在一起实现一种横向卡片式滑动效果. 1.recyclerview recyvlerview是android sdk 新 ...

  3. Android横向滚动卡片,Android仿探探卡片式滑动效果实现

    前言 第一次进入探探软件界面,就被这种通过卡片式滑动来选择"喜欢/不喜欢"的设计所吸引了.当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路.不过毋庸置疑的是,这种效果 ...

  4. android 齿轮动画,Android仿正点闹钟时间齿轮滑动效果

    看到正点闹钟上的设置时间的滑动效果非常好看,自己就想做一个那样的,在网上就开始搜资料了,看到网上有的齿轮效果的代码非常多,也非常难懂,我就决定自己研究一下,现在我就把我的研究成果分享给大家.我研究的这 ...

  5. 仿百度动态Android源码,Android 仿百度手机助手首页滑动效果

    今天看到百度手机助手首页上的滑动效果非常nice,主要功能归结为: 1.当手指上划时,顶部搜索栏随手指移动距离而缩小到隐藏,隐藏后内容还是可以继续移动 2.手指下滑时,当显示内容达到第一个时,顶部搜索 ...

  6. 仿探探图片卡左右滑动效果

    效果图: 1.实现如图效果 2.根据接口请求数据并展示 3.实现如效果视频的切换效果 4.换一批 可以切换随机切换一批电影数据 添加依赖: 项目的build.gradle allprojects {r ...

  7. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  8. android 今日头条加载动画,Android 仿今日头条简单的刷新效果实例代码

    点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据.有四个选项卡. 前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里.做着做着遇到很多问题,都解决了.这个效果感 ...

  9. android 阅读器自动滚动,Android编程实现小说阅读器滑动效果的方法

    本文实例讲述了Android编程实现小说阅读器滑动效果的方法.分享给大家供大家参考,具体如下: 看过小说都知道小说阅读器翻页有好多种效果,比如仿真翻页,滑动翻页,等等.由于某种原因,突然想写一个简单点 ...

最新文章

  1. C++的STL 堆 实现获取数组堆第K大的数
  2. Flink如何取代JStorm,成为字节跳动流处理唯一标准?
  3. 5、kafka的操作
  4. Java高并发编程:活跃性危险
  5. php7 passthru,认识PHP 7虚拟机
  6. 2019-10-06 线性系统的理解
  7. step5 . day1 网络编程基础知识
  8. android studio 在gradle 中配置签名文件
  9. Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
  10. Flutter开发系列教程
  11. 剑指offer面试题[14]-调整数组顺序使奇数位于偶数前面
  12. linux 格式化ntfs u盘,手机u盘数据恢复linux格式化为ntfs格式
  13. C++ plus Primer 第六版中文版 带书签的 PDF
  14. Python文件去重代码
  15. 201871010114-李岩松《面向对象程序设计(java)》第四周学习总结
  16. linux格式化挂载的硬盘,linux格式化和挂载硬盘
  17. 正则入门 掌握字符组和量词
  18. 软件实训:手把手写一个简单的javaweb项目
  19. mysql 表的详细_MySQL的库表详细操作
  20. php实现智能音箱播放内容,智能音箱应用分析 智能音箱五大功能介绍

热门文章

  1. 六轴无人机装配问题小结(Pixhawk飞控、APM固件、电机装配、电调校准)
  2. 《搭建FTP服务器》
  3. kafka实现分布式事务解决方案
  4. pdfbox将多页pdf转成多张长图片
  5. 松下plc程序转c语言,用顺序功能图方式编写的松下PLC程序
  6. PLC程序的基本组成和编程语言
  7. 物流笔记 | 物流专业相关会议介绍
  8. 干掉联想电脑管家LAVservice进程
  9. FreeRTOS Cortex-M 中断管理
  10. foxmail登陆失败LOGIN Login error user suspended