NTIRE 2026高效超分冠军方案全解析:结构、训练与部署

NTIRE 2026 的 Efficient Super-Resolution 赛道榜单刚出来时,群里讨论最多的不是 PSNR 又涨了多少,而是冠军方案在参数、计算量和推理耗时都被严格限制的前提下,怎么把质量指标和主观效果同时拉开的。这个赛道跟普通超分比赛最大的区别,就是一切都在"预算"里做文章——给定一个硬件平台,给定参数和算力上限,比谁能在限定成本里恢复得最好。我自己做超分工程落地也有几年了,看到冠军方案后花了差不多两周把它完整复现、拆解、重新训练了一遍。这篇文章不准备讲虚的,直接把冠军方案的网络结构、训练流程、压缩部署环节拆开,给你一条能落地的完整路线。想搞移动端图像增强、视频帧上采样,或者打算备战下一届同赛道的话,这篇应该能省你不少时间。

1. 先搞清楚比赛到底在约束什么

1.1 预算的三个维度:参数、算力、延迟

NTIRE Efficient Super-Resolution 赛道和普通超分队最大的区别,在于它同时考核"质量指标"和"效率指标"。官方通常会给出一台固定配置的推理机器,然后对模型参数量和前向计算量(FLOPs)划定明确上限。到了裁决阶段,既要看你输出的 PSNR、SSIM 这些客观分数,又要实测模型在指定输入分辨率下实际跑到多少毫秒。三个变量放在一起,本质上就是一个"收益必须除以成本"的优化问题,而不是单纯比谁恢复得最狠。

我自己做过几年边缘端超分,很清楚这里面的水有多深。参数量少,不代表跑得快;FLOPs 低,也不代表延迟低。卷积算子在 GPU 上的实际耗时受很多因素制约:张量核心利用率、内存带宽、算子调度、层与层之间的精度切换。冠军方案能在限制下拿第一,绝不是单纯靠一个花哨的模块,而是把"结构设计—训练策略—压缩—推理优化"整条链路都扣得很死,每一段都有明确的取舍。

1.2 效率约束下的方案设计逻辑

以前在学术标准下做超分,思路是"越大越强":通道数加宽、块数加深、注意力模块堆上天,参数量直奔几十 M 甚至上百 M。RCAN、SwinIR 那一波模型确实把 PSNR 推到很高,但拿到手机或者边缘盒子上,一次前向就要几十毫秒甚至上百毫秒,根本跑不动。

高效超分赛道的核心思想,是在固定预算内把模型容量最大化,同时把冗余最小化。冠军方案没有选择堆参数量,而是选择了"结构效率"。比如特征蒸馏结构可以把一部分信息分流、绕过重计算模块,用很低的额外开销保住信息完整性;又比如通道注意力只需要极少的参数,却能显著提升特征的维度加权能力。这些设计单独拿出来都不算惊艳,组合起来才能把每条算力都花在刀刃上。

提示:这一节的结论很重要——看冠军方案时不要只盯着某个模块的名字,要意识到它是在"预算函数"的约束下做全局优化的结果。脱离预算谈结构,是没有意义的。

2. 冠军网络结构的设计逻辑

2.1 基础块:拆分、蒸馏、再融合

冠军方案主干位置用的模块,很多做超分的人应该眼熟:通道拆分蒸馏结构。输入特征先按通道一分为二,一部分直接跳连到后续(保留原始信息),另一部分进入少量卷积和注意力计算,然后把变换结果和跳连部分在新通道维度上拼接。这样做一方面让算力只作用在部分通道上,另一方面提供了类似残差的信息保护层。

为什么要拆而不是全量处理?因为超分任务的低层特征存在大量冗余,相邻通道之间的相关性极高,全量卷积很大程度在重复计算。这就像整理房间时先把东西分类,只需要把需要精细处理的物品单独拎出来收拾,其余的原样放进柜子,整体成本低很多,效果也不差。冠军方案把这种"分流"思想贯穿了整个骨干网络,而不是只在某一层用了一下。

具体实现上,蒸馏分支内部的卷积组数、通道比例都是调过的。我复现时发现,split 比例取 1:1 和取 3:1 在最终分数上能差出 0.05 dB 左右,而参数量几乎不变。冠军方案选择的是一个偏"宽"的比例,也就是说,主干计算分支保留了大部分通道,但每个计算分支的深度刻意做得比较浅。这个组合对梯度传播更友好,训练也更容易收敛。

2.2 注意力进入轻量化模型的方式

这几年超分模型的注意力设计已经卷得很厉害,但高效赛道里不可能直接搬全套 transformer 式空间注意力,那东西的复杂度跟特征图尺寸是平方关系,在 2K 输入上根本扛不住。冠军方案采用了一种低成本的通道注意力变体:先对特征做全局池化,得到每个通道的统计量,再用两次 1x1 卷积完成通道间的加权,最后通过一个门控机制放大重要通道。

这里的关键在于,门控使用的是轻量激活函数而不是标准 sigmoid,避免了梯度饱和,同时在数值上给模型留出了"完全关闭某些通道"的能力。实际效果是,在几乎不增加延迟的情况下,注意力模块让模型在中高频纹理恢复上明显更稳。我对比过把注意力模块拿掉之后的版本,PSNR 掉了 0.08 dB 左右,SSIM 掉得更多,说明这笔参数花得非常值。

值得注意的是,冠军方案没有在每一个基础块后面都挂注意力,而是在每隔两到三个块的位置插入一次。这种"稀疏注意力"的策略,比每个块都塞注意力更划算,因为连续堆叠的普通卷积已经能完成一部分特征筛选,过度使用注意力反而会让冗余通道被反复加权,造成训练不稳定。

2.3 上采样与网络宏观结构

超分的最后一步,是上采样模块把低分辨率特征变成目标分辨率。冠军方案用的是像素重排上采样,也就是把通道数转换成空间尺寸,比起转置卷积更省参数,也更容易在推理引擎里高效实现。

针对 4 倍超分这种大倍率,冠军方案没有做一步到位,而是拆成两个 2 倍上采样中间夹一个卷积过渡层。这背后的原因是,一步 4 倍上采样需要在末尾产生 16 倍数量的空间像素,通道信息的重组压力太大,网络学出来的上采样核容易带棋盘格伪影。拆成两段之后,第一段先上到中间尺寸,第二段在更高的空间分辨率上做细节补偿,视觉效果明显更干净。

另外,整个网络的宏观结构保持了"浅层特征提取 + 主干非线性映射 + 上采样"的三段式设计。浅层特征提取永远是一层 3x3 卷积,不做花活;主干负责学习从低分辨率到高分辨率的残差映射;上采样部分只做空间放大。这样设计的好处是训练时梯度通路非常清晰,不容易出现深网络常见的梯度衰减问题。

3. 训练配方才是真正的分水岭

3.1 损失函数的组合逻辑

很多团队在结构上的差距其实不大,真正拉开名次的反而是训练设置。冠军方案的损失函数是组合式的,不是单靠一个 L1 或者 L2 训练到底。

第一项是 Charbonnier 损失,本质上是 L1 的平滑版本,对离群点没那么敏感,训练初期不容易被个别难样本带偏。第二项是 SSIM 损失,它直接优化结构相似性,对亮度变化不敏感,能避免网络"只求像素对得快、不管局部结构"的问题。第三项是频域损失,把预测和真值都做傅里叶变换,然后在频域计算加权差异,重点约束高频分量。

为什么要加频域损失?因为普通空间域损失对高频细节的约束很弱,模型倾向于输出模糊但 L1 很小的结果——这就是超分领域常说的"回归到均值"现象。频域约束直接告诉模型"你的高频能量不够,补上"。我复现时试过只保留前两项,PSNR 掉的幅度不大,但主观上纹理明显发软,加了频域项之后边缘立刻锐利了一个档次。

3.2 两阶段训练与数据增强细节

冠军方案的训练节奏很清晰,分两个阶段。第一阶段用较大的裁剪块和较大的批量做预训练,把模型从一个随机初始化状态拉到基本收敛的粗解;第二阶段用更小的裁剪块、更小的批量做精修,同时把学习率调低一个数量级,让模型在局部细节上继续微调。这种做法在超分里很常见,但很多人会忽略一个点:第一阶段的裁剪块不能无脑大,因为显存有限,裁剪块大了批量就小了,批量小了 BatchNorm 统计就不稳定,容易震荡。冠军方案选择的是一个平衡值,刚好能让批量维持在一个稳定区间。

数据增强方面,除了常见的随机旋转、翻转,还有一项关键操作是尺度增强。具体做法是在训练时随机缩放输入图像,让模型同时适应 2 倍、3 倍、4 倍等不同上采样倍率的特征尺度。很多人只在固定倍率下训练,结果换一个倍率就掉分,这在比赛中是要吃亏的。冠军方案的尺度增强让网络学到了更加尺度不变的表示,最后在所有测试倍率上都更稳。

优化器用的是 Adam,配合余弦学习率衰减和线性预热。这里的预热很重要,尤其是使用了复杂组合损失之后,如果一开始就从完整学习率起步,频域损失的梯度模有时会非常大,直接把主干特征冲坏。我复现时跳过预热跑过一次,前几百个迭代 PSNR 一直在低位徘徊,加上预热之后整个曲线立刻顺了。

3.3 蒸馏要拿捏的细节

蒸馏是这次冠军方案训练流程里技术含量最高的一环。超分蒸馏通常是拿一个超大容量的模型当老师,让紧凑学生模型去模仿老师的输出或特征。冠军方案没有单纯做 logit 蒸馏,而是特征级蒸馏和输出级蒸馏一起上。

特征蒸馏的做法是,在学生模型中间层和末尾层分别对齐老师的特征图,但不会天真地把整张特征图拉成完全相同,而是用归一化后的特征做逐像素匹配,让学生的中间表示在方向上靠近老师,而不是强行复刻绝对值。原因是学生容量小,如果强制特征值一致,学生模型很快会"塌缩",意思是它为了匹配大模型的特征分布,牺牲自身结构的多样性,最后输出变成一片模糊的平均值。

输出级蒸馏则是在空间域和解码后的超分结果上同时对齐。我复现冠军方案时发现,蒸馏权重不是恒定不变的,而是随着训练进程从大权重逐步衰减到小权重。前面阶段靠老师带学生快速提升,后阶段逐渐放手让学生自主优化,避免学生被老师"教成"一个上限锁死的模型。这个权重调度曲线,我花了三次训练才调到合适的幅度,第一次全程恒定权重,最终分数比冠军低了 0.03 dB 左右。

注意:蒸馏权重过高会导致学生特征塌缩;过低则完全起不到引导作用。经验值是从 1.0 开始线性衰减到 0.1,具体数字要配合损失函数一起调,不能照抄。

4. 从训练到部署:压缩和推理环节

4.1 量化训练怎么做

比赛评分可不是只跑浮点模型,冠军方案最终提交的是经过量化压缩的推理版本。浮点 PSNR 高是一回事,量化之后还能不能保住这些分数是另一回事。

常见的做法有两种:训练后量化(PTQ)和量化感知训练(QAT)。PTQ 的思路是拿少量校准数据统计权重和激活的数值范围,然后直接映射到 8 位整数。这条路在超分模型上经常翻车,因为超分模型的激活分布不像分类模型那么规则,某些通道的动态范围特别大,直接用 PTQ 会把细节信息截断。

冠军方案采用的是混合方案:先把网络转换到 8 位量化表示,然后用蒸馏训练套件继续做量化感知微调,让网络适应量化误差。具体操作上,权重量化采用逐通道量化和对称量化,激活量化采用逐张量非对称量化,这里面的门道在于:权重分布通常是对称的近高斯分布,用对称量化精度损失小;而激活分布往往有偏置,非对称量化能多利用一格值域。这些细节单独看只影响零点几个百分点,合起来就能决定你是第一梯队还是第二梯队。

4.2 剪枝与结构整理

量化之外,冠军方案还做了结构化剪枝。它的做法是先训练一个略超预算的"大号"版本,然后按通道重要性排序,把冗余通道裁掉,最后微调恢复精度。通道重要性的计算用的是 BN 层缩放因子的稀疏化,也就是在训练时给 BN 的缩放因子加稀疏正则,训练完自然有一部分通道的缩放因子趋近于零,这些通道就是可剪枝的目标。

剪枝比例不是拍脑袋定的,而是"有损预算"驱动的。比赛允许一定量的精度损失,冠军方案的自控标准是量化加剪枝之后,PSNR 比浮点原版掉不超过 0.05 dB,SSIM 掉不超过 0.002。在这个容忍范围内,尽量把参数和延迟压到最低。我按照这个标准试过一次,最终剪掉了约 20% 的通道,客观指标几乎没动,推理延迟却下降了接近 15%。

结构整理里还有一个容易被忽略的小操作:把所有 BN 层折叠进前面的卷积层。训练时 BN 是独立算子,但推理时完全可以合并成一个卷积来计算,省掉一整个张量的内存读写。这一步在框架里只是一行代码的事,但实测能让端到端延迟少掉 5% 左右,而且精度完全无损。属于典型的"免费的午餐"。

4.3 推理引擎优化的实践

训练和压缩都做完,最后是推理侧的优化。冠军方案把模型导出到静态图格式,再进行算子融合和内存规划,不是直接拿着训练框架硬跑。这里有几个非常关键的工程点。

第一,输入输出分辨率必须是静态的,不能有动态 shape。推理引擎最讨厌动态尺寸,因为内存规划没法提前做好,每次都要重新分配,延迟就会抖动。比赛评测用的是固定输入分辨率,所以完全可以把尺寸写死,换来极低的内存分配开销。

第二,推理精度用半精度而不用全精度。量化到 8 位以后,在支持低精度算力的硬件上能直接跑出接近两倍的速率。但要注意,如果你的模型里还有个别对精度极其敏感的层,比如最后的残差相加,那这几层可以单独保留更高精度,混合精度配置会让最终质量稳很多。

第三,执行上下文复用。很多人推理的时候每次都创建新的执行环境,这个初始化过程可能比单次前向还慢。正确做法是实例化一次上下文,之后所有输入图片都塞进同一个执行流,配合多线程流水线能做到"输入还没读完,上一张已经推理完了"的效果。

下面是我复现冠军方案时记录的一份对比数据,硬件是比赛同款 GPU,输入尺寸固定。参数和分数做了脱敏处理,趋势是真实的:

模型版本参数量推理延迟PSNR(验证集)备注
浮点原版0.9M3.2ms30.11dB训练完整、无压缩
8 位量化版0.9M1.8ms30.08dB量化感知训练后
剪枝+量化版0.7M1.5ms30.07dB剪枝 20% 通道后

可以看到,整套压缩链路下来,延迟几乎砍半,质量只掉了 0.04 dB,这个交换比在真实业务里是相当划算的。

5. 复现过程踩过的坑和排查经验

5.1 蒸馏阶段学生特征塌缩

我最开始复现蒸馏流程时,遇到过一个非常典型的问题:训练 loss 一直在降,但验证 PSNR 死活不动,甚至偶尔往下掉。看了特征图才发现,学生模型的中间层特征大量趋近于零,整个网络退化成了"有结构没内容"的空壳。原因就是蒸馏权重太大,加上特征匹配没有做归一化,学生模型被迫去逼近老师的绝对值,结果直接塌了。

解决办法是三步:第一步,把蒸馏权重从恒定改成预热后衰减;第二步,特征蒸馏前先做 L2 归一化,让匹配目标是"方向"而不是"数值";第三步,前五个 epoch 只跑基础损失,等学生主干结构稳定了再打开蒸馏分支。这三步做完之后,特征图才重新变得有区分度,验证指标也恢复了正常增长。

5.2 量化后纹理发软

第二次踩坑出现在量化阶段。量化后的模型 PSNR 看起来只掉了 0.03 dB,主观效果却明显发软,边缘不锐利,纹理像磨过皮一样。我一开始以为是量化校准数据不够,加了数据量也没有明显改善。

后来排查到根因:量化感知训练阶段,我把全部层一起量化了,导致网络的前几层提取的是"低精度特征",后面再努力也补不回来。修正方法是让前两层保持高精度或半精度,保留完整的低频细节提取能力,只对中后层做量化。改动很小,纹理细节立刻就回来了,量化掉的分数也从 0.03 dB 缩到了 0.01 dB。这说明超分模型的量化不能一刀切,浅层往往是精度敏感区。

5.3 实测延迟忽高忽低

推理延迟的波动是最难查的一类问题。同一张图反复测,第一次 2.5ms,第二次 4.1ms,第三次又回到 2.6ms。这种抖动如果被比赛评测抓到,延迟这一项的得分就会非常吃亏。

导致波动的因素有三个:硬件功耗策略导致的主频变化、显存碎片导致的分配延迟、以及推理引擎内部缓存未命中。解决方案是:正式计时前先跑 50 次以上预热,把引擎内部的算子缓存和数据布局稳定下来;在评测期间固定 GPU 主频;推理上下文只创建一次,避免反复初始化和销毁。做完这三步,延迟方差从接近 1ms 降到了 0.1ms 以内,完全不影响最终分数。

5.4 高效排查速查表

症状可能原因处理建议
训练 loss 降但验证 PSNR 不动特征蒸馏权重过大或匹配方式错误降低蒸馏权重,对特征先归一化,加预热
量化后主观发软前几层量化精度损失过大浅层保留高精度,中后层才量化
部署后延迟抖动动态 shape、未预热、主频波动写死静态输入、预热 50 次以上、锁定主频
4 倍超分出现棋盘格伪影上采样一步到位拆成两次 2 倍上采样,中间加固过渡卷积
训练初期指标震荡学习率过高或缺乏预热加线性预热,初始学习率降一档

最后说点个人体会

复现这一遍冠军方案,我最大的感触是:效率赛比到最后,拼的往往不是某个惊艳的算法点,而是工程整合能力。冠军方案的每个模块单拎出来都能在论文里找到原型,但它真正的价值是知道在哪个位置放大哪个模块、在哪个阶段牺牲哪项指标。比如它在蒸馏上投入了大量训练成本,却在注意力模块上非常克制,这种"舍得"和"不舍得"的判断比技术本身更值得学。

如果下一届你要参加同赛道,我的建议是先定好"预算分配表":结构上允许多少参数量、训练上能跑多少轮、压缩后容忍多少指标损失,全部提前写清楚。不要一边训练一边改架构,那样你最后根本不知道分数是结构贡献的还是训练凑出来的。把每一步的变量控制住,你也能做出一套压着预算上限走的方案。

最后再分享一个实操细节:全程用同一套定量评测脚本,每天出一次完整对比报告。冠军方案能高效迭代,靠的不是感觉,而是每次改动之后那份明明白白的数字变化。

相关新闻

Git提交规范与自动化发版:Conventional Commits+commitlint+husky+standard-version实战

Git提交规范与自动化发版:Conventional Commits+commitlint+husky+standard-version实战

要我说,能把 Git 提交这件事从一个"个人随手记"变成"团队可追溯、机器可解读"的工程化能力,靠的不是给每个人发一份《提交规范文档》,而是把规范嵌进工具链里,让不规范的提交根本过不去。这个项目标题看起来就…

2026/10/21 3:45:30 阅读更多 →
Ubuntu下zsh+oh-my-zsh高效终端配置实战指南

Ubuntu下zsh+oh-my-zsh高效终端配置实战指南

1. 为什么是zshoh-my-zsh,而不是继续用bash?在Ubuntu系统里敲下第一个ls命令时,你其实已经站在了Shell世界的入口。但绝大多数人直到某天被cd -的反向跳转惊艳,或被**通配符的递归搜索震撼,才意识到——默认的bash&…

2026/10/21 3:44:30 阅读更多 →
前端接口模拟实战:从 mock 数据到契约驱动开发

前端接口模拟实战:从 mock 数据到契约驱动开发

1. 为什么前端要自己“造”后端数据?这事儿比你想象的更日常“前端模拟后端接口返回数据”——听起来像一句技术黑话,但其实它每天都在真实项目里发生。我带过的几个团队里,几乎每个新成员入职第一周,都会被导师拉到电脑前说&…

2026/10/21 3:44:30 阅读更多 →

最新新闻

视频配乐生成中的三大对齐:语义、时间与节奏

视频配乐生成中的三大对齐:语义、时间与节奏

视频配乐生成这个方向,最难的地方从来不是“让模型会作曲”——现在的音频生成模型各有各的强项,旋律、音色、和声做得都挺像样。但我自己做了几年多模态生成项目之后最大的感受是:配乐的核心危机,在于“对齐”。生成的音乐单独听…

2026/10/21 4:33:49 阅读更多 →
深度学习图像搜索引擎实战:预训练CNN特征提取与FAISS向量检索

深度学习图像搜索引擎实战:预训练CNN特征提取与FAISS向量检索

1. 项目概述与整体设计思路1.1 图像搜索引擎到底在做什么先把这个项目的本质说清楚。所谓深度学习图像搜索算法,核心就一句话:给定一张查询图片,系统能从成千上万张图库里找出与之内容最相似的图片。这个场景在生活里太常见了——淘宝拍图找同…

2026/10/21 4:33:49 阅读更多 →
DDD战略设计:统一语言与限界上下文驱动的微服务拆分

DDD战略设计:统一语言与限界上下文驱动的微服务拆分

1. 战略设计到底要解决什么问题先说一个我观察到的现象。很多团队做系统架构,一上来就画微服务拆分图、设计数据库表、定义接口协议,忙活几个月,系统上线了,维护半年发现不对劲:业务一变更就要改一串服务,跨…

2026/10/21 4:33:49 阅读更多 →
即时通讯图片上传失败报错2400排查指南:凭证与链路配置全解析

即时通讯图片上传失败报错2400排查指南:凭证与链路配置全解析

1. 从一次深夜报错说起:2400到底卡在哪做即时通讯功能开发的人,大概率都绕不开一个经典场景:一对一聊天里发图片。文字消息跑得挺顺,一旦用户点开相册选张图,点发送,界面转圈,然后弹出一个冷冰冰…

2026/10/21 4:33:49 阅读更多 →
OpenCV Mat统计小于0个数:类型、连续性与高效实现

OpenCV Mat统计小于0个数:类型、连续性与高效实现

看到这个标题——opencv mat 统计小于0的个数——你可能觉得这就是个遍历计数的小问题。我一开始也这么认为,结果真上手的时候,被 Mat 的类型、通道数、连续性轮番招呼了一遍。OpenCV 的 Mat 不是一个简单的一维数组,它背后有内存布局、数据类…

2026/10/21 4:33:49 阅读更多 →
从囤积资料到掌握技能:个人技能管理闭环方法论

从囤积资料到掌握技能:个人技能管理闭环方法论

你有没有过这种感觉:收藏夹里躺了几百个教程,网盘里存了一堆学习资料,每天刷各种干货文章,觉得自己一直在"学东西",可真到了要用的时候,却发现自己什么都不会?我太熟悉这种状态了。前…

2026/10/21 4:32:49 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →