<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>AiRomance</title>
  <icon>https://blog.whff521.xyz/images/101.ico</icon>
  <subtitle>爱裸漫三三</subtitle>
  <link href="https://blog.whff521.xyz/atom.xml" rel="self"/>
  <link href="https://pubsubhubbub.appspot.com/" rel="hub"/>
  <link href="https://blog.whff521.xyz/"/>
  <updated>2026-04-10T05:58:08.661Z</updated>
  <id>https://blog.whff521.xyz/</id>
  
  <author>
    <name>AiRomance</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>YOLO11n 内部结构修改指南</title>
    <link href="https://blog.whff521.xyz/2026/04/10/yolo11n%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9/"/>
    <id>https://blog.whff521.xyz/2026/04/10/yolo11n%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9/</id>
    <published>2026-04-10T05:53:43.000Z</published>
    <updated>2026-04-10T05:58:08.661Z</updated>
    
    <content type="html"><![CDATA[<h1 id="YOLO11n-内部结构修改指南"><a href="#YOLO11n-内部结构修改指南" class="headerlink" title="YOLO11n 内部结构修改指南"></a>YOLO11n 内部结构修改指南</h1><p>本文由GPT-5.3-Codex·Medium撰写。</p><h2 id="1-先理解-YOLO11n-是如何被加载的"><a href="#1-先理解-YOLO11n-是如何被加载的" class="headerlink" title="1. 先理解 YOLO11n 是如何被加载的"></a>1. 先理解 YOLO11n 是如何被加载的</h2><p>在这个仓库里，YOLO11n 不是单独一个 yolo11n.yaml 文件，而是通过 yolo11.yaml 里的 scales.n 缩放规则得到。</p><p>核心流程：</p><ol><li>传入 model=yolo11n.yaml 或 yolo11n.pt</li><li>解析时会统一映射到 ultralytics/cfg/models/11/yolo11.yaml</li><li>从文件名中提取 scale=n</li><li>使用 parse_model() 按 YAML 的 backbone/head 构建网络</li></ol><p>涉及关键代码：</p><ul><li>ultralytics/nn/tasks.py<ul><li>yaml_model_load()</li><li>guess_model_scale()</li><li>parse_model()</li><li>DetectionModel.<strong>init</strong>()</li></ul></li></ul><h2 id="2-改结构时通常要改哪些文件"><a href="#2-改结构时通常要改哪些文件" class="headerlink" title="2. 改结构时通常要改哪些文件"></a>2. 改结构时通常要改哪些文件</h2><h3 id="A-只改网络拓扑（不新增新算子）"><a href="#A-只改网络拓扑（不新增新算子）" class="headerlink" title="A. 只改网络拓扑（不新增新算子）"></a>A. 只改网络拓扑（不新增新算子）</h3><p>只需要改：</p><ul><li>ultralytics/cfg/models/11/yolo11.yaml</li></ul><p>建议不要直接覆盖官方 yolo11.yaml，改为新文件，例如：</p><ul><li>ultralytics/cfg/models/11/yolo11n_my.yaml</li></ul><p>前提：你用到的模块（如 Conv、C2f、C3k2、SPPF、Detect）已经在 parse_model 中支持。</p><h3 id="B-新增自定义模块（新增算子-Block）"><a href="#B-新增自定义模块（新增算子-Block）" class="headerlink" title="B. 新增自定义模块（新增算子/Block）"></a>B. 新增自定义模块（新增算子/Block）</h3><p>通常至少需要改 3 类文件：</p><ol><li>模块实现文件</li></ol><ul><li>ultralytics/nn/modules/block.py</li><li>或 ultralytics/nn/modules/conv.py</li><li>或 ultralytics/nn/modules/head.py</li></ul><ol><li>模块导出文件</li></ol><ul><li>ultralytics/nn/modules/<strong>init</strong>.py</li></ul><ol><li>模型解析与注册</li></ol><ul><li>ultralytics/nn/tasks.py<ul><li>顶部 import 列表要导入新模块</li><li>parse_model() 里按模块类型处理参数</li><li>若你的模块是 [c1, c2, …] 这种常规结构块，要加入 base_modules</li><li>若你的模块支持 repeats，要加入 repeat_modules</li></ul></li></ul><h3 id="C-如果改了检测头输出定义"><a href="#C-如果改了检测头输出定义" class="headerlink" title="C. 如果改了检测头输出定义"></a>C. 如果改了检测头输出定义</h3><p>还要同步检查：</p><ul><li>ultralytics/nn/modules/head.py</li><li>ultralytics/utils/loss.py</li><li>推理后处理相关逻辑（如解码、维度约定）</li></ul><p>否则可能出现训练正常但推理/导出异常，或 loss 维度不匹配。</p><h2 id="3-示例-1：只改-YAML（推荐先从这里开始）"><a href="#3-示例-1：只改-YAML（推荐先从这里开始）" class="headerlink" title="3. 示例 1：只改 YAML（推荐先从这里开始）"></a>3. 示例 1：只改 YAML（推荐先从这里开始）</h2><p>目标：把骨干某层从 C3k2 改成 C2f，快速验证结构变更流程。</p><h3 id="3-1-新建配置文件"><a href="#3-1-新建配置文件" class="headerlink" title="3.1 新建配置文件"></a>3.1 新建配置文件</h3><p>复制：</p><ul><li>ultralytics/cfg/models/11/yolo11.yaml<br>到：</li><li>ultralytics/cfg/models/11/yolo11n_my.yaml</li></ul><p>然后把其中一层改掉（示例）：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 原来</span></span><br><span class="line"><span class="bullet">-</span> [<span class="number">-1</span>, <span class="number">2</span>, <span class="string">C3k2</span>, [<span class="number">256</span>, <span class="literal">False</span>, <span class="number">0.25</span>]]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 修改后</span></span><br><span class="line"><span class="bullet">-</span> [<span class="number">-1</span>, <span class="number">2</span>, <span class="string">C2f</span>, [<span class="number">256</span>, <span class="literal">True</span>]]</span><br></pre></td></tr></table></figure><p>说明：</p><ul><li>C2f 已被 parse_model 支持，通常不需要改 Python 源码。</li><li>这是最稳妥的“改结构”方式，适合先做 baseline。</li></ul><h3 id="3-2-训练验证"><a href="#3-2-训练验证" class="headerlink" title="3.2 训练验证"></a>3.2 训练验证</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yolo detect train model=ultralytics/cfg/models/11/yolo11n_my.yaml data=coco8.yaml imgsz=640 epochs=1</span><br></pre></td></tr></table></figure><h2 id="4-示例-2：新增自定义模块-MyBlock"><a href="#4-示例-2：新增自定义模块-MyBlock" class="headerlink" title="4. 示例 2：新增自定义模块 MyBlock"></a>4. 示例 2：新增自定义模块 MyBlock</h2><p>假设你要新增一个模块 MyBlock，并在 YAML 里使用它。</p><h3 id="4-1-在模块文件中实现"><a href="#4-1-在模块文件中实现" class="headerlink" title="4.1 在模块文件中实现"></a>4.1 在模块文件中实现</h3><p>在 ultralytics/nn/modules/block.py 增加：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">MyBlock</span>(nn.Module):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, c1, c2, k=<span class="number">3</span></span>):</span><br><span class="line">        <span class="built_in">super</span>().__init__()</span><br><span class="line">        self.cv1 = Conv(c1, c2, k, <span class="number">1</span>)</span><br><span class="line">        self.cv2 = Conv(c2, c2, <span class="number">3</span>, <span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">forward</span>(<span class="params">self, x</span>):</span><br><span class="line">        <span class="keyword">return</span> self.cv2(self.cv1(x))</span><br></pre></td></tr></table></figure><h3 id="4-2-在导出文件注册"><a href="#4-2-在导出文件注册" class="headerlink" title="4.2 在导出文件注册"></a>4.2 在导出文件注册</h3><p>在 ultralytics/nn/modules/<strong>init</strong>.py：</p><ol><li>从 block import MyBlock</li><li>把 MyBlock 加入 <strong>all</strong></li></ol><h3 id="4-3-在-tasks-py-注册给解析器"><a href="#4-3-在-tasks-py-注册给解析器" class="headerlink" title="4.3 在 tasks.py 注册给解析器"></a>4.3 在 tasks.py 注册给解析器</h3><p>在 ultralytics/nn/tasks.py：</p><ol><li>顶部 from ultralytics.nn.modules import (…) 中加入 MyBlock</li><li>在 parse_model() 的 base_modules 集合加入 MyBlock</li><li>如果 MyBlock 支持 repeats 参数 n，再加入 repeat_modules</li></ol><h3 id="4-4-在-YAML-中使用"><a href="#4-4-在-YAML-中使用" class="headerlink" title="4.4 在 YAML 中使用"></a>4.4 在 YAML 中使用</h3><p>例如在 yolo11n_my.yaml 中：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> [<span class="number">-1</span>, <span class="number">1</span>, <span class="string">MyBlock</span>, [<span class="number">256</span>, <span class="number">3</span>]]</span><br></pre></td></tr></table></figure><h2 id="5-高风险注意事项（非常重要）"><a href="#5-高风险注意事项（非常重要）" class="headerlink" title="5. 高风险注意事项（非常重要）"></a>5. 高风险注意事项（非常重要）</h2><ol><li>文件命名与 scale 自动识别</li></ol><ul><li>scale 是从文件名里识别的（n/s/m/l/x）。</li><li>如果命名不规范，可能拿不到期望的缩放系数。</li><li>推荐命名包含 n/s/m/l/x，例如 yolo11n_my.yaml。</li></ul><ol><li>通道数和拼接索引必须匹配</li></ol><ul><li>Concat 的输入层索引、输出通道必须和后续层对齐。</li><li>一旦改动 backbone/head 任意层，后续引用索引都要复核。</li></ul><ol><li>repeats 和参数顺序</li></ol><ul><li>parse_model 会对部分模块自动插入 repeats 到参数中。</li><li>如果你的模块参数顺序设计不一致，会在构建时报错或 silent shape 错误。</li></ul><ol><li>Detect 头改动要联动 loss 与后处理</li></ol><ul><li>改检测头输出格式，不仅要改 head，还要改 loss 与 decode 逻辑。</li></ul><ol><li>预训练权重加载不是全量匹配</li></ol><ul><li>改结构后常见现象是仅部分权重能迁移，这是正常的。</li><li>需要关注日志里的 transferred items，确认是否符合预期。</li></ul><ol><li>先做最小可运行验证</li></ol><ul><li>建议先用 coco8 做 1 个 epoch 烟雾测试，再跑正式训练。</li></ul><h2 id="6-推荐修改流程（实践版）"><a href="#6-推荐修改流程（实践版）" class="headerlink" title="6. 推荐修改流程（实践版）"></a>6. 推荐修改流程（实践版）</h2><ol><li>先只改 YAML，确保能 train + val + predict。</li><li>再引入自定义模块，逐步加到 parse_model。</li><li>每改一步都做一次最小训练/推理验证。</li><li>最后再考虑导出（ONNX/TensorRT）兼容性测试。</li></ol><h2 id="7-快速自检清单"><a href="#7-快速自检清单" class="headerlink" title="7. 快速自检清单"></a>7. 快速自检清单</h2><ul><li>是否新建了独立 YAML（避免污染官方配置）</li><li>parse_model 是否能识别你的模块名</li><li>base_modules/repeat_modules 是否注册正确</li><li>Concat/Detect 的输入索引和通道是否一致</li><li>训练、推理、导出至少各做过一次最小验证</li></ul><p>PS：封面图来源：<a href="https://x.com/AiLuoManSanSan/status/2040801665541189654?s=20">AiRomance</a></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;h1 id=&quot;YOLO11n-内部结构修改指南&quot;&gt;&lt;a href=&quot;#YOLO11n-内部结构修改指南&quot; class=&quot;headerlink&quot; title=&quot;YOLO11n 内部结构修改指南&quot;&gt;&lt;/a&gt;YOLO11n</summary>
        
      
    
    
    
    <category term="深度学习" scheme="https://blog.whff521.xyz/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    
    
    <category term="YOLO11n" scheme="https://blog.whff521.xyz/tags/YOLO11n/"/>
    
    <category term="模型修改" scheme="https://blog.whff521.xyz/tags/%E6%A8%A1%E5%9E%8B%E4%BF%AE%E6%94%B9/"/>
    
  </entry>
  
  <entry>
    <title>关于目标检测模型的量化</title>
    <link href="https://blog.whff521.xyz/2026/03/16/%E5%85%B3%E4%BA%8E%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%87%8F%E5%8C%96/"/>
    <id>https://blog.whff521.xyz/2026/03/16/%E5%85%B3%E4%BA%8E%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%87%8F%E5%8C%96/</id>
    <published>2026-03-16T08:56:10.000Z</published>
    <updated>2026-03-20T08:49:39.106Z</updated>
    
    <content type="html"><![CDATA[<h1 id="关于目标检测模型的量化"><a href="#关于目标检测模型的量化" class="headerlink" title="关于目标检测模型的量化"></a>关于目标检测模型的量化</h1><p>量化可以分为两类，一类是模型压缩，一类是网络结构设计。</p><p>模型压缩的技术主要包括剪枝，量化和知识蒸馏。</p><p>现有的目标检测模型的Backbone主要是基于CNN或者Transformer。相比之下CNN是更有效率的，Transformer的注意力机制会产生大量的计算。</p><h2 id="关于轻量级网络设计"><a href="#关于轻量级网络设计" class="headerlink" title="关于轻量级网络设计"></a>关于轻量级网络设计</h2><h3 id="基于CNN的轻量级网络设计"><a href="#基于CNN的轻量级网络设计" class="headerlink" title="基于CNN的轻量级网络设计"></a>基于CNN的轻量级网络设计</h3><p>这里多是设计base CNN的网络的，卷积块的设计。比如深度可分离卷积、分组卷积和幽灵卷积。</p><p>对于普通卷积，输入特征图的尺寸为$H×W×C<em>{in}$，输出特征图的尺寸为$H×W×C</em>{out}$，卷积核实际维度为$K×K×C<em>{in}$。输出通道数为$C</em>{out}$，代表卷积核的数量。</p><p>深度可分离卷积是将标准卷积分解为深度卷积和逐点卷积。深度卷积对每个输入通道进行独立的卷积操作，而逐点卷积则使用1x1卷积来混合不同通道的信息。这种方法显著减少了计算量和参数数量。但是深度卷积并行效率较低，信息提取能力也更弱。</p><p>分组卷积将输入通道分成多个组，每个组独立进行卷积操作。然后将每个组的输出特征图连接起来形成最终的输出特征图。但是不同组之间不能信息交换，有channel shuffle operation来解决这个问题。反向想，如果分组卷积用和普通卷积相同参数量，那么就会生成分组数倍的特征图，比如YOLOv7中的E-ELAN。但是分组卷机会增加memory access costs（内存访问成本）。</p><p>幽灵卷积，一代幽灵卷积是通过生成一些“幽灵特征图”来减少计算量和参数数量。它首先使用一个小的卷积核生成一部分特征图，然后通过线性变换生成剩余的特征图。v2引入DFC注意力机制来解决空间信息表示不足的问题。v3加入很多轻量化策略。</p><p>因为卷积块还是受限于矩形形状，也有很多研究不同形状的卷积块。</p><p>总之，轻量卷积的方法基本就是在保证特征提取能力的同时减少冗余计算，同时也要注意计算效率。</p><p>Reparameterisation，训练时使用复杂的结构来增强模型的表达能力，推理时将其转换为更简单的结构以提高效率。比如训练时使用残差网络结构，推理时将其转换为普通卷积结构。</p><h3 id="基于Transformer的轻量级网络设计"><a href="#基于Transformer的轻量级网络设计" class="headerlink" title="基于Transformer的轻量级网络设计"></a>基于Transformer的轻量级网络设计</h3><p>开发高效的轻量级注意力机制对于轻量级Transformer模型至关重要。注意力机制的更改需要非常专业的知识，也有Neural Architecture Search (NAS)来自动搜索更高效的注意力机制。</p><h2 id="关于模型压缩"><a href="#关于模型压缩" class="headerlink" title="关于模型压缩"></a>关于模型压缩</h2><h3 id="剪枝"><a href="#剪枝" class="headerlink" title="剪枝"></a>剪枝</h3><p>对于目标检测模型，模型结构对结果的影响很大，所以大多数剪枝的研究都是结构化剪枝。剪枝主要是将不重要的卷积核或者通道剪掉，减少计算量和参数数量。早期的剪枝方法主要是基于权重的绝对值来判断重要性，后来引入了更多的指标，比如梯度、特征图等。剪枝后需要进行微调来恢复模型的性能。</p><h3 id="量化"><a href="#量化" class="headerlink" title="量化"></a>量化</h3><p>量化指用低精度数据替换高精度数据。</p><p>根据量化过程发生的阶段，可分为训练时量化（Quantization Aware Training, QAT）和后训练量化（Post-Training Quantization, PTQ）。QAT在训练过程中模拟量化误差，允许模型适应低精度表示，从而通常能获得更好的性能。PTQ则是在模型训练完成后进行量化。</p><p>根据量化的数据点之间的间隔，可分为均匀量化和非均匀量化。均匀量化使用固定的间隔将数值范围划分为离散的级别，而非均匀量化则根据数据分布动态调整间隔。均匀量化常用方法有超低精度量化和INT8量化。</p><h3 id="知识蒸馏"><a href="#知识蒸馏" class="headerlink" title="知识蒸馏"></a>知识蒸馏</h3><p>蒸馏分为离线蒸馏和在线蒸馏。离线蒸馏是先训练一个大模型（教师模型），然后用它来指导一个小模型（学生模型）的训练。在线蒸馏则是同时训练教师模型和学生模型，教师模型在训练过程中不断更新。</p><p>还有自蒸馏（Self-Distillation），即模型自己作为教师来指导自己的训练。</p><p>根据传递的知识类型，蒸馏可以分为响应蒸馏、特征蒸馏和关系蒸馏。响应蒸馏是通过教师模型的输出概率分布来指导学生模型的训练。特征蒸馏是通过教师模型的中间特征图来指导学生模型的训练。关系蒸馏是通过教师模型中不同层之间的关系来指导学生模型的训练。</p><p>以上总结基于以下文章：<br>He, Jing, Jianfei Jiang, and Changfan Zhang. “A Survey of Lightweight Methods for Object Detection Networks.” Array (2025): 100589.</p><p>PS：封面图来源：<a href="https://x.com/marronpan160/status/2034218045342937149?s=20">marronpan160</a></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;h1 id=&quot;关于目标检测模型的量化&quot;&gt;&lt;a href=&quot;#关于目标检测模型的量化&quot; class=&quot;headerlink&quot;</summary>
        
      
    
    
    
    <category term="轻量化" scheme="https://blog.whff521.xyz/categories/%E8%BD%BB%E9%87%8F%E5%8C%96/"/>
    
    
    <category term="目标检测" scheme="https://blog.whff521.xyz/tags/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/"/>
    
    <category term="轻量化" scheme="https://blog.whff521.xyz/tags/%E8%BD%BB%E9%87%8F%E5%8C%96/"/>
    
  </entry>
  
  <entry>
    <title>离线环境harbor开启Trivy扫描</title>
    <link href="https://blog.whff521.xyz/2026/01/27/%E7%A6%BB%E7%BA%BF%E7%8E%AF%E5%A2%83harbor%E5%BC%80%E5%90%AFTrivy%E6%89%AB%E6%8F%8F/"/>
    <id>https://blog.whff521.xyz/2026/01/27/%E7%A6%BB%E7%BA%BF%E7%8E%AF%E5%A2%83harbor%E5%BC%80%E5%90%AFTrivy%E6%89%AB%E6%8F%8F/</id>
    <published>2026-01-27T09:09:06.000Z</published>
    <updated>2026-01-27T10:02:20.397Z</updated>
    
    <content type="html"><![CDATA[<h1 id="离线环境harbor开启Trivy扫描"><a href="#离线环境harbor开启Trivy扫描" class="headerlink" title="离线环境harbor开启Trivy扫描"></a>离线环境harbor开启Trivy扫描</h1><p>Harbor自带Trivy扫描器，可以用来扫描仓库中的镜像是否有漏洞。开启仅需要运行命令<code>sudo ./install.sh --with-trivy</code>即可。但是Trivy默认要联网下载数据库，国内服务器完全连不上它的数据库网址，然后下载失败。</p><p>总体思路是在别的电脑上先下载所需要的文件，然后通过scp上传到服务器上，解压后放在Trivy挂载的文件夹里面。</p><h2 id="下载db和java-db文件"><a href="#下载db和java-db文件" class="headerlink" title="下载db和java-db文件"></a>下载db和java-db文件</h2><p>我们需要<a href="https://github.com/aquasecurity/trivy-db">Trivy DB v2</a>，这里选择用<code>Oras CLI</code>进行下载。<br>根据<a href="https://oras.land/docs/installation">Oras官网安装文档</a>,选择通过Docker下载。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker pull ghcr.io/oras-project/oras:v1.3.0</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这里需要用wsl或者linux运行命令：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker run -it --rm -v $(pwd):/workspace ghcr.io/oras-project/oras:v1.3.0 pull ghcr.io/aquasecurity/trivy-db:2</span><br><span class="line">docker run -it --rm -v $(pwd):/workspace ghcr.io/oras-project/oras:v1.3.0 pull ghcr.io/aquasecurity/trivy-java-db:1</span><br></pre></td></tr></table></figure><br>这两条指令会在当前文件夹下通过oras镜像下载两个压缩包，分别是<code>db.tar.gz</code>和<code>javadb.tar.gz</code>。<br>下载完后通过scp命令上传到服务器上并解压即可，解压完后应该是<code>db</code>和<code>javadb</code>两个文件夹，需要将<code>javadb</code>改名为<code>java-db</code>。</p><h2 id="关闭trivy自动更新"><a href="#关闭trivy自动更新" class="headerlink" title="关闭trivy自动更新"></a>关闭trivy自动更新</h2><p>在harbor.yml文件里找到trivy的配置：<br><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">skip_update:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">skip_java_db_update:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">offline_scan:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><br>然后在harbor文件夹下运行：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo docker compose down</span><br><span class="line">sudo docker compose up -d</span><br></pre></td></tr></table></figure></p><h2 id="将文件放在挂载目录"><a href="#将文件放在挂载目录" class="headerlink" title="将文件放在挂载目录"></a>将文件放在挂载目录</h2><p>harbor会自动将自己默认存储位置挂载到trivy镜像里面，<br>如何查看Trivy挂载的文件位置：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker inspect &lt;trivy容器ID&gt; | grep -A5 Mounts</span><br></pre></td></tr></table></figure><br>会有类似输出：<br><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">&quot;Mounts&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;Type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;bind&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;Source&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/harbor/data/trivy-adapter/trivy&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;Destination&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/home/scanner/.cache/trivy&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;Mode&quot;</span><span class="punctuation">:</span> <span class="string">&quot;rw&quot;</span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><br>因为我将harbor默认存储位置改为了<code>data_volume: /home/harbor/data</code>,所以查到的Source是<code>/home/harbor/data/trivy-adapter/trivy</code>,<code>data</code>文件夹下默认是没有文件夹的，我们要先创建<code>trivy-adapter/trivy</code>文件夹。<br>然后将db和java-db拷贝进去。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">假设你当前在 /home/yourname/trivy</span></span><br><span class="line">sudo cp -r trivy/db /home/yourname/harbor/data/trivy-adapter/trivy/</span><br><span class="line">sudo cp -r trivy/java-db /home/yourname/harbor/data/trivy-adapter/trivy/</span><br></pre></td></tr></table></figure><p>最终文件结构：<br><figure class="highlight swift"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="regexp">/home/</span>yourname<span class="regexp">/harbor/</span>data<span class="regexp">/trivy-adapter/</span>trivy<span class="operator">/</span></span><br><span class="line"><span class="operator">├──</span> db</span><br><span class="line"><span class="operator">│</span>   <span class="operator">├──</span> trivy.db</span><br><span class="line"><span class="operator">│</span>   <span class="operator">└──</span> metadata.json</span><br><span class="line"><span class="operator">├──</span> java<span class="operator">-</span>db</span><br><span class="line">    <span class="operator">├──</span> trivy<span class="operator">-</span>java.db</span><br><span class="line">    <span class="operator">└──</span> metadata.json</span><br></pre></td></tr></table></figure></p><p>拷贝完trivy应该能正常工作了。如果有问题的话有可能是文件的权限问题。</p><p>PS: <a href="https://x.com/absentable655/status/2013197240832299370?s=46">封面来自这里</a></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;h1 id=&quot;离线环境harbor开启Trivy扫描&quot;&gt;&lt;a href=&quot;#离线环境harbor开启Trivy扫描&quot; class=&quot;headerlink&quot;</summary>
        
      
    
    
    
    <category term="计算机相关" scheme="https://blog.whff521.xyz/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Harbor" scheme="https://blog.whff521.xyz/tags/Harbor/"/>
    
  </entry>
  
  <entry>
    <title>Harbor的部署</title>
    <link href="https://blog.whff521.xyz/2026/01/19/Harbor%E7%9A%84%E9%83%A8%E7%BD%B2/"/>
    <id>https://blog.whff521.xyz/2026/01/19/Harbor%E7%9A%84%E9%83%A8%E7%BD%B2/</id>
    <published>2026-01-19T01:13:36.000Z</published>
    <updated>2026-01-26T06:35:51.255Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Harbor-Demo"><a href="#Harbor-Demo" class="headerlink" title="Harbor Demo"></a>Harbor Demo</h1><h2 id="1-概览"><a href="#1-概览" class="headerlink" title="1. 概览"></a>1. 概览</h2><p>使用设备：Windows11，内存32G，Demo所需存储空间约为50G。</p><p>Harbor版本：2.14.2</p><p>Docker版本：29.1.3</p><h2 id="2-wsl中Ubuntu-22-04的安装"><a href="#2-wsl中Ubuntu-22-04的安装" class="headerlink" title="2. wsl中Ubuntu-22.04的安装"></a>2. wsl中Ubuntu-22.04的安装</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl --install -d Ubuntu-22.04</span><br></pre></td></tr></table></figure><p>输入ubuntu系统用户名和密码。</p><p>查看你安装了哪些版本的linux<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl -l -v</span><br></pre></td></tr></table></figure><br>进入指定系统<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl -d Ubuntu-22.04</span><br></pre></td></tr></table></figure><br>设置默认系统：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl --set-default Ubuntu-22.04</span><br></pre></td></tr></table></figure><br>启动docker desktop, wsl会自动连接，可直接使用docker命令。</p><h2 id="3-安装Harbor"><a href="#3-安装Harbor" class="headerlink" title="3. 安装Harbor"></a>3. 安装Harbor</h2><ol><li><p>下载Harbor离线安装包</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">mkdir demo</span><br><span class="line">cd demo</span><br><span class="line">wget https://github.com/goharbor/harbor/releases/download/v2.14.2/harbor-offline-installer-v2.14.2.tgz</span><br><span class="line">tar xzvf harbor-offline-installer-v2.14.2.tgz</span><br><span class="line">cd harbor</span><br></pre></td></tr></table></figure><p>只有在与外部互联网完全隔离的测试或开发环境中，使用 HTTP 才是可接受的。<br>在此并不配置https。<a href="https://goharbor.io/docs/2.14.0/install-config/configure-https/">配置https官方教程</a><br>Harbor在版本1.9.x（包含）都默认使用http进行通信</p></li><li><p>编辑Harbor YML File</p></li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cp harbor.yml.tmpl harbor.yml</span><br><span class="line">vi harbor.yml</span><br></pre></td></tr></table></figure><p>修改成<br><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">hostname:</span> <span class="string">harbor.local</span></span><br><span class="line"><span class="attr">http:</span></span><br><span class="line">  <span class="attr">port:</span> <span class="number">5000</span></span><br><span class="line"><span class="attr">harbor_admin_password:</span> <span class="string">Harbor12345</span></span><br></pre></td></tr></table></figure><br>注释掉https相关部分</p><p>运行<code>./prepare</code></p><p>因为windows的wsl占用了1514端口，需要更改log端口：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sed -i &#x27;s/localhost:1514/localhost:1515/g&#x27; docker-compose.yml</span><br><span class="line">sed -i &#x27;s/127.0.0.1:1514/127.0.0.1:1515/g&#x27; docker-compose.yml</span><br></pre></td></tr></table></figure></p><p>然后：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo docker compose up -d</span><br></pre></td></tr></table></figure></p><ol><li>访问</li></ol><p>Windows浏览器访问<code>http://localhost:5000/</code>即可进行登录</p><p>关于管理员可以做什么，<a href="https://goharbor.io/docs/2.14.0/administration/">官网文档链接</a></p><p>停止Harbor镜像：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo docker compose stop</span><br></pre></td></tr></table></figure><br>启动：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo docker compose start</span><br></pre></td></tr></table></figure><br>关于Harbor Lifecycle的<a href="https://goharbor.io/docs/2.14.0/install-config/reconfigure-manage-lifecycle/">官方文档链接</a></p><h2 id="4-镜像管理"><a href="#4-镜像管理" class="headerlink" title="4. 镜像管理"></a>4. 镜像管理</h2><p>首先创建一个Project，名字取为<code>algos</code>,设置为public,存储空间限制为30G。</p><h2 id="5-YOLO11-镜像Demo"><a href="#5-YOLO11-镜像Demo" class="headerlink" title="5. YOLO11 镜像Demo"></a>5. YOLO11 镜像Demo</h2><p>构建镜像:<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker build -f docker/Dockerfile.cpu -t yolov11-cpu .</span><br><span class="line">docker build -f docker/Dockerfile.gpu -t yolov11-gpu .</span><br></pre></td></tr></table></figure></p><p>使用镜像：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">docker run --rm -v D:\datasets\food-101\images\baby_back_ribs:/input -v D:\output:/output yolov11-cpu python infer.py /input/54203.jpg /output/result.jpg</span><br><span class="line"></span><br><span class="line">docker run --rm --gpus all -v D:\datasets\food-101\images\baby_back_ribs:/input -v D:\output:/output yolov11-gpu python infer.py /input/54203.jpg /output/result.jpg</span><br></pre></td></tr></table></figure></p><p>查看wsl的ip,在wsl中运行：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip addr show eth0</span><br></pre></td></tr></table></figure><br>找到ip地址，<br>给docker desktop添加信任链接：<br>Docker Desktop找Settings -&gt; Docker Engine, 添加<br><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">&quot;insecure-registries&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;172.18.246.156:5000&quot;</span><span class="punctuation">]</span></span><br></pre></td></tr></table></figure><br>完整的json应该是这样的：<br><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;builder&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;gc&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;defaultKeepStorage&quot;</span><span class="punctuation">:</span> <span class="string">&quot;20GB&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;experimental&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;insecure-registries&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="string">&quot;172.18.246.156:5000&quot;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><br>命令行进行登录：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker login 172.18.246.156:5000</span><br></pre></td></tr></table></figure><p>输入账号密码</p><p>登陆成功后给镜像打标签并推送：<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker tag yolov11-cpu:latest 172.18.246.156:5000/algos/yolov11-cpu:latest</span><br><span class="line">docker push 172.18.246.156:5000/algos/yolov11-cpu:latest</span><br></pre></td></tr></table></figure></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker tag yolov11-gpu:latest 172.18.246.156:5000/algos/yolov11-gpu:latest</span><br><span class="line">docker push 172.18.246.156:5000/algos/yolov11-gpu:latest</span><br></pre></td></tr></table></figure><p>如何删除wsl上的系统<br><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">wsl --list --verbose</span><br><span class="line">wsl --unregister Ubuntu-22.04</span><br></pre></td></tr></table></figure></p><p>PS: <a href="https://x.com/Virgo_illustsub/status/2003122861339504785?s=20">封面链接</a></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;h1 id=&quot;Harbor-Demo&quot;&gt;&lt;a href=&quot;#Harbor-Demo&quot; class=&quot;headerlink&quot; title=&quot;Harbor Demo&quot;&gt;&lt;/a&gt;Harbor Demo&lt;/h1&gt;&lt;h2 id=&quot;1-概览&quot;&gt;&lt;a href=&quot;#1-概览&quot;</summary>
        
      
    
    
    
    <category term="计算机相关" scheme="https://blog.whff521.xyz/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Harbor" scheme="https://blog.whff521.xyz/tags/Harbor/"/>
    
  </entry>
  
  <entry>
    <title>Mamba 模型在视觉上的开发</title>
    <link href="https://blog.whff521.xyz/2026/01/14/mamba/"/>
    <id>https://blog.whff521.xyz/2026/01/14/mamba/</id>
    <published>2026-01-14T05:52:13.000Z</published>
    <updated>2026-01-15T12:22:12.147Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Mamba-模型在视觉上的开发"><a href="#Mamba-模型在视觉上的开发" class="headerlink" title="Mamba 模型在视觉上的开发"></a>Mamba 模型在视觉上的开发</h1><h2 id="状态空间模型（State-Space-Models）"><a href="#状态空间模型（State-Space-Models）" class="headerlink" title="状态空间模型（State Space Models）"></a>状态空间模型（State Space Models）</h2><p>用于预测连续序列在给定输入下的下一状态。<br>固定动态特性</p><h2 id="Mamba"><a href="#Mamba" class="headerlink" title="Mamba"></a>Mamba</h2><p>Mamba 是一种基于 选择性状态空间模型（Selective SSM） 的序列建模架构，它最大的特点是：</p><ul><li>时间复杂度和显存复杂度都是 线性 O(L)</li><li>非常擅长 长序列建模</li><li>可以作为 Transformer Block 的高效替代</li></ul><p>目前已经在 NLP、Vision 以及多模态领域 都有广泛应用。</p><p>从本质上看，Mamba 用 SSM 来建模序列依赖，避免了自注意力的二次复杂度瓶颈。</p><h2 id="MambaVision-A-Hybrid-Mamba-Transformer-Vision-Backbone"><a href="#MambaVision-A-Hybrid-Mamba-Transformer-Vision-Backbone" class="headerlink" title="MambaVision: A Hybrid Mamba-Transformer Vision Backbone"></a><a href="https://arxiv.org/abs/2407.08083">MambaVision: A Hybrid Mamba-Transformer Vision Backbone</a></h2><p>这篇文章是英伟达更改Mamba结构然后在视觉任务上的一次尝试。</p><h3 id="核心问题"><a href="#核心问题" class="headerlink" title="核心问题"></a>核心问题</h3><ul><li>transformer 计算瓶颈（n2）</li><li>原生Mamba在视觉任务上局限性</li></ul><h3 id="创新点"><a href="#创新点" class="headerlink" title="创新点"></a>创新点</h3><ul><li>专为视觉设计的Mamba模块：MambaVision Mixer</li><li>Mamba与Transformer混合新架构</li><li>分层设计</li></ul><h3 id="架构设计"><a href="#架构设计" class="headerlink" title="架构设计"></a>架构设计</h3><p><img src="https://images.whff521.top/arch.png" alt="架构"></p><ol><li>在高分辨率图像输入后先用卷积层进行下采样（前两个阶段）</li><li>MambaVision blocks 进行深度特征的序列建模，Transformer blocks 恢复丢失的全局上下文并捕获长程空间依赖性。</li></ol><p>先用 MambaVision Mixer 提升 token 的全局语义一致性<br>再用 Transformer 精修空间关系</p><h2 id="RoMA-Scaling-up-Mamba-based-Foundation-Models-for-Remote-Sensing"><a href="#RoMA-Scaling-up-Mamba-based-Foundation-Models-for-Remote-Sensing" class="headerlink" title="RoMA: Scaling up Mamba-based Foundation Models for Remote Sensing"></a><a href="https://arxiv.org/abs/2503.10392">RoMA: Scaling up Mamba-based Foundation Models for Remote Sensing</a></h2><p>这篇论文是讲Mamba模型应用到遥感图像领域，专注于高分辨率遥感图像中的多尺度视觉任务。</p><p>RoMA 主要有三点贡献：</p><ol><li>它是首个面向遥感的 Mamba 自监督自回归预训练框架。</li><li>提出了 动态旋转感知机制，应对目标方向任意的问题。</li><li>设计了 多尺度预测目标，解决遥感中目标尺度变化极大的问题。</li></ol><h3 id="自回归预训练策略"><a href="#自回归预训练策略" class="headerlink" title="自回归预训练策略"></a>自回归预训练策略</h3><p><img src="https://images.whff521.top/Screenshot%202026-01-15%20at%2011.13.47.png" alt="pipeline"><br>在预训练策略上，RoMA 和 MAE 有本质区别。</p><ul><li>MAE 只编码部分可见 patch</li><li>RoMA 用 Mamba 编码 所有 patch<br>同时：</li><li>MAE 是重建被 mask 的区域</li><li>RoMA 是预测 下一个 token<br>这种自回归方式与 Mamba 的顺序建模特性是天然契合的。</li></ul><h3 id="自适应旋转编码"><a href="#自适应旋转编码" class="headerlink" title="自适应旋转编码"></a>自适应旋转编码</h3><p><img src="https://images.whff521.top/Screenshot%202026-01-15%20at%2014.03.52.png" alt="rotate"><br>针对遥感目标 方向任意、分布稀疏 的问题，RoMA 提出了自适应旋转编码策略。<br>核心包括两点：</p><ul><li>使用 LBP 算法筛选高价值区域进行旋转增强</li><li>显式引入角度嵌入，提供方向先验<br>这显著提升了模型对旋转不变性的感知能力。</li></ul><h3 id="多尺度预测-amp-可扩展性"><a href="#多尺度预测-amp-可扩展性" class="headerlink" title="多尺度预测 &amp; 可扩展性"></a>多尺度预测 &amp; 可扩展性</h3><p><img src="https://images.whff521.top/Screenshot%202026-01-15%20at%2015.40.53.png" alt="loss"><br>在多尺度方面，RoMA 不仅计算每个 patch 的 loss，还计算 patch 组合形成的 簇级别 loss。<br>这让模型同时关注：</p><ul><li>小目标</li><li>大结构</li></ul><p><img src="https://images.whff521.top/Screenshot%202026-01-15%20at%2015.54.37.png" alt="table"><br>同时实验表明：</p><ul><li>数据越多，效果越好</li><li>模型越大，效果越好<br>具备良好的基础模型扩展性。</li></ul><h3 id="下游任务-amp-总结"><a href="#下游任务-amp-总结" class="headerlink" title="下游任务 &amp; 总结"></a>下游任务 &amp; 总结</h3><p>在下游任务上，RoMA 在场景分类、变化检测和语义分割中都取得了优异表现。<br>特别是在线性探测设置下，小目标效果依然很好，说明预训练特征质量很高。</p><p><img src="https://images.whff521.top/Screenshot%202026-01-15%20at%2010.49.25.png" alt="OOM"><br>在 1248×1248 分辨率下，相对于ViT模型，</p><ul><li>显存降低近 79%</li><li>推理速度提升 1.56 倍</li></ul><h2 id="引用"><a href="#引用" class="headerlink" title="引用"></a>引用</h2><ol><li><a href="https://www.ibm.com/cn-zh/think/topics/mamba-model">Mamba 模型</a></li><li><a href="https://www.bilibili.com/video/BV1ys8FzcEwz">【SCI论文高能解析】从NLP杀到CV的降维打击！MambaVision首次挑战Transformer霸主地位！</a></li></ol><p>PS: 封面来自<a href="https://x.com/11matsuri_co11/status/2005934384755695796?s=20">这里</a></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;h1 id=&quot;Mamba-模型在视觉上的开发&quot;&gt;&lt;a href=&quot;#Mamba-模型在视觉上的开发&quot; class=&quot;headerlink&quot; title=&quot;Mamba 模型在视觉上的开发&quot;&gt;&lt;/a&gt;Mamba 模型在视觉上的开发&lt;/h1&gt;&lt;h2</summary>
        
      
    
    
    
    <category term="论文阅读" scheme="https://blog.whff521.xyz/categories/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/"/>
    
    
    <category term="Mamba" scheme="https://blog.whff521.xyz/tags/Mamba/"/>
    
  </entry>
  
</feed>
