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

图解目标检测算法之CenterNet

欢迎来到图解深度学习的世界博客主页卿云阁欢迎关注点赞收藏⭐️留言首发时间2026年3月20日✉️希望可以和大家一起完成进阶之路作者水平很有限如果发现错误请留言轰炸哦万分感谢目录前言网络结构数据的介绍特征和标签分别是什么网络预测hm 预测wh 预测offset 预测推理Decode损失函数的计算前言传统的 Anchor-based基于先验框YOLO 系列或者 Faster R-CNN它们找小猫的方式非常“暴力”。 算法会预先准备好成千上万个大大小小、长长短短的先验框 。 为了只保留最准的那一个框算法在最后必须进行非极大值抑制把重叠的废框全删掉。所以大家觉得这根本算不上端到端End-to-End。真正的 Anchor-free无先验框算法根本不需要提前准备任何“空相框”。输入一张小猫照片算法直找准中心点报出长宽直接生成最终的检测框。这是我们要介绍的算法CenterNet。它的核心理念就是它的英文原名Objects as Points —— 万物皆可看作一个点。为什么不用 Faster R-CNN 或 YOLO非要选 CenterNet大家可以对比一下两种方案的匹配难度用传统先验框如 Faster R-CNN图像上全是密密麻麻、相互重叠的候选框。一根雷达柱子投射过来会同时穿透几十个框雷达特征到底该给谁匹配逻辑简直是一场灾难。用CenterNetAnchor-free它颠覆了传统直接把目标提取为一个极其干净的 2D 中心点 。雷达数据是 3D 空间里的“点柱子”视觉网络输出的是 2D 图像上的“点”。两者一拍即合极其优雅地完成了“点对点匹配” 网络结构这种 Backbone - Decoder - Head 的三段式架构我个人觉得更像是Encoder-Decoder编码器-解码器结构Backbone (骨干网络)为了特征提取通过多次卷积和下采样通常缩小 32倍网络整合了全局信息获得了极强的语义信息Semantic Information严重丢失了空间分辨率Spatial Resolution。Decoder (解码器)恢复空间分辨率。Head (预测头)输出最终的预测结果。为什么要分成三个并行的分支这在学术界被称为Decoupled Head解耦头。因为它们对特征的需求是完全矛盾的Heatmap找中心点属于分类任务它需要平移不变性Translation Invariance。一只狗在画面左边还是右边它都得认出那是狗的中心。Size Offset算宽高和偏移属于回归任务它们需要极强的平移等变性Translation Variance。物体变大变小、稍微移动一点预测的数值必须立刻产生精准的相应变化。假设我们输入一张 3*512* 512的图片Batch size 设为 1Backbone (骨干网络特征提取)原始大小[1, 3, 512, 512]的特征图 使用 ResNet50网络经过 5 个 Stage 的疯狂下采样每次尺寸减半。得到[1, 2048, 16, 16] 大小的输出此时的特征图长宽缩小了 32 倍512/32 16。这里的空间细节已经非常模糊了但 2048 个通道里装满了极其丰富的高级语义信息它已经能认出那是狗的毛发和轮廓。Decoder (解码器细节复原)因为 16 *16 实在太小了没法做精准的位置预测所以必须把它放大。输入[1, 2048, 16, 16]过程连续 3 次反卷积Deconv 4x4 BN ReLU每次尺寸放大 2 倍通道数递减。第一次反卷积[1, 256, 32, 32]第二次反卷积[1, 128, 64, 64]第三次反卷积[1, 64, 128, 128]输出[1, 64, 128, 128] 这就是您提到的最关键的 1/4 尺寸此时通道数被浓缩到了 64空间分辨率恢复到了 128* 128。Head (预测头分工合作)接收到 [1, 64, 128, 128] 的特征图后进入三个组件HeatMap、WidthHeight以及Offset。三个组件都需要经过64维的Conv BN ReLU然后分别用对应的卷积层输出。因为卷积核都是 1x1 且stride 为 1所以尺寸永远保持在输入的 1/4128x128。HeatMap输出 [1, num_classes, 128, 128]Sigmoid 激活。WidthHeight输出 [1, 2, 128, 128]线性输出。Offset输出 [1, 2, 128, 128]线性输出。HeatMap的最后一个卷积层通道维度为分类数量卷积核大小为1x1最后需要用sigmoid激活函数处理一下。其输出的形式和解码类似于语义分割。在物体的中心它的响应很强接近于1在背景部分为0。我们解码的时候在通道维度上进行Argmax即可得到最终的分类index。WidthHeight对应的是检测框宽高因为宽高信息为2个所以其最后一层卷积通道输出维度为2卷积核大小为1x1。Offset由于HeatMap的到的响应是基于物体中心的而且相当于输入来说是下采样四倍的从HeatMap中的到的物体中心是有一点误差的。所以需要用Offset的结果对物体中心点进行修正如下图所示其最后一层的卷积通道维度为2卷积核大小为1x1。数据的介绍特征和标签分别是什么假设我们现在有一张512x512的图片里面只有一只狗类别 ID 是16。这只狗在原图上的真实标注框Bounding Box是左上角(x_1100, y_1120)右下角(x_2220, y_2300)。坐标缩水除以 Stride我们要把原图上 512 * 512 尺寸的框搬到 128* 128的图上。所有的坐标统统除以 4新 x_1 100 / 4 25新 y_1 120 / 4 30新 x_2 220 / 4 55新 y_2 300 / 4 75这只狗在特征图上的框变成了 [25, 30, 55, 75]。计算物体的宽、高和中心点现在用缩小后的新坐标来算宽 (w): 55 - 25 30高 (h): 75 - 30 45接下来算极其关键的中心点精确中心点 ct 和 网格中心点 ct_int精确的 X 中心: (25 55) / 2 40.0精确的 Y 中心: (30 75) / 2 52.5所以 ct [40.0, 52.5]。因为特征图上的坐标只能是整数它是一个个网格我们强行丢掉小数所以网格中心点ct_int [40, 52]。标签hm (热力图)找到第 16 层因为狗的类别是 16。找到第 52 行第 40 列。把 hm[52, 40, 16] 这个位置的值改成 1.0。代码会根据宽 30 高 45 算出一个高斯半径假设算出来是 3。然后在这个 1.0 的周围画圈旁边一圈的格子填 0.8再往外一圈填 0.5……形成一个发热的“光晕”。wh (宽高图)找到第 52 行第 40 列。把第 0 层宽的值改为 30wh[52, 40, 0] 30把第 1 层高的值改为 45wh[52, 40, 1] 45offset (偏移量图)X 的误差: 40.0 - 40 0.0Y 的误差: 52.5 - 52 0.5找到第 52 行第 40 列。把第 0 层X偏移的值改为 0.0offset[52, 40, 0] 0.0把第 1 层Y偏移的值改为 0.5offset[52, 40, 1] 0.5网络预测hm 预测标准答案里(52, 40) 是完美的 1.0周围是平滑的高斯衰减其他地方全是绝对的 0。但网络的预测经过 Sigmoid 激活后是一堆 0 到 1 之间的小数看起来像一团朦胧的云找狗的通道第 16 层 hm[:, :, 16]在靶心 (52, 40)网络很自信但不绝对。它可能输出 0.92。在靶心旁边 (52, 41)网络有点犹豫输出 0.85。在靶心上面 (51, 40)网络输出 0.88。在纯背景 (10, 10)网络扫了一眼觉得没东西但不会输出绝对的 0可能是 0.001 或 0.01 这样的暗淡噪点。找猫的通道第 17 层 hm[:, :, 17]在 (52, 40) 狗的位置网络看这毛茸茸的有点像猫可能会输出一个小小的干扰值比如 0.15。其他地方基本是很小的数值比如 0.005。wh 预测在有狗的位置 (52, 40)因为训练时这里有 Mask1 的“鞭策”网络在这里学得很认真。它预测的宽可能是 28.5真实是 30。它预测的高可能是 46.2真实是 45。虽然不完美但已经非常接近真相了在纯背景的位置 (10, 10)极其疯狂因为训练时这里的 Mask0网络在这里不管猜什么都不会被扣分。所以它在这里彻底“放飞自我”了它预测的宽可能是 -15.3。它预测的高可能是 204.8。整个矩阵里除了狗所在的那一小块区域有正常的数值其余 16000 多个格子里全都是毫无逻辑、随机狂飙的垃圾数字Garbage Values。offset 预测和 wh 的情况一模一样只在中心点附近有意义。在有狗的位置 (52, 40)真实答案需要往右偏移 0.0往下偏移 0.5即 [0.0, 0.5]。网络努力预测出的结果可能是X 偏移 0.05Y 偏移 0.42。尽力了有一点点小误差。在纯背景的位置 (10, 10)同样因为 Mask0 放任自流这里全是乱码比如预测出 X 偏移 -0.8Y 偏移 1.推理Decode3x3 最大池化hm 矩阵第 16 层狗。靶心 (52, 40) 概率是 0.92旁边 (52, 41) 是 0.85上面 (51,40) 是 0.88。您拿出一个 3x3 的“扫描框”Max Pooling盖在上面盖在 (52, 40) 上框里最大值是 0.92。原值 0.92 框内最大值 0.92。判定真正的山峰保留。盖在 (52, 41) 上框里也包含了那个 0.92所以框内最大值是 0.92。原值 0.85 ! 框内最大值0.92。强行变成 0。Top-K 排序把被清洗过的hm 矩阵80 层128x128 个点全部摊平按照概率大小从高到低排个名次只取前 100 名。因为我们这张图里只有一只狗这只狗以 0.92 的超高分毫无悬念地拿下了全场第1 名至于那些背景里 0.01 的小噪点它们连前 100 的门槛都摸不到直接被淘汰出局。即使有进了前 100 的后续也会被一个及格线比如 阈值 0.3无情刷掉。反推类别和坐标您拿着第 1 名的索引号去反查瞬间得到三个关键信息16 层 类别狗。行号52 Y 坐标52。列号40 X 坐标40。至此您彻底锁定了目标在特征图上的网格位置(52, 40)。 矩阵里其余 16383 个位置您看都不用再看一眼了精准提货读取 wh 和 offset这是最爽的一步。您带着 (52, 40) 这个坐标像 VIP 客户一样直奔另外两个矩阵的对应“专柜”提货去 wh 矩阵的 (52, 40) 专柜提取出网络预测的宽和高w 28.5h 46.2。(旁边 (10, 10) 那个乱飞的背景宽度 -15.3因为没人去取直接烂在了内存里)去 offset 矩阵的 (52, 40) 专柜提取出网络预测的微调小数 x 0.05y 0.42。组装原图边界框原材料全齐了现在我们把它们组装成最终的 [x_min, y_min, x_max, y_max]并放大回 512x512的原图。算准亚像素中心点特征图尺度精确 X 40 (网格) 0.05 (偏移) 40.05精确 Y 52 (网格) 0.42 (偏移) 52.42向四周扩展算出四个角特征图尺度左边界 x_min 40.05 - (28.5 / 2) 40.05 - 14.25 25.8上边界 y_min 52.42 - (46.2 / 2) 52.42 - 23.1 29.32右边界 x_max 40.05 14.25 54.3下边界 y_max 52.42 23.1 75.52终极复原放大回原图因为特征图比原图小 4 倍所以把这四个数字全部 乘以 4最终 X1 25.8 * 4 103.2 真实答案是 100非常接近最终 Y1 29.32 * 4 117.28 真实答案是 120极其精准最终 X2 54.3 * 4 217.2 真实答案是 220贴合得很好最终 Y2 75.52 * 4 302.08 真实答案是 300完美包裹您成功地把一堆带有噪点的矩阵变成了一个无比精准的原图预测框 [103.2, 117.28, 217.2,302.08]而且完全知道它是一只狗。这就是 CenterNet Decode 过程从头到尾的魔法损失函数的计算真实的狗中心点在 (40, 52)宽 30高 45X偏移 0.0Y偏移 0.5。照片里只有这 1 只狗所以目标总数 N 1。为了演示我们假设网络此时给出了以下预测值靶心位置 (40, 52)预测概率 0.9很自信预测宽 28高 46预测X偏移 0.1Y偏移 0.4。靶心旁边 (41, 52)真实高斯衰减值是 0.8网络预测概率是 0.85有点高。纯背景 (10, 10)真实值是 0.0网络预测概率是 0.1预测宽高是 100 和 -50瞎猜的垃圾数据。Heatmap 损失中心(40, 52)这里 Y 1.0网络预测 hat{Y} 0.9。套用上面第一行公式误差 -(1 - 0.9)^2 *ln(0.9) -(0.1)^2 *(-0.105) -0.01 * -0.105 0.00105老师点评惩罚极小网络猜 0.9 已经很棒了几乎不扣分。纯背景点(10, 10)这里 Y 0.0网络预测 hat{Y} 0.1。套用下面第二行公式误差 -(1 - 0)^4* (0.1)^2*ln(1 - 0.1) -1 * 0.01*(-0.105) 0.00105老师点评惩罚也很小。因为背景本来就该是 0网络猜 0.1只偏了一点点。中心点附近高斯光晕”(41, 52)真实高斯值 Y 0.8网络预测 hat{Y} 0.85。套用下面第二行公式误差 -(1 - 0.8)^4 * (0.85)^2 * ln(1 - 0.85) -(0.2)^4 * (0.7225) *ln(0.15) -0.0016 * 0.7225*(-1.897) 0.0022高斯光晕内部Loss 函数给了它一个超级免死金牌权重极小对它“网开一面”容忍了它在中心点附近的轻微发散。尺寸与偏移损失算宽度真实 30预测 28。误差 |28 - 30| 2.0算高度真实 45预测 46。误差 |46 - 45| 1.0算X偏移真实 0.0预测 0.1。误差 |0.1 - 0.0| 0.1算Y偏移真实 0.5预测 0.4。误差 |0.4 - 0.5| 0.1

相关文章:

图解目标检测算法之CenterNet

🌞欢迎来到图解深度学习的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 📆首发时间:🌹2026年3月20日🌹 ✉️希望可以和大家一起完成…...

Qwen3-ASR-1.7B惊艳效果:戏曲唱段(京剧/越剧)台词精准转写

Qwen3-ASR-1.7B惊艳效果:戏曲唱段(京剧/越剧)台词精准转写 你听过AI识别流行歌曲,但你见过AI听懂京剧唱腔吗?传统戏曲的转写,尤其是那些带着独特唱腔、方言和复杂背景音乐的唱段,一直是语音识别…...

智能电脑排班系统V2024|全自动、高自由度、零门槛排班工具

温馨提示:文末有联系方式产品定位:新一代智能电脑排班系统 扩展版智能排班软件(2024最新稳定版)是一款专为中小团队设计的桌面级自动化排班解决方案。 它融合AI逻辑引擎与人性化交互,兼顾智能调度与人工干预自由度&…...

Qwen3-Reranker-4B实战教程:Qwen3-Reranker-4B在智能法务合同审查中的条款关联重排

Qwen3-Reranker-4B实战教程:Qwen3-Reranker-4B在智能法务合同审查中的条款关联重排 1. 引言 你有没有遇到过这样的情况?一份几十页的合同摆在面前,你需要快速找到所有与“违约责任”相关的条款,但它们在文档里散落各处&#xff…...

关于入手微磁学仿真软件Mumax3的若干问题及解决方案(第一部分)

一.背景及下载 1.什么是MuMax3? MuMax3 是一款基于 GPU 加速的开源微磁学模拟软件,由比利时根特大学开发。它利用有限差分法求解 Landau-Lifshitz-Gilbert (LLG) 方程,凭借 CUDA 核心的并行计算能力,其模拟速度比传统基于 CPU 的…...

零基础玩转GLM-OCR:单卡4090一键部署,纯文本/公式/表格全能解析

零基础玩转GLM-OCR:单卡4090一键部署,纯文本/公式/表格全能解析 1. 工具概览:你的全能文档解析助手 想象一下,你手头有一堆扫描的PDF、照片或截图,里面有重要文字、复杂公式和结构化表格。传统OCR工具要么识别不准&a…...

SUNFLOWER MATCH LAB硬件对接:基于STM32F103C8T6最小系统板的图像采集端设计

SUNFLOWER MATCH LAB硬件对接:基于STM32F103C8T6最小系统板的图像采集端设计 最近在做一个植物生长监测的项目,需要部署一批低成本的图像采集终端。核心需求很简单:定时给植物拍照,然后把照片传到云端服务器。听起来不难&#xf…...

同样是硅做的圆片,价差百倍的秘密:半导体与光伏晶圆的本质区别

如果你留意过半导体和光伏行业的产品价格,一定会有这样的疑问:同样是硅材质、尺寸相近的晶圆,高端半导体晶圆一片能卖到几千元,而光伏硅片却只要几十元,身价相差近百倍。明明都是“硅做的圆片”,为何命运如此不同? 其实答案很简单:它们看似同宗同源,实则从一开始就被…...

OpenClaw环境迁移指南:千问3.5-9B配置备份与恢复

OpenClaw环境迁移指南:千问3.5-9B配置备份与恢复 1. 为什么需要环境迁移? 上周我的主力开发机突然硬盘故障,导致OpenClaw的整套配置丢失。重新搭建环境时,光是飞书通道的授权验证就花了2小时,更别提那些精心调试的自…...

GPEN完整操作流程:从HTTP链接访问到结果保存

GPEN完整操作流程:从HTTP链接访问到结果保存 1. 引言:你的数字美容刀 你有没有翻出过一张老照片,里面的人脸模糊得只剩下轮廓?或者,用AI生成了一张很棒的图,偏偏人脸部分崩坏了?又或者&#x…...

# 系列文3:前后端彻底解耦!统一入参解析,前端只发JSON,后端随意

系列文3:前后端彻底解耦!统一入参解析,前端只发JSON,后端随意 非科班野生程序员,深耕政务信息化20年,这套自研Java Web框架支撑过省级新农保、全国跨省医保结算等核心民生系统,18年稳定运行至今…...

Swoole 5.0适配踩坑实录,深度解析协程生命周期变更、内存管理新规与RPC协议不兼容问题

第一章:Swoole 5.0升级适配全景概览Swoole 5.0 是一次面向现代化 PHP 协程生态的重大演进,彻底移除对传统同步阻塞 API 的兼容包袱,全面拥抱协程原生化设计。其核心变化涵盖事件循环重构、协程调度器强化、HTTP/Server 接口标准化&#xff0c…...

VSCode下载与配置Starry Night Art Gallery开发环境

VSCode下载与配置Starry Night Art Gallery开发环境 如果你对“Starry Night Art Gallery”这个项目感兴趣,想动手参与开发或者自己搭建一个类似的数字艺术画廊,那么第一步就是准备好趁手的开发工具。Visual Studio Code(简称VSCode&#xf…...

手把手教你用Phi-4-mini-reasoning搭建智能解题助手:从部署到实战

手把手教你用Phi-4-mini-reasoning搭建智能解题助手:从部署到实战 1. 项目背景与价值 数学解题一直是学习和教学中的关键环节,但传统方式存在效率低下、资源有限等问题。Phi-4-mini-reasoning作为专为推理任务优化的轻量级模型,为解决这些问…...

第六章:异步访问的同步:6.3.1 dma_resv_usage 层级机制详解

1. 概述 dma_resv(DMA reservation object)是 Linux 内核中管理 GPU buffer 同步的核心机制。每个 dma_resv 对象维护一组 dma_fence,用于追踪对该 buffer 的各种操作。 enum dma_resv_usage 定义了 fence 的用途级别,控制"谁…...

C语言调用MiniCPM-V-2_6推理引擎:高性能嵌入式AI接口开发指南

C语言调用MiniCPM-V-2_6推理引擎:高性能嵌入式AI接口开发指南 如果你是一名C语言开发者,或者正在为嵌入式设备寻找一个既强大又高效的视觉语言模型,那么你来对地方了。今天我们要聊的,是如何用最纯粹的C语言,去直接调…...

YOLOv12官版镜像实战:手把手教你验证COCO数据集,小白也能轻松上手

YOLOv12官版镜像实战:手把手教你验证COCO数据集,小白也能轻松上手 1. 环境准备与快速部署 1.1 镜像环境概览 YOLOv12官版镜像已经预装了所有必要的运行环境,开箱即用。主要配置包括: Python 3.11环境PyTorch 2.5深度学习框架C…...

【THM-题目答案】:Privilege Escalation-Linux Privilege Escalation-Privilege Escalation:PATH

1. 你有写权限的文件夹是什么? What is the odd folder you have write access for?/home/murdoch【思路】:find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -u2. 利用$PATH漏洞读取flag6.txt文件的内容。 Explo…...

ACE-Step应用场景解析:如何为视频快速生成背景音乐?

ACE-Step应用场景解析:如何为视频快速生成背景音乐? 1. 引言:视频创作者的背景音乐痛点 在视频创作过程中,背景音乐的选择往往成为最耗时的环节之一。专业音乐授权费用高昂,免费音乐库又难以找到完全匹配的内容&…...

华为OD机试真题 新系统2026-04-01 C++实现【空间占用计算】

目录 题目 思路 Code 题目 员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。 规则说明…...

IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决

IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决 1. 快速入门:IndexTTS2 V23简介 IndexTTS2 V23是由开发者"科哥"推出的最新开源文本转语音(TTS)系统,相比前代版本,它在情感控制和语音自然度…...

Qwen3-14B-Int4-AWQ实战:利用VLOOKUP函数思想实现跨数据源信息智能关联

Qwen3-14B-Int4-AWQ实战:利用VLOOKUP函数思想实现跨数据源信息智能关联 1. 引言:当Excel遇到大数据 "小王,帮我把这两个表格的数据匹配一下。"这样的需求在数据分析工作中再常见不过了。在Excel里,我们通常会使用VLOO…...

数据库安全与运维管控(二):从“共享账号”到本地账密泄露分析

在日常的研发联调和生产排障中,开发人员不可避免地需要连接数据库来核对数据或验证逻辑。目前绝大多数企业的做法依然是:DBA 在底层数据库中执行 GRANT 命令,创建一个只读账号(如 dev_readonly),然后将 IP …...

基于影墨·今颜的Java面试题智能生成与解析系统

基于影墨今颜的Java面试题智能生成与解析系统 面试,对于技术人来说,既是展示能力的舞台,也是一场需要精心准备的“考试”。无论是面试官绞尽脑汁设计能考察真实水平的题目,还是求职者海量刷题却不得要领,传统的面试准…...

Janus-Pro-7B集成Dify实战:构建企业级AI应用工作流

Janus-Pro-7B集成Dify实战:构建企业级AI应用工作流 最近和几个做企业服务的朋友聊天,他们都在头疼一件事:公司里各种业务场景都想用上AI,比如自动审核用户上传的图片、根据商品图生成营销文案,但真要动手做&#xff0…...

大模型学习第8天--python基础(数据结构:列表字典元组)

2026.04.08周二第四部分数据结构:列表list 字典dict 元组tuple 已看完 还剩集合set明天看#列表——增 # stu [] #空列表 # stu ["小明", 18, True, "boys"] # teacher [张老师, 赵老师, 徐老师] # school [teacher, stu, 工作人员, 100] …...

nanobot惊艳效果展示:用‘生成一份Python爬虫获取CSDN文章标题’指令执行结果

nanobot惊艳效果展示:用‘生成一份Python爬虫获取CSDN文章标题’指令执行结果 今天,我想和大家分享一个让我眼前一亮的AI助手体验。最近,我在一个预置了nanobot的镜像环境中,尝试了一个非常具体的指令:“生成一份Pyth…...

Kandinsky-5.0-I2V-Lite-5s本地化部署精讲:JDK环境配置与Docker封装

Kandinsky-5.0-I2V-Lite-5s本地化部署精讲:JDK环境配置与Docker封装 1. 开篇:为什么选择本地化部署 如果你正在寻找一个高效的图像转视频解决方案,Kandinsky-5.0-I2V-Lite-5s绝对值得考虑。这个轻量级模型能够在5秒内完成图像到视频的转换&…...

C++ 入门学习经验 02—— 新手最容易遇到的几个问题以及如何解决

大家好啊!这里是阳阳的博客,一个正在努力学习技术的大学生。上一篇和大家聊了刚接触 C 时的环境搭建、学习路径和心态问题,收到了很多同学的共鸣。所以今天这第二篇,我想继续沿着新手学习时的路线,来和大家聊聊刚学 C …...

.NET源码生成器基于partial范式开发和nuget打包绞

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...