Stetman读论文小记:Understanding and Constructing Latent Modality Structures in Multi-Modal Representation

参与实验室相关课题精读的一篇论文。

全文介绍

        多模态学习中,如何将语言信息与图片信息相融合进行训练一直是研究的核心问题。现在主流的两种研究方向中,一种将两种模态的表示统一到一个编码器中,通常将图像和文本标记化为序列;另一种研究方法是用特定模态编码器分别表示图像和文本模态,并利用对比学习来调整模态,从而在多个下游应用中实现最先进的性能。

        尽管对比损失(Contrastive loss)被越来越多地用于从多种模态中学习表征,在极限情况下,对比损失的性质会促使模态在潜在空间中彼此完全匹配。然而,衔接和调整两种模态是否总能为下游任务带来益处(22年的一篇文章指出未必),模态对齐如何影响下游任务的表现仍是未决问题。 

        在本文中,基于信息论的论证,作者首先证明了对于下游预测任务来说,精确的模态对齐一般是次优的。因此,作者主张提高性能的关键在于有意义的潜在模态结构,而不是完美的模态对齐。为此,作者提出了三种构建潜在模态结构的通用方法:

        1)通过深度特征分离实现的模态内正则化 ;

        2)通过布朗桥进行的模态间正则化;

        3)通过几何一致性实现的内部间正则化;

并在两种流行的多模态表征学习框架上进行了广泛的实验:基于 CLIP 的双塔模型和基于 ALBEF 的融合模型。

构建潜在结构来改进多模态学习示例(如下图): 

### 在使用 Qt WebEngine 时设置 Qt::AA_ShareOpenGLContexts 和 QSGRendererInterface::OpenGLRhi 的解决方案 在 Qt WebEngine 初始化过程中,为了确保 OpenGL 上下文的正确共享以及渲染接口的兼容性,需要通过设置 `Qt::AA_ShareOpenGLContexts` 和 `QSGRendererInterface::OpenGLRhi` 来解决潜在的初始化问题。以下是详细的实现方法和注意事项: #### 1. 设置 `Qt::AA_ShareOpenGLContexts` `Qt::AA_ShareOpenGLContexts` 是一个应用程序属性,必须在创建 `QCoreApplication` 或 `QGuiApplication` 实例之前设置。此属性确保所有 OpenGL 上下文可以共享资源,这对于 Qt WebEngine 的正常运行至关重要[^1]。 代码示例如下: ```cpp #include <QGuiApplication> #include <QtWebEngine/qtwebengineglobal.h> #include <QtWebEngine> int main(int argc, char *argv[]) { // 设置共享 OpenGL 上下文属性 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // 创建应用程序实例 QGuiApplication app(argc, argv); // 初始化 Qt WebEngine 模块 QtWebEngine::initialize(); return app.exec(); } ``` #### 2. 使用 `QSGRendererInterface::OpenGLRhi` 从 Qt 6 开始,推荐使用 `QSGRendererInterface::OpenGLRhi` 作为场景图的渲染后端。这可以通过设置 `QT_QUICK_BACKEND` 环境变量为 `opengl` 或 `vulkan` 来实现[^2]。如果需要显式指定 OpenGL 渲染后端,可以在代码中进行如下配置: ```cpp #include <QGuiApplication> #include <QtWebEngine/qtwebengineglobal.h> #include <QtWebEngine> #include <QQuickWindow> int main(int argc, char *argv[]) { // 设置共享 OpenGL 上下文属性 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // 创建应用程序实例 QGuiApplication app(argc, argv); // 强制使用 OpenGL 渲染后端 QQuickWindow::setSceneGraphBackend(QQuickWindow::OpenGL); // 初始化 Qt WebEngine 模块 QtWebEngine::initialize(); return app.exec(); } ``` #### 3. 注意事项 - **设置顺序**:`Qt::AA_ShareOpenGLContexts` 必须在创建 `QGuiApplication` 实例之前设置,否则会导致无效操作[^1]。 - **渲染后端选择**:如果目标平台支持 Vulkan,可以考虑使用 `QSGRendererInterface::VulkanRhi` 以获得更好的性能[^2]。 - **软件渲染回退**:在某些嵌入式平台上,可能需要启用软件渲染模式(通过设置 `Qt::AA_UseSoftwareOpenGL`),但这通常会降低性能[^1]。 #### 4. 示例完整代码 以下是一个完整的初始化示例,结合了上述配置: ```cpp #include <QGuiApplication> #include <QtWebEngine/qtwebengineglobal.h> #include <QtWebEngine> #include <QQuickWindow> int main(int argc, char *argv[]) { // 设置共享 OpenGL 上下文属性 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // 创建应用程序实例 QGuiApplication app(argc, argv); // 强制使用 OpenGL 渲染后端 QQuickWindow::setSceneGraphBackend(QQuickWindow::OpenGL); // 初始化 Qt WebEngine 模块 QtWebEngine::initialize(); // 加载 QML 文件 QQmlApplicationEngine engine; const QUrl url(u"qrc:/main.qml"_qs); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(url); return app.exec(); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值