在计算机视觉领域,无论是目标检测还是图像分割,都面临 “全局上下文建模” 与 “计算效率” 难以平衡的核心问题。传统卷积神经网络(CNN)依赖局部卷积核提取特征,无法有效捕捉图像中远距离像素的关联关系,导致对复杂场景下的目标(如小目标、遮挡目标)识别能力不足;而基于自注意力的 Transformer 架构虽能建模全局依赖,但计算复杂度随输入图像分辨率呈二次增长,在高分辨率视觉任务中难以兼顾精度与速度。
随着状态空间模型(SSM)的兴起,Vision Mamba 等方案通过线性复杂度的序列建模能力,为高效全局依赖捕捉提供了新路径。然而,这类模型通常采用通道独立处理方式,缺乏对不同通道间互补特征的有效融合 —— 而通道间的信息交互恰恰是区分目标与背景、优化分割边界的关键。为此,跨通道状态空间交互(CSI)模块被提出,旨在融合状态空间模型的高效性与跨通道特征的关联性,解决视觉任务中 “全局建模低效” 与 “通道信息割裂” 的双重痛点。


左边是基础模型,右边是改进后的模型
1. CSI原理
CSI 模块的原理围绕 “高效全局建模” 与 “跨通道信息融合” 两大核心展开,具体可拆解为两步:
分段式状态空间编码:首先将输入特征图按通道维度拆分为多个并行子序列,每个子序列独立输入状态空间层(SSM)进行处理。借鉴 Vision Mamba 的状态更新逻辑,通过可学习参数A(状态转移矩阵)与B(输入投影矩阵),对每个子序列进行选择性编码 —— 仅保留与任务相关的关键特征,丢弃冗余信息,实现线性复杂度下的全局上下文捕捉,避免传统 Transformer 的计算冗余。
跨通道特征重组与筛选:针对分段处理导致的通道信息割裂问题,将各子序列的输出按 “通道索引” 重新分组(例如,取所有子序列的第 1 个通道、第 2 个通道分别组成新特征组),使不同子序列中语义相关的通道特征汇聚。随后通过 1×1 卷积实现通道信息融合,并结合通道注意力(筛选关键通道)与空间注意力(定位目标区域),进一步优化特征表达,强化目标与背景的区分度。

2. CSI习作思路
(一)目标检测场景
在目标检测中,CSI 模块的优势体现在 “全局感知” 与 “特征判别性” 的双重提升。一方面,分段式状态空间编码以线性复杂度捕捉全局上下文,能有效关联目标与背景的远距离特征(如小目标与周围环境的对比信息、遮挡目标的局部片段关联),减少因局部视野局限导致的漏检、误检;另一方面,跨通道重组与注意力筛选可融合不同通道的目标特征(如边缘通道、纹理通道、语义通道),强化目标的独特表征,尤其对复杂背景下的小目标、低对比度目标,能显著提升其与背景的区分度,降低假阳性率。
(二)图像分割场景
在图像分割中,CSI 模块可同时满足 “边界精细度” 与 “区域一致性” 的需求。通过并行状态空间编码,模块能在保持高分辨率特征细节的同时,建模全局像素依赖(如分割区域的连续性、同类像素的关联性),避免传统 CNN 分割中常见的 “区域断裂”“边界模糊” 问题;而跨通道重组机制则能汇聚不同通道的分割相关特征(如边界通道的轮廓信息、语义通道的类别信息),结合注意力优化进一步细化分割边界,尤其适用于细粒度分割(如医疗影像中的微小病灶分割、自然场景中的小目标分割),提升分割结果的准确性与完整性。
3. YOLO与CSI的结合
将 CSI 模块融入 YOLO 架构,可针对性解决 YOLO 的两大短板:一是弥补 YOLO 传统卷积模块的局部视野局限,通过线性复杂度的全局建模,提升对复杂场景下小目标、遮挡目标的检测精度;二是强化 YOLO 特征金字塔中不同尺度特征的通道关联性,帮助模型更精准区分目标与相似背景(如密集场景中的目标重叠区域),且不会显著增加计算量,保障 YOLO 固有的实时检测性能,实现 “精度提升” 与 “速度保持” 的平衡。
4.CSI代码部分
YOLO11|YOLO12|改进| 跨通道状态空间交互模块CSI,以线性复杂度实现全局上下文依赖与跨通道特征融合,提升对复杂场景下小目标、遮挡目标的检测能力_哔哩哔哩_bilibili
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
代码获取:YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve
5. CSI到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO("/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/models/11/yolo11_CSI.yaml")\
# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weights
results = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",
epochs=300,
imgsz=640,
batch=4,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
amp = False
)
3万+

被折叠的 条评论
为什么被折叠?



