当前位置: 首页 > news >正文

【Changer解码头详解及融入neck层数据的实验设计】

Changer解码头详解

ChangerEx中的 Changer 解码头(定义在 [changer.py](file://opencd\models\decode_heads\changer.py))是基于双时相输入的,用于遥感变化检测任务。下面我将详细解释:


🎯 一、解码头输入数据来源

输入结构:

  • 输入类型:来自 Backbone 的多尺度特征图(通常为 ResNet 的输出)
  • 输入形式:一个列表,包含多个层级的特征图(例如 [feat1, feat2, feat3, feat4]
  • 每个特征图形状(B, C, H, W),其中:
    • B: batch size
    • C: 通道数
    • H, W: 高度和宽度

特别处理(双时相):

inputs = self._transform_inputs(inputs)
inputs1 = []
inputs2 = []
for input in inputs:f1, f2 = torch.chunk(input, 2, dim=1)inputs1.append(f1)inputs2.append(f2)
✅ 解释:
  • 每个输入特征图在通道维度上被拆分为两个部分(dim=1),分别代表两个时相的特征。
  • inputs1: 第一时相的特征列表
  • inputs2: 第二时相的特征列表

🧱 二、解码头内部处理流程

1. base_forward() —— 特征变换与融合

out1 = self.base_forward(inputs1)
out2 = self.base_forward(inputs2)
base_forward() 内容如下:
def base_forward(self, inputs):outs = []for idx in range(len(inputs)):x = inputs[idx]conv = self.convs[idx]outs.append(resize(input=conv(x),size=inputs[0].shape[2:],mode=self.interpolate_mode,align_corners=self.align_corners))out = self.fusion_conv(torch.cat(outs, dim=1))return out
🔍 处理步骤:
步骤功能
1. ConvModule对每个层级的特征进行 1x1 卷积降维
2. resize()将所有层级特征统一尺寸(上采样或下采样)
3. torch.cat() + fusion_conv所有层级拼接后使用 1x1 卷积进一步融合
📌 输出:
  • out1, out2: 两个时相融合后的单尺度特征图 (B, C/2, H, W)

2. FDAF 融合 —— 流式双对齐融合

out = self.neck_layer(out1, out2, 'concat')
neck_layer 是定义的 [FDAF]模块(流式双对齐融合)
class FDAF(BaseModule):def forward(self, x1, x2, fusion_policy=None):...if fusion_policy == None:return x1_feat, x2_featoutput = FeatureFusionNeck.fusion(x1_feat, x2_feat, policy)return output
🔍 处理逻辑:
  1. 生成光流预测

    flow = self.flow_make(output)  # output = cat([x1, x2], dim=1)
    
  2. 应用光流偏移

    x1_feat = warp(x1, f1) - x2
    x2_feat = warp(x2, f2) - x1
    
  3. 根据 fusion_policy 进行融合

    • 支持 'concat', 'sum', 'diff', 'abs_diff'
    • 默认使用 'concat'
📌 输出:
  • out: 融合后的特征图 (B, C, H, W)

3. MixFFN 投影头 —— 增强判别能力

out = self.discriminator(out)
[MixFFN]结构如下:
class MixFFN(BaseModule):def forward(self, x, identity=None):out = self.layers(x)if identity is None:identity = xreturn identity + self.dropout_layer(out)
🔍 处理逻辑:
  1. 使用 1x1 Conv + 3x3 Depthwise Conv + GELU 提取局部位置信息
  2. 加入残差连接和 Dropout
📌 输出:
  • out: 经过 FFN 增强后的特征图 (B, C, H, W)

4. 最终分类输出

out = self.cls_seg(out)
cls_seg 是最终的分类头(通常是 1x1 卷积)
self.cls_seg = nn.Conv2d(channels, num_classes, kernel_size=1)
📌 输出:
  • out: 分类结果 (B, num_classes, H, W)
    • num_classes = 2(变化 / 不变化)

🧠 总结:整个解码头流程图

Backbone Features (multi-scale)↓
Split into Time Phase 1 & 2↓
Base Forward: Resize + Fuse Layers↓
FDAF Fusion (Flow Dual Alignment)↓
MixFFN Projection Head (Enhance Discrimination)↓
Final Classification Head → Output Logits (B, 2, H, W)

📝 总结关键点

模块输入输出功能
base_forward多级特征图单尺度特征 (B, C/2, H, W)特征融合
[FDAF]双时相特征融合特征 (B, C, H, W)光流引导的对齐融合
[MixFFN]融合特征增强特征 (B, C, H, W)局部增强+残差连接
cls_seg增强特征分类图 (B, 2, H, W)最终分割输出

融入neck层数据的实验设计

为了提高对变化类别的检测率(change detection performance),我们需要在 Changer 解码头中合理地引入 Neck 层输出的增强特征。结合你当前的模型结构和数据流,我们可以从以下两个角度分析:


🎯 一、目标:提升变化类别检测率

关键点:

  • 变化区域通常具有较小尺度或边界模糊。
  • 需要更精确的时相间差异建模与多尺度融合。

手段:

  • 在解码头早期阶段引入 跨时相注意力机制(如 GlobalD)
  • 在 Neck 输出后使用 更精细的双对齐融合策略(如 FDAF)
  • 保留多尺度信息,并在最终分类前进行更强的判别性建模

🔍 二、当前 Changer 解码头流程回顾

def forward(self, inputs):# Step 1: 获取 Backbone 多级特征并拆分为两个时相inputs = self._transform_inputs(inputs)inputs1, inputs2 = split_into_two_phases(inputs)# Step 2: 分别处理两个时相 → 单时相特征提取out1 = base_forward(inputs1)out2 = base_forward(inputs2)# Step 3: 使用 FDAF 进行双对齐融合fused_feat = neck_layer(out1, out2, 'concat')# Step 4: MixFFN 增强判别能力enhanced_feat = discriminator(fused_feat)# Step 5: 最终分类头输出logits = cls_seg(enhanced_feat)

✅ 三、建议:将 Neck 层输出加入到以下位置效果最佳

推荐方案:在 Step 2 后、Step 3 前插入 Neck 层

修改示意如下:
out1 = self.base_forward(inputs1)   # (B, C/2, H, W)
out2 = self.base_forward(inputs2)   # (B, C/2, H, W)# 👇 插入 Neck 层(GlobalD + FDAF)→ 输出融合后的特征
neck_out = self.neck([out1], [out2])  # 支持多尺度输入
fused_feat = neck_out[0]  # (B, C, H, W)# 继续后续操作不变
out = self.discriminator(fused_feat)
out = self.cls_seg(out)

📌 四、为什么这样设计最有效?

步骤是否适合插入 Neck 层理由
Step 1:Backbone 输出后❌ 不推荐特征尚未统一尺寸,不利于全局建模
Step 2:base_forward 后✅ 强烈推荐- 尺寸统一
- 通道数较低,计算效率高
- 是双时相特征首次融合的理想时机
Step 3:FDAF 融合中⚠️ 可选如果你希望用 Neck 替代原生的 FDAF,则可在此替换
Step 4:MixFFN 前⚠️ 次优特征已较强,但可能丢失细粒度信息
Step 5:cls_seg 前❌ 不推荐信息已高度抽象,难以捕捉局部变化

🧱 五、完整建议配置流程(含 Neck)

修改后配置示例:

model = dict(type='DIEncoderDecoder',backbone=dict(...),neck=dict(type='FeatureFusionNeckWithGlobalDandFDAF',  # 👈 自定义 Neckin_channels=[128],  # base_forward 输出为 128 通道embed_dim=128,num_heads=8,axial_strategy='row'),decode_head=dict(type='Changer',in_channels=[64, 128, 256, 512],channels=128,num_classes=2,...)
)

🧩 六、自定义 Neck 实现建议

你可以创建一个文件:

from mmengine.model import BaseModule
from opencd.models.utils.interaction_layer import GlobalD
from opencd.models.decode_heads.changer import FDAF
import torch@MODELS.register_module()
class FeatureFusionNeckWithGlobalDandFDAF(BaseModule):def __init__(self, in_channels,embed_dim,num_heads,axial_strategy='row'):super().__init__()self.global_d = GlobalD(embed_dim=in_channels[0], num_heads=num_heads, axial_strategy=axial_strategy)self.fdaf = FDAF(in_channels=in_channels[0])def forward(self, x1_list, x2_list):assert len(x1_list) == len(x2_list)fused_features = []for i in range(len(x1_list)):# Step 1: 应用 GlobalDglobal_d_x1, global_d_x2 = self.global_d(x1_list[i], x2_list[i])# Step 2: 应用 FDAFfdaf_out = self.fdaf(global_d_x1, global_d_x2, fusion_policy='concat')fused_features.append(fdaf_out)return tuple(fused_features)

📊 七、实验验证建议

Neck 类型融合方式建议训练轮次验证指标
原生 FDAF'concat'20k ~ 40kmIoU/mFscore
Neck + FDAF['GlobalD' → 'FDAF']同上↑ 提升变化区域识别精度
Neck + abs_diff['GlobalD' → 'abs_diff']同上更关注差值,适用于小变化区域

🧠 总结:推荐做法一览

模块插入位置效果
GlobalDbase_forward 输出之后提升跨时相交互建模
FeatureFusionNeckNeck 层整合增强空间对齐与融合
[MixFFN]Neck 输出之后增强判别力
ClsSeg最终分类输出变化图

相关文章:

【Changer解码头详解及融入neck层数据的实验设计】

Changer解码头详解 ChangerEx中的 Changer 解码头(定义在 [changer.py](file://opencd\models\decode_heads\changer.py))是基于双时相输入的,用于遥感变化检测任务。下面我将详细解释: 🎯 一、解码头输入数据来源 输…...

深度学习推理引擎---OpenVINO

OpenVINO(Open Visual Inference & Neural Network Optimization Toolkit)是英特尔开发的开源工具套件,旨在优化和加速深度学习模型在英特尔硬件(CPU、GPU、VPU、FPGA等)上的推理性能,同时支持从训练到…...

JavaScript splice() 方法

1. JavaScript splice() 方法 1.1. 定义和用法 splice() 方法用于添加或删除数组中的元素。   注意:这种方法会改变原始数组。   返回值:如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。 1.2. …...

数据库故障排查指南:解决常见问题,保障数据安全与稳定

数据库故障排查指南:解决常见问题,保障数据安全与稳定 📖 前言 数据库作为现代应用的核心组件,其稳定性直接影响业务连续性。本文总结六大常见数据库故障场景,提供快速排查思路与解决方案,助你化身"…...

gem5-gpu教程 第十章 关于topology 的Mesh network

问题一、L1和L2缓存之间的VI_hammer_fusion中指定了互连延迟,如何更改这些数字吗? 我已经实现了一个网格拓扑来连接cpu内核和GPU SM,并对VI_hammer*和网格文件进行了所有必要的更改。我的问题是: 1. There is interconnect latency specified in VI_hammer_fusion betwee…...

【C/C++】C++返回值优化:RVO与NRVO全解析

文章目录 C返回值优化:RVO与NRVO全解析1 简介2 RVO vs NRVO3 触发条件4 底层机制5 应用场景6 验证与限制7 性能影响8 补充说明9 总结 C返回值优化:RVO与NRVO全解析 返回值优化(Return Value Optimization, RVO)是编译器通过消除临…...

使用 Kaniko来构建镜像

使用 Kaniko来构建镜像 Kaniko 是一种专注于容器镜像构建的开源工具,其核心设计理念与 Docker 存在显著差异。以下从功能定位、技术实现和适用场景三方面进行对比分析: 一、Kaniko 的核心特性 无需 Docker 守护进程 Kaniko 直接在容器或 Kubernetes 集…...

2025.05.17淘天机考笔试真题第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 奇偶平衡树分割问题 问题描述 K小姐是一位园林设计师,她设计了一个由多个花坛组成的树形公园。每个花坛中种植了不同数量的花…...

history模式:让URL更美观

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

算法:分治法

实验内容 在一个2kⅹ2k个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称该方格为特殊方格,且称该棋盘为一特殊棋盘。 显然,特殊方格出现的位置有4k 种情况,即k>0,有4k 种不同的特殊棋盘 棋盘覆盖&#xff1a…...

豆粕ETF投资逻辑整理归纳-20250511

目录 一、什么是豆粕 基本概念 豆粕上游生产国 豆粕下游消耗方 二、豆粕ETF 概念 策略 展期操作 超额收益 行情波动 豆粕资产的低相关性 三、展期收益 Contango升水结构和Backwardation贴水结构 豆粕的贴水逻辑 还有哪些品种拥有长期的展期收益 四、其他相关信…...

使用 Python 连接 Oracle 23ai 数据库完整指南

方法一:使用 oracledb 官方驱动(推荐) Oracle 官方维护的 oracledb 驱动(原 cx_Oracle)是最新推荐方案,支持 Thin/Thick 两种模式。 1. 环境准备 pip install oracledb2. 完整示例代码 import oracledb import getpass from typing import Unionclass Oracle23aiConn…...

构建集成差异化灵巧手和先进机器人控制技术的自动化系统

介绍程序 1.流程分析 通过流程分析审查应用机器人自动化的可行性。 2.系统设计 选择合适的机器人(机械臂、夹持器、视觉系统等),并通过详细的任务分析设计最佳系统。 3.内部测试 建立内部测试平台并解决任何问题。 4.现场测试 现场设…...

题单:汉诺塔问题

题目描述 如下图所示,设有 nn 个大小不等的中空圆盘,按照从小到大的顺序叠套在立柱 A 上,另有两根立柱 B 和 C 。 现在要求把全部圆盘从 A 柱(称为源柱)移到 C 柱(称为目标柱),移动…...

Unable to get end effector tips from jmg

这个错误信息表明在使用MoveIt2时,moveit_visual_tools无法从关节模型组(Joint Model Group,简称JMG)中获取末端执行器(End Effector,简称EE)的尖端信息。这通常是因为配置文件中缺少相关信息&a…...

flutter flutter run 运行项目卡在Running Gradle task ‘assembleDebug‘...

flutter run --verbose在运行flutter run 可以看到是卡在哪一步 最重要的就是自己查看日志,具体哪一步有问题flutter run --verbose使用这个,运行了项目会将错误信息放在控制台 可能原因 静态资源问题如果:图片、字体文件等没有在pubspec.yam…...

STM32烧录程序正常,但是运行异常

一、硬件配置问题 BOOT引脚设置错误 STM32的启动模式由BOOT0和BOOT1引脚决定。若设置为从RAM启动(BOOT01,BOOT10),程序在掉电后无法保存,导致复位后无法正常运行。应确保BOOT00(从Flash启动)15。…...

TTS:F5-TTS 带有 ConvNeXt V2 的扩散变换器

1,项目简介 F5-TTS 于英文生成领域表现卓越,发音标准程度在本次评测软件中独占鳌头。再者,官方预设的多角色生成模式独具匠心,能够配置多个角色,一次性为多角色、多情绪生成对话式语音,别出心裁。 最低配置…...

ecmascript 第6版特性 ECMA-262 ES6

https://blog.csdn.net/zlpzlpzyd/article/details/146125018 在之前写的文章基础上,ES6在export和import的基础外,还有如下特性 特性说明let/const块级作用域变量声明>箭头函数Promise异步编程...

2024 山东省ccpc省赛

目录 I(签到) 题目简述: 思路: 代码: A(二分答案) 题目简述: 思路: 代码: K(构造) 题目: 思路: 代…...

角点特征:从传统算法到深度学习算法演进

1 概述 图像特征是用来描述和分析图像内容的关键属性,通常包括颜色、纹理和形状等信息。颜色特征能够反映图像中不同颜色的分布,常通过 RGB 值或色彩直方图表示。纹理特征则关注图像表面的结构和细节,例如通过灰度共生矩阵或局部二值模式&…...

免费代理IP服务有哪些隐患?如何安全使用?

代理IP已经成为互联网众多用户日常在线活动中不可或缺的一部分。无论是为了保护个人隐私、突破地理限制,还是用于数据抓取、广告投放等商业用途,代理IP都扮演着关键角色。然而,市场上存在大量的免费代理IP服务,尽管它们看起来颇具…...

深入了解 VPC 端点类型 – 网关与接口

什么是VPC 端点 VPC 端点(VPC Endpoint)是 Amazon Web Services (AWS) 提供的一种服务,允许用户在 Virtual Private Cloud (VPC) 内部安全地访问 AWS 服务,而无需通过公共互联网。VPC 端点通过私有连接将 VPC 与 AWS 服务直接连接…...

Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用

在现代移动应用中,屏幕采集已成为一个广泛使用的功能,尤其是在实时直播、视频会议、远程教育、游戏录制等场景中,屏幕采集技术的需求不断增长。Android 平台为开发者提供了 MediaProjection API,这使得屏幕录制和采集变得更加简单…...

信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)

个人笔记整理---仅供参考 计算题 案例分析里的计算题就是进度、挣值分析、预测技术。主要考査的知识点有:找关键路径、求总工期、自由时差、总时差、进度压缩资源平滑、挣值计算、预测计算。计算题是一定要拿下的,做计算题要保持头脑清晰,认真读题把PV、…...

全栈项目搭建指南:Nuxt.js + Node.js + MongoDB

全栈项目搭建指南:Nuxt.js Node.js MongoDB 一、项目概述 我们将构建一个完整的全栈应用,包含: 前端:Nuxt.js (SSR渲染)后端:Node.js (Express/Koa框架)数据库:MongoDB后台管理系统:集成在同…...

Linux:基础IO

一:理解文件 1-1 狭义理解 文件存储在磁盘中,由于磁盘是永久性存储介质,因此文件在磁盘上的存储是永久性的;磁盘也是外设,因此磁盘上对文件的所有操作本质是对外设的输入和输出 1-2 广义理解 Linux下一切皆文件&am…...

MySQL 索引优化以及慢查询优化

在数据库性能优化中,索引优化和慢查询优化是两个关键环节。合理使用索引可以显著提高查询效率,而识别和优化慢查询则能提升整体数据库性能。本文将详细介绍MySQL索引优化和慢查询优化的方法和最佳实践。 一、MySQL 索引优化 1.1 索引的基本概念 索引是…...

Leaflet使用SVG创建动态Legend

接前一篇文章,前一篇文章我们使用 SVG 创建了带有动态文字的图标,今天再看看怎样在地图上根据动态图标生成相关的legend,当然这里也还是使用了 SVG 来生成相关颜色的 legend。 看下面的代码,生成了一个 svg 节点,其中…...

使用 Vue Tour 封装一个统一的页面引导组件

项目开发过程中需要实现用户引导功能,经过调研发现一个好用的 Vue 插件 vue-tour,今天就来分享一下我是如何基于 vue-tour 封装一个统一的引导组件,方便后续在多个页面复用的。 📦 第一步:安装 vue-tour 插件 首先安装…...

OpenResty 深度解析:构建高性能 Web 服务的终极方案

引言 openresty是什么?在我个人对它的理解来看相当于嵌入了lua的nginx; 我们在nginx中嵌入lua是为了不需要再重新编译,我们只需要重新修改lua脚本,随后重启即可; 一.lua指令序列 我们分别从初始化阶段,重写/访问阶段,内容阶段,日志…...

赋能企业级移动应用 CFCA FIDO+提升安全与体验

移动办公与移动金融为企业有效提升业务丰富性、执行便捷性。与此同时,“安全”始终是移动办公与移动金融都绕不开的话题。随着信息安全技术的发展,企业级移动应用中安全与便捷不再是两难的抉择。 中金金融认证中心(CFCA)作为经国…...

Redis 数据类型与操作完全指南

Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。与传统的关系型数据库不同,Redis 提供了丰富的数据类型和灵活的操作方式,这使得它能够高效地解决各种不同场景下的数据存储和处理问题。本文将全面介绍 R…...

ArrayList-集合使用

自动扩容,集合的长度可以变化,而数组长度不变,集合更加灵活。 集合只能存引用数据类型,不能直接存基本数据类型,除非包装 ArrayList会拿[]展示数据...

深入解析Spring Boot与Redis集成:高效缓存实践

深入解析Spring Boot与Redis集成:高效缓存实践 引言 在现代Web应用开发中,缓存技术是提升系统性能的重要手段之一。Redis作为一种高性能的键值存储数据库,广泛应用于缓存、会话管理和消息队列等场景。本文将详细介绍如何在Spring Boot项目中…...

8天Python从入门到精通【itheima】-11~13

目录 11节-PyCharm的安装和基础使用: 1.第三方IDE(集成开发工具) 2.PyCharm的所属——jetbrains公司 3.进入jetbrains的官网,搜索下载【官网自带中文,太友好了,爱你(づ ̄3&#x…...

day33-网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…...

CMake基础及操作笔记

CMake 基础与操作:从入门到精通 前言 CMake 是一个功能强大、跨平台的构建工具,广泛用于 C 项目管理。它通过简洁的配置文件(CMakeLists.txt)描述编译过程,生成适用于不同平台的构建脚本(如 Makefile 或 …...

使用lvm进行磁盘分区

使用lvm进行磁盘分区 目的: 使用/dev/vdb创建一个5g的逻辑卷挂载到/mnt/lvmtest 前提: /dev/vdb是一块干净的空磁盘,数据会被清空!!! 1. 创建物理卷(PV): pvcreate /dev/sdb2. 验证&#xf…...

Java的线程通信机制是怎样的呢?

核心观点:线程通信本质是状态同步与数据传递的协同控制 (类比测试团队协作:如同测试用例执行需要同步进度,测试数据需要跨线程传递) 一、基础通信机制(附测试验证方法) 1. 共享内存(最常用但最危险) // 测试典型场景:多线程统计测试用例通过率 public class Share…...

线性回归策略

一种基于ATR(平均真实范围)、线性回归和布林带的交易策略。以下是对该策略的全面总结和分析: 交易逻辑思路 1. 过滤条件: - 集合竞价过滤:在每个交易日的开盘阶段,过滤掉集合竞价产生的异常数据。 - 价格异常过滤:排除当天开盘价与最高价或最低价相同的情况,这…...

Sparse4D运行笔记

Sparse4D有三个版本,其中V1和V2版本的官方文档中环境依赖写得比较模糊且依赖库有版本冲突。 1. Sparse4D V1 创建环境 conda create sparse4dv1 python3.8 激活环境 conda activate sparse4dv1 安装torch, torchvision, torchaudio pip install torch1.13.0c…...

Bitmap、Roaring Bitmap、HyperLogLog对比介绍

一、Bitmap(位图)概述 Bitmap 是一种用位(bit)来表示集合元素是否存在的数据结构。每个位代表一个元素的状态(0或1),非常节省空间且支持快速集合操作。 常见Bitmap类型: 普通Bitmap 最简单的位数组,适合元素范围固定且不稀疏的场景。例如,元素范围是0~1000,用1001…...

Rust 数据结构:HashMap

Rust 数据结构:HashMap Rust 数据结构:HashMap创建一个新的哈希映射HashMap::new()将元组变成哈希表 访问哈希映射中的值哈希映射和所有权更新哈希映射重写一个值仅当键不存在时才添加键和值基于旧值更新值 散列函数 Rust 数据结构:HashMap …...

Spring6学习及复习笔记

1、快速入门认识 通过编写xml配置文件来创建对象,读取bean标签的id值和class值来创建。 之后再通过对象调用相关的方法(这里实际上用到的是反射机制) 对象会存放到Map集合中 大致反射思路如下:(这里只是模拟&#x…...

开源语音-文本基础模型和全双工语音对话框架 Moshi 介绍

介绍 一、项目背景 Moshi是一种语音-文本基础模型和全双工语音对话框架。它使用了Mimi这一业界领先的流式神经音频编解码器。Mimi能够以完全流式处理的方式(80毫秒的延迟,即帧大小),将24千赫兹的音频信号压缩为12.5赫兹的表示形式…...

MATLAB学习笔记(六):MATLAB数学建模

MATLAB 是数学建模的强大工具,其丰富的函数库和可视化能力可以高效解决各类数学建模问题。以下是 MATLAB 数学建模的完整指南,涵盖建模流程、常用方法、代码示例及实际应用。 一、数学建模的基本流程 问题分析 • 明确目标(预测、优化、分类等…...

博客打卡-求解流水线调度

题目如下: 有n个作业(编号为1~n)要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi(1≤i≤n)。 流水…...

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新

概述 在历经三周的阶段性开发后,RagflowPlus顺利完成既定计划,正式发布v0.3.0版本。 开源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中,新增用户会话管理菜单。在此菜单中&…...

深度学习中ONNX格式的模型文件

一、模型部署的核心步骤 模型部署的完整流程通常分为以下阶段,用 “跨国旅行” 类比: 步骤类比解释技术细节1. 训练模型学会一门语言(如中文)用 PyTorch/TensorFlow 训练模型2. 导出为 ONNX翻译成国际通用语言(如英语…...