1.FusionForge简介
2.微博Lite无广告清爽APP,布局p布基于微博H5网页版打包的源码APP,微博去广告客户端
3.整理了16篇多模态融合(Multimodal Fusion)优质论文,局源含2023最新
4.VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!布局p布
5.什么是源码编译器?
6.图像处理(十一)exposure fusion 图像曝光融合
FusionForge简介
FusionForge是一个专为协同开发设计的全面平台,它集多种功能于一身,局源网页源码中下载地址旨在提升团队间的布局p布沟通与协作效率。首先,源码它的局源通讯工具模块包括论坛、邮件列表和新闻服务,布局p布为团队成员提供了一个开放的源码讨论和信息分享空间,促进思想交流和知识共享。局源
在开发工具方面,布局p布FusionForge提供了强大的源码支持,包括bug跟踪系统,局源帮助团队有效地追踪和解决项目中的问题;项目管理工具,帮助团队成员协调任务,跟踪进度,确保项目按计划进行;源码控制系统则确保代码版本的管理和同步,便于团队成员协同开发和代码审查。
社区工具是FusionForge的另一个亮点,它支持文件发布,使得团队成员可以方便地共享文件和资源;软件分类功能有助于用户快速找到所需的工具和资源;此外,Web托管服务使得FusionForge成为一个一站式的开发平台,团队的网站和应用程序可以直接托管在平台上,无需额外的部署步骤。
总的来说,FusionForge是一个功能丰富的开发环境,无论是日常的交流,还是项目的具体实施,都能为团队提供稳定、高效的支持,是现代协作开发的理想选择。
微博Lite无广告清爽APP,基于微博H5网页版打包的APP,微博去广告客户端
微博Lite是一款专注于提供清爽无广告体验的微博客户端,它是由微博H5网页版经过Fusion App定制打包而成。相比于传统微博应用,Lite版去除了启动时的开屏广告和信息流中的广告(已进行过测试),保持了基本功能,且采用了定制布局,将常用功能置于底部,使得操作更为便捷。特别适合轻度用户和低配置设备使用。
使用方法简单,只需长按底部按钮刷新网页。它的安全性也有保障,所有操作都基于微博的HTTPS站点进行,且无恶意后台代码。对于喜欢动手的用户,Fusion App允许基于源码进行个性化定制,自行打包。目前的wordpress微拍源码版本v1.0.2已经修复了播放视频闪退的bug,通过注入X5内核实现。
在更新方面,截至年1月日,v1.0.2版本还对界面进行了优化,如隐藏状态栏和顶栏,部分视频链接需要在微博详情中点击。早期的版本如v1.0.1还针对滑动操作做了调整,防止意外浏览其他页面。
下载链接如下:APK大小1. MB,微博Lite_1.0.2_X5内核版本和微博Lite_1.0.1版本均提供,源码大小KB。如果下载出现问题,可以通过raiseProductivity微信订阅号获取备用下载地址。
值得一提的是,微博H5版曾支持PWA(Progressive Web App),但相比于原生应用,其体验有所差距。Twitter和Instagram等国外社交网络的PWA体验接近于APP,而微博PWA在布局和功能上稍显不足。如果你追求更好的用户体验,可能需要考虑直接使用Chrome浏览器添加微博H5网页为桌面应用。
整理了篇多模态融合(Multimodal Fusion)优质论文,含最新
多模态融合是多模态学习领域中的关键问题,旨在综合处理来自不同模态(如语音、图像、文本等)的数据,提取有价值的信息和特征,并将这些信息融合,以增强系统的性能。近年来,这一领域已取得了多项值得关注的研究成果,以下将分享篇精选论文,涵盖多模态融合的理论、算法、应用等多个方面。欲获取论文及项目源码,请关注“学姐带你玩AI”公号(了解详情请参阅主页签名),回复“多模态融合”即可获取。
1.
传感器融合的外部多模态成像传感器标定:综述
本文提供多模态成像传感器标定的研究综述,包括基于运动和特征的标定方法,着重探讨目标基标定、无目标标定以及系统多模态传感器标定的最新进展。
2.
低质量多模态数据的可证明动态融合
该文提出一种动态多模态融合框架,通过理论分析揭示不确定性估计解决方案的鲁棒性,引入质量感知多模态融合框架,提高分类准确性和模型鲁棒性。
3.
用于道路检测的自适应跳过交叉融合
文中提出SkipcrossNets,一种用于自动驾驶任务中LiDAR点云与相机图像融合的网络,通过动态连接各层,增强特征传播与融合,减少模型参数。
4.
面向三维目标检测的android 护眼模式源码多传感器融合与时间一致性Transformer
FusionFormer框架用于3D物体检测,通过引入可变形注意力和残差结构,解决特征转换问题,实现统一的采样策略,提升检测性能。
5.
多模态语义映射用于物体检测和3D定位
本文介绍一种结合RGB-D相机和激光雷达的多模态语义映射框架,准确检测预定义对象,优于单传感器实验,特别适用于近和远距离障碍物。
6.
用于智能车辆RGB-T城市场景理解的动态双边交叉融合网络
DBCNet融合RGB-T图像,采用动态双边交叉融合机制,直接聚合多模态信息,优于深度学习基线方法,提升智能车辆的场景理解能力。
7.
多模态相互关注和迭代交互用于参考图像分割
提出多模态相互关注和迭代交互方法,增强模型对多模态信息的理解,通过连续和深入的交互,避免信息扭曲,显著提升参考图像分割性能。
8.
用于语义分割的多模态融合网络
TransFusion模型直接融合图像与点云,无需点云预处理,相较于基本层FCN模型,显著提升Vaihingen和Potsdam数据集的mIoU值。
9.
用于多模态3D对象检测的激光雷达-相机深度融合
DeepFusion模型集成激光雷达和相机特征,通过引入InverseAug和LearnableAlign技巧,实现通用多模态3D检测,性能优于现有方法。
.
通过深度感知增强的多曝光图像融合
DPE-MEF网络融合不同曝光图像,通过深度感知增强策略和色彩映射校正,显著提升单张图像的曝光质量。
.
基于傅里叶变换和对比学习的鲁棒框架
提出鲁棒多曝光图像融合框架,结合傅里叶变换与对比学习,处理极端和多样化曝光图像,通过像素强度转移和对比正则化损失,实现高质量融合效果。
.
基于multi-moda的雷达和相机特征之间的视差桥接
文中介绍一种在鸟瞰图下融合雷达与相机特征的新方法,用于3D目标检测,通过视图变换和点融合,实现雷达和相机特征的高效融合。
.
半监督医学图像分割的多模态对比互学习与伪标签再学习
Semi-CML框架利用对比互学习与伪标签再学习,提高半监督医学图像分割的性能,通过跨模态信息和预测一致性,弥补性能差距。
.
同质多模态特征融合和交互的三维物体检测
HMFI方法在自动驾驶场景中实现三维物体检测,通过跨模态特征融合与交互,避免信息损失,提升检测准确性和性能。
.
用于端到端自动驾驶的多模态策略融合
TransFuser Transformer模型集成图像与LiDAR表示,通过注意力机制实现策略融合,减少碰撞风险,表现优于基于几何的融合方法。
.
基于Transformer的多曝光图像融合框架
TransMEF框架使用Transformer与自监督多任务学习,通过三个自监督重建任务学习特征,Android 内存修改 源码设计结合CNN与Transformer模块的编码器,实现多曝光图像融合。
以上论文涵盖了多模态融合的多个角度,从标定、融合算法、应用场景到性能优化,为多模态研究提供了丰富资源。欲获取详细内容和代码,请参照“学姐带你玩AI”公号指引。
VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!
自动驾驶领域在年呈现出快速发展的态势,各大创业公司纷纷宣布获得大额融资。1月日,文远知行完成B轮3.1亿美元融资;1月日,滴滴获得3亿美元融资;2月8日,小马智行获得1亿美元C+轮融资;3月日,Momenta完成C轮总计5亿美元的融资;4月日,大疆创新推出智能驾驶业务品牌“大疆车载”,向汽车企业提供自动驾驶解决方案;4月日,小鹏汽车发布搭载激光雷达的智能汽车小鹏P5,成为全球第一款量产的激光雷达智能汽车;4月日,图森未来在美股上市,被称为“全球自动驾驶第一股”;4月日,华为和北汽合作实现上海城区通勤无干预自动驾驶,成为全球唯一城市通勤自动驾驶量产车。
在自动驾驶、无人机、增强现实、机器人导航等技术领域中,定位和建图(SLAM)发挥着至关重要的作用,而视觉惯性里程计(VIO)作为SLAM算法中的一个重要分支,其理论复杂度较高。对VIO的掌握能力将直接影响到SLAM从业者的专业水平。VINS-Mono是由香港科技大学飞行机器人实验室(沈邵劼团队)在年开源的知名单目VIO算法。该算法由第一作者秦通(华为天才少年)提出,并在年获得IEEE Transactions on Robotics期刊的最佳论文奖。VINS-Mono使用单目相机和惯性测量单元(IMU)实现了视觉和惯性联合状态估计,同时能够估计传感器外参、IMU零偏以及传感器时延,是一款经典且优秀的VIO框架。
VINS-Mono在室内、室外大尺度以及高速飞行的无人机场景中均表现出色。在手机AR应用中,该算法优于当前最先进的Google Tango效果。同时,VINS-Mono也是VINS-Fusion算法的基础,应用于汽车SLAM时同样展现出高精度和稳定性。
在自动驾驶、无人机、增强现实、机器人导航等领域的岗位中,掌握VINS-Mono算法成为了关键技能之一。android nfc源码分析为此,计算机视觉life团队推出了独家课程《VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲》。该课程通过详细的步骤解读、疑难问题解析、结合作者回复的issue理解,帮助学员深入掌握VINS-Mono背后的原理。课程内容覆盖从基础理论到复杂公式的推导,通过白板从零开始手推公式的方式,使学员能够理解复杂公式的形成过程,从而真正掌握VINS-Mono的原理。课程价格根据购买时间调整,购买越晚价格越高。如有疑问,学员可加入QQ群()咨询,购买成功后会自动显示内部答疑群。
什么是编译器?
编译器
编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。
[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。
一个现代编译器的主要工作流程如下:
* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)
工作原理
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。
预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。
编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。
编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraprocedural)还是函数之间(interprocedural)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。
上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。
图像处理(十一)exposure fusion 图像曝光融合
本意是为了学习HDR,高动态范围成像,但HDR概念对我来说太复杂了,涉及到硬件和软件。我的目标是跳过硬件和tone mapping,只做最简单的多曝光融合,如下列图像
融合成一张
搜索曝光融合,出现的是《exposure fusion》这篇文章,像素级别的融合,再加上多尺度的平滑处理,从现在的眼光来看,是非常简单的,OpenCV也实现了这个算法,在lightroom中也有应用。
尽管原理简单,但实现上有坑,C++写了好几遍过不了,换成Python也错误,看了官方的matlab源码才知道坑。
论文提出了三种计算每个像素融合权重的的方法
对比度
在过曝图像或严重低曝光的区域,图像都基本是或0,因此这些区域是很平滑的,梯度信息几乎为0,这些也是曝光融合中要舍弃的区域——过曝部分缺乏细节,低曝光区域缺乏细节和亮度。因此,论文提出用laplace算子提取图像的梯度信息,梯度信息越小的像素在融合时占据的比重就越小,相反梯度信息越大的像素的比重就越大。对输入的第[公式]张图像[公式]
[公式]
饱和度
同样针对过曝或严重低曝光,二者的饱和度是接近于0的,而那些饱和度高的区域常常是需要保留的区域,因此论文通过三通道的标准差来衡量饱和度大小,以此得到不同的比重
[公式]
亮度
亮度越接近0或者的,很可能就是处在过曝或严重低曝光区域,而亮度在附近的常常可以认为是曝光良好的区域,这些区域的信息在融合过程中要尽量保留,比重尽量大,如下
[公式]
[公式]是方差,论文中取0.2。以上公式是我具体实现时使用的,三通道的比重相乘,为了简单,也可以提取出YCrCb通道,用Y通道算也可以。良好曝光不一定取0.5。
上面是人为提出的一些先验知识,接下来验证下是否有效
可以看出,对于严重低曝光的图像,响应值比较高的就是光源附近的细节,这些细节得以保留,而过曝图像往往在这些地方是没有细节的
同上,以亮度为例,该图在天空区域的曝光是良好的,而且具有一定的细节,得以保留
对于这一类局部过曝的图像,背光区域反而得到了较好的曝光,所以图中气球的细节和亮度响应值比较高,得以保留,而天空和光源部分的灰度值偏离、梯度也较小,因此这些过曝的区域的响应值(比重)很小,在融合时被舍弃。
上面根据对比度、饱和度、曝光三方面可以得到每个像素点在融合时的比重,三者合在一起
[公式]
为了防止多张图像融合,出现过高或者过低的值,要对[公式]进行归一化
[公式]
多张图像[公式],各自对应一张归一化的比重图[公式],融合
[公式]
上面的方法非常简单,但会得到十分粗糙的结果。我在具体实现时,得到的结果会出现很多黑色和纯白色的斑点(灰度值为0),而且存在一些光晕,如下:
经过我追本溯源,发现这是由于多张图像之间的灰度跳变太大导致的——假设现在有图像序列[公式],在点[公式]处,比重值分别是[公式],因此在融合时,[公式]点的灰度值主要取决于[公式];在旁边一个点,[公式]的比重值却是[公式],融合时就主要取决于[公式],而从[公式]的灰度值跳变太大,因此最后看起来有很多噪声。相邻点的比重相差会这么大,个人看法是比重由对比度、饱和度、亮度相乘得到,实际上,很多区域都是接近于0,差不多1e-4的值,三个相乘量级就到了1e-,任意一个指标突然变大变小,权重就一边倒了,基本集中在某一张图像上。理想情况是一系列对比度、饱和度、亮度平滑变化的图像,就不会出现这种问题,但实际也不可能拍这么多精细的图像。
如何解决?一个很直观的想法就是对每张图的权重图做平滑处理,缓解灰度跳变,重新归一化后,再融合,效果如下:
看得出来,有所改善,但还是不够平滑,存在一定程度的光晕,继续加大力度
又好一点了,但天空还是很明显
好像又好一点了!但还是存在一些光晕(后面怎么解决的还不清楚)。
但是每次都对原始分辨率做这么大的计算吗?
这又回到了上次总结的拉普拉斯金字塔融合,构造金字塔解决分辨率过大和滤波核过大的问题,这也是论文提出的方法
使用laplace金字塔,对每张图像分解出laplace金字塔,对应的比重图分解出高斯金字塔,根据比重对laplace金字塔做融合,从低分辨率开始上采样叠加同尺度的融合后laplace细节,即可得到结果,如下:
效果有点惊艳,不仅融合了多张图像中的细节,还保持了良好的曝光,和之前的对比还是很明显的,如过曝这个区域的细节还是很不错的!但为什么和之前直径的高斯模糊相比,解决了光晕,这一点是我暂时无法理解的。
算法十分简单,只要按部就班算出每个点的对比度、饱和度、曝光,结合起来,再加一个laplace金字塔分解,问题貌似就解决了。但我在实际写的时候,得到的结果却是这样的:
饱和度太高了,而且细节也没有得到保留。。。。。。一开始还以为是C++,我索引写错了之类的,重写了几遍都过不了,换成python也是一样的,也是错的,后面还是参考了官方的matlab代码,才发现不同:
即下面两张图的对比
当我把上采样的对象改成了官方的形式,就正常了。
至于为什么会这么差,我想可能是因为一路上采样,丢失的信息太多了,所以采用之前的高斯金字塔的次一级分辨率上采样可以减少信息损失。
代码见我的github
Python 3
鬼影
本篇讨论的多曝光图像融合,默认都是对齐的,但实际上不同时间拍的图像,会因相机抖动和环境的风吹草动,而导致内容有差别,使得最后的融合结果可能出现鬼影,而鬼影(ghost effect)也是HDR融合要解决的主要问题之一。
移动
考虑下面这个例子
可以看到画面中的三个人物都存在较明显的移动,经过上面的exposure fusion像素级融合,就会得到下面的结果
这一类情况下,不保证像素级的对齐,就会出现鬼影。
模糊
和多曝光融合类似的是多焦点融合,不同图像存在不同的局部模糊
保留对比度、饱和度,不计算曝光,得到的融合结果如下:
效果感觉还行,但又不很行 ! 如IMAGE块区域,第一张图有点类似于运动模糊的效果了,在曝光融合这里就近似于"没对齐",因此融合的结果有一些虚影、鬼影 !
虽然存在如上问题,但这个方法还是给后续的一些研究提供了思路,融合不断频段的信息做图像融合,不仅仅是曝光融合,多焦点融合等。
参考资料