吸烟跌倒行为检测数据集构建与YOLO训练避坑指南
简介这份吸烟、跌倒行为目标检测数据集面向计算机视觉初学者与行为识别方向的开发者采用YOLO标注格式可直接用于YOLOv5、YOLOv7、YOLOv8等主流框架的训练与验证帮助解决公共场所异常行为监测中样本获取困难的问题。资源包共2000个文件以txt标注文件为主另含1个yaml配置文件压缩包约98.47MB目录按trainset与testset划分各自包含images与labels子目录并附带smoke_fall.yaml用于定义类别与数据路径结构规范、开箱即用。目前已有417人学习下载。数据集覆盖吸烟与跌倒两类目标标注文件命名清晰便于快速划分训练集与测试集读者可据此完成模型训练、精度评估与推理部署也可结合注意力机制改进、小目标检测层等技巧做进一步优化适合作为行为检测课程设计、毕业设计或算法验证的实用数据基础。1. 吸烟、跌倒行为目标检测数据集为什么你的模型总在真实场景里翻车做过行为识别落地的工程师大概都有过这种体验在公开数据集上 mAP 跑到 0.85信心满满部署到实际场景结果吸烟检测把叼牙签的、打电话的、甚至手托下巴的全报成 positive跌倒检测更离谱蹲下系鞋带能触发告警真正躺地上不动的人反而漏检。问题往往不在模型结构而在数据集本身——你喂给网络的标注框和真实场景里目标的姿态、遮挡、尺度分布根本对不上。吸烟、跌倒行为目标检测数据集YOLO格式这个方向解决的就是这类「行为语义 目标检测」交叉场景的数据供给问题。它面向的是需要做室内安全监控、养老看护、禁烟区域管理的算法工程师和产品落地团队。核心诉求很直接用 YOLO 系列检测器把「人」和「人的行为状态」绑定在一个可训练的标注体系里让模型输出的不只是 person 框而是 smoking 框和 fall 框。这篇文章不讲空泛的综述只讲我实际搭这套数据管线时踩过的坑、参数怎么定、标注怎么统一、增强怎么做才不会把行为语义破坏掉。2. 行为类数据集和通用检测数据集到底差在哪标注体系与选型理由2.1 行为框和人体框的绑定关系决定了标注策略通用 COCO 那套 person 框标注框的是整个人体。但吸烟行为的核心视觉线索在头部和手部区域——烟支、夹烟手势、烟雾。如果你直接拿 person 框去训 smoking 类模型学到的是「人 吸烟」精度必然崩。常见做法是双框体系一个 person 框标全身一个 smoking 框标头部到手部的局部区域两个框通过 IoU 或中心点归属建立关联。跌倒行为又不一样。跌倒的视觉定义是「人体从直立状态转为水平状态且持续一定时间」单帧图像里它和「躺下」「蹲下」「弯腰」的边界非常模糊。所以跌倒类标注不能只标一个框还要在标注文件里附带姿态标签或关键点信息。YOLO 格式本身只支持class x_center y_center width height要承载这些附加信息通常有两种做法一是把姿态编码进类别名比如fall_lying、fall_sitting、fall_standing分成子类二是外挂一个 JSON 元数据文件用图像文件名做 key 关联。我一般会选第一种因为 YOLO 训练管线对类别名是透明的不需要改 dataloader。代价是类别数膨胀后面会讲怎么控制。2.2 为什么选 YOLO 格式而不是 COCO 或 VOCYOLO 格式的 txt 标注文件每行class_id x_center y_center w h坐标全部归一化到 0-1。它的优势在行为检测场景里特别明显解析成本极低。行为数据集往往需要频繁做子集切分、类别重映射、在线增强txt 格式用 Python 原生读写就能改不需要引入 pycocotools 那套重依赖。和主流 YOLO 训练框架ultralytics 系、YOLOX、PP-YOLOE天然兼容data.yaml里写几行路径就能开训。归一化坐标让图像 resize 后的标注变换变成纯乘法增强管线里不容易出坐标越界 bug。但 YOLO 格式也有硬伤它不存储图像尺寸、不存储分割掩码、不存储关键点。所以如果你的跌倒检测需要骨架信息辅助得额外维护一份关键点标注或者干脆走 RTMPose 检测框的两阶段方案。2.3 类别体系设计3 类还是 7 类我见过两种极端。一种是极简派person、smoking、fall三类标注快但模型分不清「坐着抽烟」和「站着抽烟」也分不清「跌倒后躺着」和「本来就躺着」。另一种是极细派把吸烟分成smoking_left_hand、smoking_right_hand、smoking_mouth跌倒分成fall_forward、fall_backward、fall_sideways类别数冲到十几类结果每类样本不足 500训练直接过拟合。我的经验值是 5 到 7 类比较稳类别名标注对象典型样本量建议person完整人体框全量smoking头部至手部局部框≥ 3000fall跌倒姿态人体框≥ 2000lying非跌倒的躺卧≥ 1500sitting坐姿用于负样本对比≥ 2000bending弯腰跌倒易混类≥ 1500把lying、sitting、bending显式列出来当负样本类是降低跌倒误报最有效的手段。模型见过足够多的「像跌倒但不是跌倒」的样本才不会把蹲下系鞋带报成 fall。3. 从零构建 YOLO 格式行为数据集目录结构、标注转换与增强参数3.1 目录结构和 data.yaml 的最小可用配置行为数据集比通用检测数据集更需要严格的目录约定因为后面要做类别平衡采样和时序切分。我常用的结构是这样behavior_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ ├── meta/ │ ├── smoking_meta.json │ └── fall_meta.json └── data.yamldata.yaml的写法# 行为检测数据集配置 path: /data/behavior_dataset train: images/train val: images/val test: images/test # 类别数必须和 names 长度严格一致 nc: 6 names: 0: person 1: smoking 2: fall 3: lying 4: sitting 5: bending这里有个容易翻车的点nc和names长度不一致时ultralytics 不会报错而是静默按nc截断导致最后几类永远训不到。我一般会在训练前跑一段校验脚本把nc和len(names)断言一遍。3.2 从 VOC/COCO 标注转 YOLO 格式的转换脚本很多行为数据集原始标注是 VOC XML 或 COCO JSON转 YOLO 时坐标归一化最容易出错。下面这个脚本处理 VOC 转 YOLO重点在边界裁剪和类别映射import xml.etree.ElementTree as ET from pathlib import Path from PIL import Image # 原始类别名到 YOLO 类别 id 的映射必须和 data.yaml 一致 CLASS_MAP { person: 0, smoke: 1, # 原始标注里可能叫 smoke smoking: 1, fall_down: 2, # 原始标注里可能叫 fall_down fall: 2, lie: 3, lying: 3, sit: 4, sitting: 4, bend: 5, bending: 5, } def voc_to_yolo(xml_path, img_dir, out_label_dir): tree ET.parse(xml_path) root tree.getroot() img_name root.find(filename).text img_path Path(img_dir) / img_name if not img_path.exists(): return False w, h Image.open(img_path).size lines [] for obj in root.findall(object): cls_name obj.find(name).text.strip().lower() if cls_name not in CLASS_MAP: continue # 未映射类别直接丢弃避免污染训练 cls_id CLASS_MAP[cls_name] bbox obj.find(bndbox) xmin float(bbox.find(xmin).text) ymin float(bbox.find(ymin).text) xmax float(bbox.find(xmax).text) ymax float(bbox.find(ymax).text) # 关键裁剪到图像边界内VOC 标注经常有越界框 xmin max(0.0, min(xmin, w - 1)) ymin max(0.0, min(ymin, h - 1)) xmax max(0.0, min(xmax, w - 1)) ymax max(0.0, min(ymax, h - 1)) if xmax xmin or ymax ymin: continue # 裁剪后无效的框丢弃 x_center (xmin xmax) / 2.0 / w y_center (ymin ymax) / 2.0 / h bw (xmax - xmin) / w bh (ymax - ymin) / h lines.append(f{cls_id} {x_center:.6f} {y_center:.6f} {bw:.6f} {bh:.6f}) out_path Path(out_label_dir) / (Path(xml_path).stem .txt) out_path.write_text(\n.join(lines)) return True逻辑说明VOC 的bndbox是绝对像素坐标YOLO 要的是归一化中心点加宽高。转换时最容易忽略的是越界框——VOC 标注里xmax超过图像宽度的比例不低不裁剪的话归一化后坐标大于 1训练时会被框架静默截断或产生异常梯度。类别映射表里保留多个别名是因为不同标注批次的人可能用不同词统一映射能省掉大量人工清洗。参数说明CLASS_MAP必须和data.yaml的names严格对应建议把映射表单独抽成一个 JSON 文件转换脚本和训练配置共用同一份。:.6f保留六位小数YOLO 官方推荐精度再高没必要再低小目标框会漂。3.3 行为数据增强哪些增强能用哪些会把语义毁掉通用检测的增强策略直接搬到行为数据集上很容易把行为语义破坏掉。下面这张表是我实际验证过的增强方式是否可用原因水平翻转可用吸烟左右手互换不影响语义垂直翻转禁用跌倒翻转后变成倒立语义完全错随机旋转 ±15°谨慎超过 15° 跌倒姿态失真Mosaic可用但要注意 smoking 小框拼接后可能被裁掉MixUp谨慎两个半透明人体叠加行为线索互相干扰HSV 色调扰动可用烟雾颜色变化增强泛化随机遮挡可用模拟遮挡场景但遮挡比例不超过 30%垂直翻转是行为检测里最隐蔽的坑。跌倒类样本垂直翻转后人体变成头下脚上模型学到的「水平人体 跌倒」特征被破坏但标注框位置没变等于在教模型学错的东西。我一般会在data.yaml同级放一个augment.yaml把flipud显式设为 0.0。Mosaic 增强对 smoking 类要特别小心。smoking 框通常只占图像 5% 到 10% 面积Mosaic 四图拼接后如果随机裁剪中心落在 smoking 框上这个框可能被裁掉一半甚至完全消失但标签文件里还留着变成脏标注。常见做法是 Mosaic 之后加一步标注有效性校验把裁剪后面积小于原面积 30% 的框丢弃。4. 训练参数怎么设从 anchor 到 loss 权重的行为检测调参清单4.1 anchor 尺寸要按行为框分布重新聚类YOLO 默认 anchor 是在 COCO 上聚类的COCO 的 person 框偏大smoking 这种小框的 recall 会很低。行为数据集必须重新跑 k-means 聚类。用 ultralytics 自带的工具# 对训练集标注跑 anchor 聚类输入是 labels/train 目录 yolo detect train datadata.yaml modelyolov8n.pt epochs1 \ kmeans9 kmeans_pathlabels/train如果框架不带这个功能可以自己写import numpy as np from pathlib import Path def load_boxes(label_dir): boxes [] for txt in Path(label_dir).glob(*.txt): for line in txt.read_text().strip().split(\n): if not line: continue parts line.split() w, h float(parts[3]), float(parts[4]) if w 0 and h 0: boxes.append([w, h]) return np.array(boxes) def iou(box, clusters): # box 和 clusters 都是 (w, h)用 1-IOU 作为距离 x np.minimum(box[0], clusters[:, 0]) y np.minimum(box[1], clusters[:, 1]) inter x * y union box[0] * box[1] clusters[:, 0] * clusters[:, 1] - inter return inter / union def kmeans_anchors(boxes, k9, iters300): np.random.seed(42) clusters boxes[np.random.choice(len(boxes), k, replaceFalse)] for _ in range(iters): distances 1 - np.array([iou(b, clusters) for b in boxes]) nearest distances.argmin(axis1) for i in range(k): if (nearest i).any(): clusters[i] boxes[nearest i].mean(axis0) return clusters[np.argsort(clusters[:, 0] * clusters[:, 1])] boxes load_boxes(labels/train) anchors kmeans_anchors(boxes, k9) print(聚类 anchor (w, h):) for a in anchors: print(f {a[0]:.4f} {a[1]:.4f})逻辑说明行为框的宽高比分布和通用目标差异很大。smoking 框接近正方形但很小fall 框是宽扁形。聚类出来的 anchor 里应该能看到明显的小尺寸簇和宽扁簇。如果聚类结果和默认 anchor 差不多说明你的数据分布其实和 COCO 接近那用默认的也行。参数说明k9对应 YOLOv5/v8 的三尺度各三个 anchor。iters300足够收敛再多收益很小。np.random.seed(42)固定随机种子保证每次聚类结果可复现。4.2 分类 loss 权重和类别不平衡处理行为数据集天然类别不平衡person 框数量通常是 smoking 的 5 到 10 倍fall 更少。直接训会让模型偏向多数类。ultralytics 框架里可以通过cls权重和focal_loss调节# 训练超参配置片段 lr0: 0.01 lrf: 0.01 momentum: 0.937 weight_decay: 0.0005 box: 7.5 # box loss 权重行为检测建议略降 cls: 1.2 # cls loss 权重类别不平衡时上调 dfl: 1.5 fl_gamma: 1.5 # focal loss gamma缓解简单样本主导cls从默认 0.5 提到 1.2是让分类分支在总 loss 里占比更高逼模型认真区分 smoking 和 person。fl_gamma1.5是 focal loss 的聚焦参数大于 1 时对易分类样本降权适合负样本sitting、bending远多于正样本的场景。但 gamma 不要超过 2.0否则训练初期 loss 震荡剧烈收敛变慢。另一个手段是过采样。把 smoking 和 fall 的标注文件在训练集里复制多份图像路径不变只增加采样概率。我一般把稀有类过采样到和 person 类 1:2 的比例再高容易过拟合。4.3 验证指标怎么看mAP 之外必须盯的三个数行为检测只看 mAP50 会骗自己。我固定会看这三个每类 recallsmoking 的 recall 低于 0.6 时说明小框漏检严重要回去查 anchor 和输入分辨率。fall 类的 FP 率跌倒误报是产品最不能忍的FP 率高于 5% 就要加负样本。混淆矩阵里 fall 和 lying 的交叉量这两个类混淆是常态交叉量超过 fall 样本的 20% 就要考虑合并或加关键点辅助。验证时用conf0.25和conf0.5各跑一遍看 recall 掉多少。掉超过 15% 说明模型置信度分布不好需要调 NMS 的 IoU 阈值或加训练数据。5. 避坑与排查行为数据集标注和训练里最常见的 5 个翻车现场5.1 现象smoking 类 mAP 虚高但实际漏检严重原因标注时 smoking 框画得太大把整个上半身都框进去了。模型学到的是「上半身 smoking」验证集里只要上半身完整就报 positive但实际场景里手部被遮挡时反而漏检。解决重新定标注规范smoking 框的边界定义为「烟支可见部分 夹烟手部 嘴部区域」框面积不超过 person 框的 25%。标注完成后跑一遍面积分布统计超过 30% 的框全部返工。5.2 现象跌倒检测在夜间红外图像上几乎全漏原因训练集全是可见光图像模型学到的跌倒特征依赖颜色和纹理红外图像里这些线索全没了。解决训练时加 HSV 扰动和灰度化增强让模型对颜色不敏感。更彻底的做法是混入至少 20% 的红外或低照度样本。如果拿不到红外数据用随机灰度化加对比度扰动模拟但效果有限只能救急。5.3 现象训练 loss 正常下降但验证 mAP 卡在 0.3 不动原因标注文件里有大量空 txt 或只有 person 框的图像模型在验证时被这些简单样本拉高了 loss 均值掩盖了稀有类的糟糕表现。解决训练前统计每个类别的框数量把只有 person 框的图像单独抽出来做负样本集不要混在正常训练集里。验证集必须保证每个类别至少有 100 个实例否则 mAP 波动极大。5.4 现象Mosaic 增强后 smoking 框坐标越界原因Mosaic 拼接时图像被 resize 和 pad标注坐标没有同步更新或者更新时用了错误的缩放比例。解决不要自己手写 Mosaic用框架自带的。如果必须自己实现在拼接完成后对每个框做一次边界校验x_center ± w/2超出 [0,1] 的直接丢弃。我一般会在 dataloader 里加一个 assert训练时一旦发现越界框就打印图像名方便回溯。5.5 现象模型把「蹲下捡东西」大量报成 fall原因训练集里 fall 类样本的多样性不足大部分是向后倒模型没学过前倾、侧倒、蹲下后失衡这些变体。同时 bending 负样本太少。解决fall 类至少覆盖前倒、后倒、侧倒、滑倒四种姿态每种不少于 300 样本。bending 类要包含蹲下、弯腰、单膝跪地等子姿态。如果数据不够用姿态合成工具生成一部分但合成样本比例不要超过真实样本的 30%。6. 进阶技巧用时序投票把单帧跌倒检测的误报压下去单帧检测做跌倒误报率很难压到产品可接受的水平因为「躺下」和「跌倒后躺着」在单帧里几乎无法区分。我实际项目里最后都会加一层轻量时序投票不需要额外训练模型纯后处理就能把 FP 率降一半以上。思路很简单对同一路视频流维护一个长度为 N 的滑动窗口记录每帧检测到的 fall 框。只有当连续 M 帧都出现 fall 且框的 IoU 与前一帧大于阈值时才触发告警。参数用下面这段代码调from collections import deque class FallTracker: def __init__(self, window15, trigger8, iou_thr0.3): # window: 滑动窗口帧数对应约 0.5 秒30fps # trigger: 触发告警所需连续命中帧数 # iou_thr: 相邻帧 fall 框的 IoU 下限防止不同人误关联 self.window window self.trigger trigger self.iou_thr iou_thr self.history deque(maxlenwindow) def _iou(self, box_a, box_b): x1 max(box_a[0], box_b[0]) y1 max(box_a[1], box_b[1]) x2 min(box_a[2], box_b[2]) y2 min(box_a[3], box_b[3]) inter max(0, x2 - x1) * max(0, y2 - y1) area_a (box_a[2] - box_a[0]) * (box_a[3] - box_a[1]) area_b (box_b[2] - box_b[0]) * (box_b[3] - box_b[1]) union area_a area_b - inter return inter / union if union 0 else 0 def update(self, fall_boxes): # fall_boxes: 当前帧所有 fall 框格式 [x1, y1, x2, y2] matched False if self.history and fall_boxes: last self.history[-1] for fb in fall_boxes: for lb in last: if self._iou(fb, lb) self.iou_thr: matched True break if matched: break self.history.append(fall_boxes if matched or not self.history else []) # 统计最近 window 帧里连续命中的最大长度 max_consec 0 cur 0 for frame_boxes in self.history: if frame_boxes: cur 1 max_consec max(max_consec, cur) else: cur 0 return max_consec self.trigger逻辑说明history存每帧的 fall 框列表update先判断当前帧的框和上一帧是否有 IoU 匹配有匹配才计入历史否则视为新目标重新计数。最后统计连续命中帧数达到trigger才返回 True。这样单帧的偶发误检会被窗口过滤掉而真实跌倒因为持续多帧能稳定触发。参数说明window15在 30fps 下约 0.5 秒太短过滤效果差太长告警延迟高。trigger8意味着需要约 0.27 秒的持续检测实测能过滤掉大部分蹲下起立的瞬时误报。iou_thr0.3是经验值低于 0.2 容易把不同人的框关联到一起高于 0.5 则真实跌倒时人体快速位移会导致匹配失败。这套后处理不需要重新训练直接在推理管线里加一层代价是引入约 0.3 秒的告警延迟。对养老看护场景这个延迟完全可以接受换来的是误报率从每几小时一次降到每天一两次。我自己的习惯是任何行为检测模型上线前先用一段包含 50 次真实跌倒和 200 次易混动作的测试视频跑一遍把 FP 和 FN 逐条标出来看。十次里有八次问题不在模型而在标注规范没统一或者负样本不够。数据集这件事偷懒省下的时间最后都会在排错时加倍还回来。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Claude中文技能协议栈:面向企业工作流的原子化重构

Claude中文技能协议栈:面向企业工作流的原子化重构

简介:Claude Skills中文版是一套面向中文开发者与AI应用实践者的开源技能模板集,聚焦软件开发、创意设计与企业办公场景,专为解决语言障碍、模型兼容性差及上手门槛高三大痛点而设计。资源包含16个官方AI技能的完整中文翻译,支持G…

2026/10/18 19:51:32 阅读更多 →
knowledge-work-plugins 实战:Claude Code 插件开发与工作流封装

knowledge-work-plugins 实战:Claude Code 插件开发与工作流封装

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为它只是某个工具的插件合集,随手 clone 下来翻两眼就丢到一边。但如果你真的在 Claude Code 或 Claude Cowork 里干过几天活&…

2026/10/18 19:51:32 阅读更多 →
大数据招聘岗位数据爬虫清洗与可视化看板实践

大数据招聘岗位数据爬虫清洗与可视化看板实践

简介:这是一套面向Python学习者的综合实战资源,聚焦北京市大数据岗位招聘数据的爬取、清洗、分析与可视化。资源包含完整项目源码、爬虫脚本、数据文件及图表展示,覆盖requests/Scrapy网页抓取、pandas数据预处理、matplotlib/seaborn可视化等…

2026/10/18 19:51:32 阅读更多 →

最新新闻

2026小龙虾openclaw推荐:四款衍生智能体横向实测梳理完整选型参考分享

2026小龙虾openclaw推荐:四款衍生智能体横向实测梳理完整选型参考分享

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

2026/10/18 20:56:24 阅读更多 →
【openClaw】openClaw 3.8 Windows 安装 + deepseek、discord 基本流程:把 endpoint 改到 TaoToken

【openClaw】openClaw 3.8 Windows 安装 + deepseek、discord 基本流程:把 endpoint 改到 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/18 20:56:24 阅读更多 →
压测与调优实战:摸清系统承载边界,定位并解决性能瓶颈

压测与调优实战:摸清系统承载边界,定位并解决性能瓶颈

压力测试不是拿工具把系统压到崩溃就完事,也不是看一下吞吐量数字高不高就收工。真正有价值的压测,是能在上线之前把系统的真实承载边界摸清楚,把隐藏在最深处的瓶颈揪出来,顺带验证你做的缓存、连接池、线程池这些配置到底有没有…

2026/10/18 20:56:24 阅读更多 →
基于YOLOv8的SAR图像建筑物旋转目标检测与分割部署全攻略

基于YOLOv8的SAR图像建筑物旋转目标检测与分割部署全攻略

SAR图像里的建筑物检测,和普通光学遥感图完全是两码事。做过这个项目的人应该都有体会:光学图像里房子是纹理清晰的色块,而SAR图像里建筑物往往就是一团亮斑加几条暗线,周围还混着大量相干斑噪声。如果直接套用常规的水平框目标检…

2026/10/18 20:56:24 阅读更多 →
Java单链表三种插入方式详解:头插、尾插与任意位置插入

Java单链表三种插入方式详解:头插、尾插与任意位置插入

刚接触Java数据结构时,单链表往往是最先遇到的线性结构。无论是课程作业、技术面试还是实际项目封装,单链表的插入操作都是绕不开的基本功。这篇文章只聊一件事:Java单链表的三种插入方式——头插法、尾插法、任意位置插入法,从节…

2026/10/18 20:56:24 阅读更多 →
知识工作插件:WASM驱动的跨平台工具链胶水层

知识工作插件:WASM驱动的跨平台工具链胶水层

1. 项目概述:从“knowledge-work-plugins”看知识工作者的工具链重构“knowledge-work-plugins”这个词组乍一看像一个技术名词,但拆开来看,它直指当下知识型工作者最真实的生存状态——不是在写文档、查资料、写代码、做汇报,就是…

2026/10/18 20:55:23 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →