红外相机+YOLOv11:小目标检测与实时识别实战
简介这份PDF文档面向从事生态监测、计算机视觉应用开发的学习者与研究人员围绕YOLOv11在野生动物红外相机场景下的实时识别与统计展开共33页支持目录跳转与阅读器左侧大纲快速定位章节结构完整、图表清晰。内容从环境监测与野生动物监测的现状挑战切入系统梳理YOLO系列算法演进与YOLOv11核心原理并延伸至红外相机系统搭建、硬件选型与调试、软件模块开发、数据标注与增强、模型训练与轻量化推理加速、目标计数与跟踪统计等完整链路最后给出实验结果对比与自然保护区、生态研究、农林防护等应用场景分析。资源包为1个PDF文件大小约2.17MB已有73人学习。读者可借此掌握从算法原理到系统落地的整体思路适合作为课程设计、科研选题或项目实践的技术参考。1. 红外相机 YOLOv11为什么这套组合正在替代人工翻看 SD 卡凌晨三点一台架在保护区山脊的红外相机触发拍摄接下来一周里它可能产生两千张照片——其中一千九百张是风吹草动、树叶晃动、温度骤变导致的空拍。传统做法是护林员把 SD 卡拔回来用看图软件一张张翻一天下来眼睛发花真正拍到目标动物的可能只有几十张。这个场景在野生动物监测、生态科研、保护区巡护里非常普遍也是「环境监测黑科技」这个说法真正的落点不是相机本身有多黑科技而是把 YOLOv11 这类实时目标检测模型接到红外相机数据流上让机器先替人把空拍筛掉再自动完成物种识别和数量统计。这套方案解决的核心问题有三个第一空拍率极高人工筛选成本压不下来第二红外触发拍摄的动物往往只占画面很小一块属于典型小目标第三统计需要按时间、点位、物种出报表人工记数容易漏记重记。适合谁做保护区监测站的技术人员、生态方向的研究生、做野生动物识别课题的工程师以及手里已经有一批红外相机照片、想先跑通识别流程再考虑上边缘设备的团队。下面按「数据怎么准备 → 模型怎么训 → 实时识别怎么接 → 统计怎么出 → 坑在哪」的顺序讲透。2. 从 SD 卡到训练集红外相机数据的清洗与标注2.1 红外相机照片的三个脏数据特征红外相机数据不是标准数据集直接拿去训 YOLOv11 大概率翻车。最常见的三个问题是一是大量空拍白天有光影误触发夜间有温度漂移误触发空拍占比经常超过 70%二是灰度夜拍和彩色日拍混在一起同一物种在两种模式下纹理差异极大三是连拍动物经过时相机会连续拍 3 到 10 张画面高度相似如果随机划分训练集和验证集会出现同一组连拍照片同时进训练和验证导致验证指标虚高。处理顺序建议是先去空拍再做连拍分组最后按组划分数据集。去空拍不要只靠文件大小阈值红外相机空拍和实拍的文件大小分布重叠严重更稳的做法是先用一个轻量分类模型或简单的帧差法粗筛再人工抽检。连拍分组可以用拍摄时间戳间隔小于 2 秒的归为一组。import os import json from datetime import datetime # 按时间戳对红外相机照片做连拍分组 def group_bursts(photo_dir, gap_seconds2): files [] for f in os.listdir(photo_dir): if not f.lower().endswith((.jpg, .jpeg, .png)): continue # 红外相机文件名通常含时间戳这里按实际命名规则解析 ts parse_timestamp(f) files.append((ts, f)) files.sort() groups, current [], [] for ts, f in files: if not current: current.append(f) else: prev_ts parse_timestamp(current[-1]) if (ts - prev_ts).total_seconds() gap_seconds: current.append(f) else: groups.append(current) current [f] if current: groups.append(current) return groups def parse_timestamp(filename): # 示例IMG_20240512_031502.jpg stem os.path.splitext(filename)[0] ts_str stem.split(_)[-2] stem.split(_)[-1] return datetime.strptime(ts_str, %Y%m%d%H%M%S) groups group_bursts(./raw_photos) print(f共 {len(groups)} 组连拍)这段代码的关键在gap_seconds参数默认 2 秒适合大多数红外相机连拍间隔如果你的相机连拍间隔是 1 秒或 5 秒要相应调整。分组结果要保存成 JSON后续划分数据集时以组为单位整体划入训练集或验证集不能打散。这一步不做后面 mAP 看着很高实际部署到新点位的照片上会明显掉点。2.2 标注规范小目标框怎么画才不浪费标注成本红外相机里的动物经常只占画面 5% 甚至更小标注时容易犯两个错框画得过大把背景一起框进去或者只框身体主体漏掉头部和尾部。YOLOv11 对小目标本身就不算强项标注再不准召回率会很难看。建议标注规则写死框住动物可见轮廓的外接矩形包括头部和尾部但不包括明显分离的阴影遮挡超过 50% 的个体标为ignore区域不参与损失计算。标注工具用 LabelImg 或 CVAT 都可以导出 YOLO 格式。类别命名要统一比如wild_boar、muntjac、hog_badger不要用中文或空格。如果同一张图里有多个物种每个个体单独一个框。标注完成后做一次交叉检查随机抽 5% 的图让第二个人复核框的 IoU 差异超过 0.3 的重新标。2.3 数据集划分与 YOLOv11 训练配置YOLOv11 的数据集目录结构沿用 Ultralytics 的惯例images/train、images/val、labels/train、labels/val外加一个data.yaml。按连拍组划分时训练集和验证集的比例建议 8:2如果总组数少于 200 组验证集至少留 30 组否则指标波动太大。# data.yaml path: /data/ir_camera_dataset train: images/train val: images/val nc: 4 names: [wild_boar, muntjac, hog_badger, other_animal]训练命令用 Ultralytics 官方接口模型选yolo11s.pt还是yolo11m.pt取决于你的显存和精度要求。红外相机数据量通常不大yolo11s在 8GB 显存上就能跑batch 设 16imgsz 设 640。如果小目标特别多可以把 imgsz 提到 960 或 1280但显存占用会明显上升训练时间也翻倍。yolo detect train \ data/data/ir_camera_dataset/data.yaml \ modelyolo11s.pt \ epochs150 \ imgsz960 \ batch16 \ patience30 \ lr00.01 \ augmentTrue \ projectruns/ir_camera \ nameyolo11s_960patience30表示验证指标 30 轮不提升就早停红外相机数据容易过拟合这个值不要设太大。augmentTrue会启用默认增强但红外夜拍照片的亮度、对比度增强要谨慎过度增强会让模型把灰度纹理当成噪声。如果夜拍样本占比高建议在data.yaml同级加一个hyps.yaml把hsv_v调低到 0.2 左右。3. 小目标优化让 YOLOv11 在红外夜拍里不丢检3.1 红外小目标的三个难点与对应策略红外相机小目标检测的难点和普通可见光小目标不一样。第一夜拍是灰度图动物和背景的热辐射差异有时很小边缘模糊第二动物经常出现在画面边缘或下半部分位置分布不均第三同一物种远近距离下尺度变化大从几十像素到几百像素都有。针对这三点常见做法是提高输入分辨率、增加 P2 小目标检测层、在数据增强里加入随机缩放和马赛克。YOLOv11 默认有三个检测头分别对应 stride 8、16、32。小目标主要靠 stride 8 那一层但如果目标小于 16 像素stride 8 也吃力。加 P2 层stride 4能明显提升小目标召回代价是计算量增加。Ultralytics 的 YOLOv11 配置文件里可以改head部分把 P2 加进去。具体改法是复制一份yolo11s.yaml在head里增加一层上采样和 concat再接到一个新的 Detect 头。# 自定义 yolo11s-p2.yaml 的关键片段 head: - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 2], 1, Concat, [1]] # 融合 P2 特征 - [-1, 3, C3k2, [256, False]] - [[-1, 6], 1, Concat, [1]] - [-1, 3, C3k2, [512, False]] # 后续接 Detect注意 Detect 的输入层索引要对应修改改完配置文件后训练命令里的model换成这个 yaml权重还是加载yolo11s.pt做预训练。注意 P2 层会让显存占用增加约 30%如果原来 batch 16 跑满现在可能要降到 8 或 12。训练时观察val/box_loss和metrics/mAP50-95如果 mAP50 涨了但 mAP50-95 没动说明框的定位精度没提升可能是标注框本身不够准。3.2 数据增强参数怎么调才不伤害红外特征Ultralytics 默认增强里mosaic对小目标有帮助但红外相机连拍照片背景高度相似mosaic 拼接后可能出现不自然的边界模型会学到拼接痕迹。建议把mosaic概率从 1.0 降到 0.5mixup直接关掉因为红外灰度图的 mixup 会产生现实中不存在的热辐射分布。copy_paste可以开但只对同一物种做不要跨物种复制。# 在训练脚本里覆盖默认增强参数 from ultralytics import YOLO model YOLO(yolo11s-p2.yaml).load(yolo11s.pt) model.train( data/data/ir_camera_dataset/data.yaml, epochs150, imgsz960, batch12, mosaic0.5, mixup0.0, copy_paste0.3, degrees10.0, # 红外相机安装角度固定旋转不要太大 translate0.1, scale0.5, # 尺度增强对小目标关键 fliplr0.5, flipud0.0, # 红外相机不会上下颠倒安装 hsv_h0.0, # 夜拍灰度图色相增强无意义 hsv_s0.0, hsv_v0.2 )scale0.5表示随机缩放范围是 0.5 到 1.5 倍这个参数对小目标召回影响很大但设太大比如 0.9会让小目标变得更小反而有害。flipud0.0是因为红外相机安装后不会上下颠倒开了反而引入不真实样本。hsv_h和hsv_s对灰度夜拍没意义设 0 可以省一点计算。3.3 验证阶段怎么看小目标指标训练日志里的metrics/mAP50-95是全体目标的平均小目标表现被大目标掩盖。要单独看小目标得在验证后按框面积分组统计。Ultralytics 的val结果里可以拿到每张图的预测框和真实框自己写脚本按面积分桶算召回。from ultralytics import YOLO import numpy as np model YOLO(runs/ir_camera/yolo11s_960/weights/best.pt) results model.val(data/data/ir_camera_dataset/data.yaml, imgsz960) # 按框面积分桶统计召回 area_buckets {small: (0, 32**2), medium: (32**2, 96**2), large: (96**2, float(inf))} for name, (lo, hi) in area_buckets.items(): # 这里需要从 results 里提取每张图的匹配情况实际实现依赖 Ultralytics 版本 # 常见做法是遍历 results.box 和 results.gt按面积过滤后算 TP/FP/FN pass如果 small 桶的召回低于 0.5说明小目标优化还不够优先考虑提高 imgsz 或加 P2 层而不是继续加数据。红外相机数据标注成本高加数据前先把现有数据的标注质量查一遍框不准的重新标比盲目加图有效。4. 实时识别与统计从单张推理到按点位出报表4.1 推理脚本批量处理 SD 卡照片并保存结果训练完模型后实际使用场景通常是批量处理一个 SD 卡目录的照片输出每张图的检测结果和汇总统计。Ultralytics 的predict接口支持批量推理但默认只保存可视化图要拿结构化结果得自己解析results对象。from ultralytics import YOLO import os import json import csv from collections import defaultdict model YOLO(runs/ir_camera/yolo11s_960/weights/best.pt) def process_sd_card(photo_dir, output_dir, conf0.35, iou0.5): os.makedirs(output_dir, exist_okTrue) stats defaultdict(lambda: defaultdict(int)) records [] for f in sorted(os.listdir(photo_dir)): if not f.lower().endswith((.jpg, .jpeg, .png)): continue path os.path.join(photo_dir, f) results model.predict(path, confconf, iouiou, imgsz960, verboseFalse) for r in results: boxes r.boxes if boxes is None: continue for i in range(len(boxes)): cls_id int(boxes.cls[i].item()) cls_name model.names[cls_id] score float(boxes.conf[i].item()) xyxy boxes.xyxy[i].tolist() records.append({ file: f, class: cls_name, score: round(score, 3), x1: round(xyxy[0], 1), y1: round(xyxy[1], 1), x2: round(xyxy[2], 1), y2: round(xyxy[3], 1) }) stats[f][cls_name] 1 # 保存可视化图方便人工复核 r.save(os.path.join(output_dir, fpred_{f})) # 写明细 CSV with open(os.path.join(output_dir, detections.csv), w, newline) as fp: writer csv.DictWriter(fp, fieldnames[file, class, score, x1, y1, x2, y2]) writer.writeheader() writer.writerows(records) # 写按文件汇总 with open(os.path.join(output_dir, per_file_stats.json), w) as fp: json.dump({k: dict(v) for k, v in stats.items()}, fp, ensure_asciiFalse, indent2) return records, stats records, stats process_sd_card(./sd_card_20240512, ./output_20240512) print(f共处理 {len(stats)} 张图检出 {len(records)} 个目标)conf0.35是置信度阈值红外相机误检多这个值不要设太低0.3 到 0.4 之间比较稳。iou0.5是 NMS 的 IoU 阈值如果同一动物被重复框可以降到 0.4。save保存的可视化图用于人工抽检不要直接当最终结果因为模型在夜拍上的误检有时肉眼一看就知道。4.2 按点位和时间段统计从 CSV 到报表明细 CSV 有了之后统计就是按维度聚合。红外相机统计最常用的维度是点位、日期、物种。点位信息通常不在文件名里而在相机编号或文件夹名里处理时要先把点位映射建好。import pandas as pd df pd.read_csv(./output_20240512/detections.csv) # 从文件名解析点位和日期示例P03_20240512_031502.jpg df[point] df[file].str.split(_).str[0] df[date] df[file].str.split(_).str[1] # 按点位 日期 物种统计 report df.groupby([point, date, class]).size().reset_index(namecount) report.to_csv(./output_20240512/report_by_point_date.csv, indexFalse) # 按点位 物种统计用于快速看哪个点位物种丰富 point_species df.groupby([point, class]).size().unstack(fill_value0) point_species.to_csv(./output_20240512/report_by_point.csv) print(report.head(10))这里有个容易忽略的点同一组连拍里同一动物可能被多张照片检出直接按检出数统计会重复计数。更严谨的做法是按连拍组去重一组连拍里同一物种只算一次。去重逻辑可以用拍摄时间戳间隔小于 2 秒的检出归为一组取最高置信度的那个。# 按连拍组去重同一组内同物种只保留最高分 df[ts] pd.to_datetime(df[file].str.extract(r(\d{8}_\d{6}))[0], format%Y%m%d_%H%M%S) df df.sort_values(score, ascendingFalse) df[burst_id] (df[ts].diff() pd.Timedelta(seconds2)).cumsum() dedup df.groupby([burst_id, class]).first().reset_index() final_count dedup.groupby([point, date, class]).size().reset_index(namecount)去重后的计数才是相对可靠的「独立事件数」虽然仍可能把不同个体误合并但比原始检出数更接近真实。如果要做个体识别那是另一个课题需要 ReID 模型不在 YOLOv11 的范围内。4.3 实时识别边缘设备上的推理速度与精度权衡如果要把模型部署到边缘设备做实时识别比如 Jetson Orin Nano 或 RK3588推理速度是瓶颈。YOLOv11s 在 960 分辨率下Jetson Orin Nano 大概能跑到 10 到 15 FPS但红外相机触发拍摄不是连续视频流实际不需要那么高帧率。更现实的做法是相机触发后拍一组连拍边缘设备在几秒内处理完这一组把结果和缩略图传回服务器。导出模型时用 TensorRT 或 ONNX能明显提速。Ultralytics 支持直接导出yolo export modelruns/ir_camera/yolo11s_960/weights/best.pt formatengine halfTrue imgsz960halfTrue是 FP16 推理Jetson 上能提速约 30%精度损失通常小于 1 个点。导出后要重新跑一遍验证集确认 TensorRT 引擎的精度和 PyTorch 一致有时候算子不支持会导致精度掉得厉害。5. 避坑与排查红外相机 YOLOv11 最常见的 5 个翻车点5.1 验证集 mAP 很高换一个点位就崩现象在 A 点位数据上训练验证集 mAP50 到 0.85换到 B 点位的照片上召回不到 0.4。原因红外相机不同点位的背景、安装高度、触发灵敏度差异大模型学到了 A 点位的背景特征换点位后背景变了模型就找不到动物。解决训练时混入多个点位的数据哪怕每个点位只有几百张如果 B 点位没有标注数据至少做一次无监督的域适应或者用 B 点位的空拍图做背景增强。5.2 夜拍照片全黑模型什么都检不出现象白天照片识别正常夜拍照片几乎全漏。原因夜拍是红外灰度图和白天彩色图分布差异大如果训练集里夜拍占比低模型对灰度纹理不敏感。解决统计训练集里夜拍占比如果低于 30%要么补夜拍标注要么在增强里加灰度化把部分白天图转成灰度模拟夜拍。注意灰度化不能完全替代真实夜拍因为红外夜拍的对比度分布和普通灰度图不同。5.3 同一动物被框了好几次现象一张图里一只动物出现三四个重叠框。原因NMS 的 IoU 阈值设太高或者模型对小目标的定位不稳定。解决把推理时的iou从 0.5 降到 0.4 或 0.35观察重叠框是否减少。如果还不行检查标注里有没有同一动物标了多个框这种标注会让模型学到重复检测。5.4 统计数量比实际多很多现象报表里某点位某物种一天统计出 50 次实际可能只有 10 只。原因连拍重复计数同一动物经过时被连续多张照片检出。解决按连拍组去重同一组内同物种只算一次。去重逻辑见 4.2 节关键是时间戳解析要准确如果文件名里没有时间戳要从 EXIF 里读。5.5 训练 loss 不降或者降了但 mAP 不动现象训练几十轮后 box_loss 还在震荡mAP 一直在 0.1 左右。原因最常见的是标注格式不对比如类别索引从 1 开始而不是 0或者归一化坐标算错了。解决用 Ultralytics 自带的yolo detect train前先跑一次yolo detect val看能不能加载数据如果数据加载就报错先修数据。另一个原因是学习率太大红外相机数据量小lr00.01可能太大降到 0.001 试试。6. 把误检压下去一个可复用的后处理技巧模型训完之后误检是红外相机场景里最烦人的问题。风吹草动、温度变化、镜头上的虫子都可能被模型当成动物。单纯调高conf阈值会漏掉真实目标调低又误检爆炸。我一般会在推理后加一层基于检测框时序一致性的过滤同一组连拍里如果某个检测框在连续多张图中位置和大小变化剧烈大概率是误检如果稳定出现大概率是真实动物。具体做法是对每组连拍收集所有检测框按类别做 IoU 匹配。如果某个检测在组内出现次数少于 2 次且置信度低于 0.5就丢弃。这个规则对红外相机特别有效因为真实动物经过时连拍里至少有两三张能拍到而风吹草动是随机的。def filter_by_temporal_consistency(detections, min_hits2, min_conf0.5): detections: list of dict, 每项含 file, class, score, x1, y1, x2, y2 按连拍组过滤组内同类别 IoU 匹配出现次数少的低分检测丢弃 from collections import defaultdict # 先按连拍组分组这里假设 detections 已按时间排序 groups defaultdict(list) for d in detections: groups[d[burst_id]].append(d) kept [] for burst_id, dets in groups.items(): by_class defaultdict(list) for d in dets: by_class[d[class]].append(d) for cls, items in by_class.items(): # 简单按置信度排序取最高分作为锚匹配 IoU 0.3 的 items.sort(keylambda x: x[score], reverseTrue) used [False] * len(items) for i, anchor in enumerate(items): if used[i]: continue hits 1 for j in range(i 1, len(items)): if used[j]: continue if iou(anchor, items[j]) 0.3: hits 1 used[j] True if hits min_hits or anchor[score] min_conf: kept.append(anchor) return kept def iou(a, b): x1 max(a[x1], b[x1]) y1 max(a[y1], b[y1]) x2 min(a[x2], b[x2]) y2 min(a[y2], b[y2]) inter max(0, x2 - x1) * max(0, y2 - y1) area_a (a[x2] - a[x1]) * (a[y2] - a[y1]) area_b (b[x2] - b[x1]) * (b[y2] - b[y1]) return inter / (area_a area_b - inter 1e-6)min_hits2表示组内至少出现两次才保留min_conf0.5是高分检测直接保留的兜底。这两个参数要根据你的连拍张数调如果相机一次只拍 1 张这个逻辑就不适用得改用单张的置信度阈值加类别先验。我自己的习惯是每换一个点位先跑 200 张图人工看一遍误检和漏检再微调这两个参数不要一套参数用到底。红外相机场景没有万能参数点位换了动物行为、背景、光照都变了参数跟着变是正常的。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI编码助手、智能体平台与开源模型:2026年工程落地与避坑指南

AI编码助手、智能体平台与开源模型:2026年工程落地与避坑指南

早上刷完今天的信息流,我发现整个AI圈的状态和三个月前已经完全不一样了。没有那种动辄刷屏的“发布即炸场”事件,但编码助手、智能体平台、开源模型这三条线的动态密度反而比过去任何时候都要高:编码助手开始真正“干活”而不仅是“补全”&a…

2026/10/5 5:14:49 阅读更多 →
企业级RAG落地决策框架:六角色定位与选型校验树

企业级RAG落地决策框架:六角色定位与选型校验树

1. 这不是一张“选型对比表”,而是一套企业级RAG落地的决策操作系统你手头正压着一个任务:给公司搭一套能真正用起来的RAG系统。不是PoC演示,不是工程师自嗨的玩具,而是要让销售能查产品参数、客服能调历史工单、研发能翻旧设计文…

2026/10/5 5:13:48 阅读更多 →
Light Tools 8.4 在 Win10 64 位系统上的完整安装与许可配置指南

Light Tools 8.4 在 Win10 64 位系统上的完整安装与许可配置指南

搞光学仿真的人,多少都跟 Light Tools 打过交道。尤其做照明、背光、导光板、车灯透镜这类设计的兄弟,Light Tools 基本是绕不过去的工具。它跟 TracePro、ASAP 算是同一赛道的老牌选手,优点是实体建模和光学追迹结合得紧,网格划分…

2026/10/5 5:13:48 阅读更多 →

最新新闻

基于HPM5E00的EtherCAT从站开发实战:从硬件到协议栈全解析

基于HPM5E00的EtherCAT从站开发实战:从硬件到协议栈全解析

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

2026/10/5 5:46:58 阅读更多 →
Ardupilot姿态控制调参实战:从串级PID到MAVLink工具链

Ardupilot姿态控制调参实战:从串级PID到MAVLink工具链

很多搞飞控的朋友做完了传感器校准、电调油门行程校准、解锁自检之后,往往会卡在同一道坎上——飞机第一次离地就天旋地转,或者明明能飞但手感稀碎,悬停时像喝醉了酒。其实这些问题的根源基本都在同一个地方:Ardupilot的姿态控制没…

2026/10/5 5:46:58 阅读更多 →
水彩边缘渗透效果:用 CSS 混合模式 mix-blend-mode 还原真实手绘感

水彩边缘渗透效果:用 CSS 混合模式 mix-blend-mode 还原真实手绘感

水彩边缘渗透效果:用 CSS 混合模式 mix-blend-mode 还原真实手绘感十月四日的傍晚,天边泛起一层粉紫色的晚霞。 我从书架上翻出大学时画水彩用的一本获多福水彩纸。手指轻轻拂过纸面,能清晰摸到棉浆纸表面凹凸不平的细密纹理。拿毛笔蘸饱了掺…

2026/10/5 5:46:58 阅读更多 →
具有生命力的微晃动:纯 CSS 晃动关键帧与多轴物理阻尼模拟悬挂风铃

具有生命力的微晃动:纯 CSS 晃动关键帧与多轴物理阻尼模拟悬挂风铃

具有生命力的微晃动:纯 CSS 晃动关键帧与多轴物理阻尼模拟悬挂风铃在制作带有手作质感与治愈氛围的前端界面时,那些挂在界面角落的微小物件——比如侧边栏上悬挂的一串小铜风铃、手账本脊柱上垂下的编织书签丝带、或是窗棂前挂着的一颗小松果——往往是整…

2026/10/5 5:46:58 阅读更多 →
网卡多队列 RSS 与 CPU 软中断亲和性绑定实战:彻底解决单核中断打满瓶颈

网卡多队列 RSS 与 CPU 软中断亲和性绑定实战:彻底解决单核中断打满瓶颈

网卡多队列 RSS 与 CPU 软中断亲和性绑定实战:彻底解决单核中断打满瓶颈在很多配置了万兆网卡与上百物理核心的高性能服务器上,经常上演一幕极其荒诞的性能灾难:用监控工具查看,整机平均 CPU 利用率只有微不足道的 3% 到 5%&#…

2026/10/5 5:46:58 阅读更多 →
Paperclip 实战:Node.js + React 构建 AI Agent 智能体

Paperclip 实战:Node.js + React 构建 AI Agent 智能体

1. 从“paperclip”这个名字说起:它到底想解决什么问题第一次看到“paperclip”这个项目名,我脑子里蹦出来的画面就是那个经典的曲别针助手——一个看起来不起眼、但总能在关键时刻帮你把散落文件归拢到一起的小工具。放到 AI agent 的语境里&#xff0c…

2026/10/5 5:45:58 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06: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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →