Ubuntu 16.04+SSD+PyTorch嵌入式目标检测实战
1. 项目概述为什么还在用Ubuntu 16.04跑SSD这不是倒退而是工程现实的精准卡点“SSDPyTorchUbuntu 16.04训练自己的数据集”——这个标题乍看像一份过时的技术清单甚至有人会皱眉“2024年了还用16.04PyTorch都到2.x了SSD早被YOLOv8、DETR吊打谁还碰它”但如果你真在产线边缘设备上部署过目标检测模型或者接手过某高校实验室遗留的嵌入式视觉项目就会立刻明白这根本不是技术怀旧而是一份沉甸甸的工程约束清单。Ubuntu 16.04代表的是NVIDIA Jetson TX2、部分工控机主板、老款GPU服务器的稳定底座SSDSingle Shot MultiBox Detector因其结构简洁、推理延迟低、内存占用可控至今仍是资源受限场景下最可靠的落地选择而PyTorch则提供了比原始Caffe实现更灵活的定制能力——比如修改prior box生成逻辑、插入轻量注意力模块、适配非标准输入尺寸。我去年帮某智能仓储系统升级视觉分拣模块时客户明确要求新模型必须能在原有TX2模组上运行显存不能超1.8GB单帧推理≤85ms且训练环境需与产线调试环境完全一致。最终我们就是用Ubuntu 16.04 PyTorch 1.2.0 SSD-pytorch复现版完成交付。这里没有“先进”或“落后”的评判只有硬件边界、维护成本、交付周期构成的真实三角约束。本文不讲理论推导只拆解从零开始把一张自拍的快递单照片变成可部署模型的完整链路数据标注怎么避坑、XML转TXT时哪些字段绝对不能丢、anchor尺寸如何用k-means实测而非硬编码、为什么必须重写DataLoader的collate_fn、以及最关键的——如何让PyTorch在16.04上编译出带CUDA 9.0支持的可用版本。所有步骤均经三轮实测验证配置参数附带物理意义解释连nvidia-smi显示的显存波动曲线都给你标出来。2. 整体设计思路为什么放弃“一键安装”坚持手动构建最小可信环境2.1 环境选型的底层逻辑不是挑最新而是锁最稳很多人一上来就抱怨“Ubuntu 16.04太老pip源慢apt-get装不了新版PyTorch”。这恰恰暴露了对工业部署本质的误解。在嵌入式视觉场景中“稳定”二字的权重远高于“新特性”。Ubuntu 16.04的内核版本4.4.x与NVIDIA官方驱动390系列深度绑定而390驱动是TX2平台唯一通过JetPack 3.3认证的版本。若强行升级到18.04驱动兼容性问题会导致CUDA Context初始化失败——我亲眼见过某团队因升级系统后GPU利用率始终为0排查三天才发现是内核模块签名验证失败。因此我们的环境构建策略是以NVIDIA官方JetPack 3.3为基线向上兼容PyTorch向下锁定CUDA/cuDNN版本。具体组合为CUDA 9.0 cuDNN 7.1.5 PyTorch 1.2.0非官方预编译版需源码编译。这个组合的关键优势在于cuDNN 7.1.5对FP16推理有基础支持PyTorch 1.2.0的C扩展API已足够稳定且能完美调用CUDA 9.0的stream同步机制——这对SSD多尺度特征图融合至关重要。至于为什么不用官方提供的PyTorch wheel因为其默认链接的是libcudnn.so.7.6而JetPack 3.3只提供7.1.5。强行替换cuDNN会导致torch.nn.functional.interpolate出现梯度计算错误模型收敛后mAP直接掉12个点。所以必须自己编译且要精确指定-DUSE_CUDNNON -DCUDNN_INCLUDE_DIR/usr/include -DCUDNN_LIBRARY/usr/lib/aarch64-linux-gnu/libcudnn.so.7.1。2.2 SSD架构的取舍为什么不用SSD-ResNet坚持VGG16主干SSD原论文使用VGG16作为基础网络虽然后续有SSD-ResNet等改进但在16.04TX2环境下VGG16是唯一可行选择。原因有三第一VGG16的卷积层全部为3×3无空洞卷积atrous convolution而TX2的Tensor Core对空洞卷积支持极差实测ResNet50主干在TX2上推理速度比VGG16慢2.3倍第二VGG16的参数量138M比ResNet50255M小近一半显存占用从2.1GB压到1.4GB为后续FP16量化留出空间第三VGG16的特征图通道数512/1024与SSD的default box生成逻辑高度匹配无需额外调整neck结构。我们曾尝试将SSD的conv4_3层输出通道从512改为256以减小计算量结果发现prior box的宽高比分布严重偏移导致小目标召回率暴跌。最终方案是保留原始VGG16但将最后两个全连接层fc6/fc7替换为3×3卷积层即“fully convolutional VGG”这样既保持感受野又消除全连接层带来的巨大参数量。这个改动需要重写VGG类的forward函数在conv5_3后插入两个3×3卷积stride1padding1并用xavier_uniform初始化——实测比直接截断fc层提升mAP 3.7%。2.3 数据流设计为什么拒绝LabelImg直接导出坚持XML→CSV→TXT三级转换很多新手用LabelImg标注后直接导出PASCAL VOC格式XML再用脚本转成YOLO格式TXT。这在SSD训练中是致命陷阱。SSD对坐标格式极其敏感它要求归一化坐标x_min, y_min, x_max, y_max且必须严格按此顺序而LabelImg导出的XML中 标签顺序是(x_min, y_min, width, height)。更隐蔽的问题是当图像存在旋转标注或遮挡标记时XML中的 和 字段会被忽略导致训练时难样本权重为0。我们的解决方案是建立三级转换管道第一级用Python脚本解析XML提取所有object节点对每个object执行坐标校验检查x_maxx_min且y_maxy_min否则跳过该框第二级生成中间CSV文件包含image_id, class_name, x_min, y_min, x_max, y_max, difficult, truncated八列其中difficult字段用于后续加权损失计算第三级才是生成SSD专用TXT每行格式为“image_path x_min,y_min,x_max,y_max,class_id”且class_id严格对应classes.txt中的索引背景为0目标从1开始。关键细节所有坐标值在写入TXT前必须除以原始图像宽高进行归一化且保留6位小数——少于6位会导致SSD的MultiBoxLoss计算时梯度爆炸。我曾因保留4位小数训练到第37轮时loss突增至inf重启三次才定位到这个精度问题。3. 核心细节解析从数据准备到模型收敛的12个生死关卡3.1 数据标注的物理约束分辨率、长宽比与最小目标像素SSD对输入图像尺寸有硬性要求必须为300×300或512×512本文采用300×300。但这绝不意味着把所有图片resize到300×300即可。真实场景中快递单上的条形码宽度约2cm拍摄距离1.5米时在图像中仅占18像素。若原始图像为1920×1080直接resize到300×300后条形码只剩2.8像素CNN根本无法提取有效特征。因此我们制定标注规范原始图像分辨率不得低于1280×720且长宽比必须控制在16:9±0.1范围内避免resize时拉伸失真。更重要的是标注时必须确保目标在原始图中最小边长≥30像素。对于小目标要求摄影师使用微距模式或提高拍摄分辨率。在数据清洗阶段我们编写脚本自动过滤所有标注框面积900像素30×30的样本并记录其原始路径供人工复核。实测表明遵守此规范后小目标检测召回率从58%提升至82%。另一个易忽略点是光照一致性同一类目标如不同颜色的快递袋应在相似光照下拍摄否则模型会把“阴影”误学为类别特征。我们要求每批次采集图像时白平衡参数固定且用灰卡校准——这点看似繁琐却让模型在产线不同时间段的检测稳定性提升40%。3.2 Anchor Box的实测生成k-means聚类的5个致命陷阱SSD的default boxanchor尺寸直接影响检测精度。网上教程千篇一律说“用k-means聚类标注框宽高”但实际操作中陷阱密布。第一陷阱聚类前未过滤异常框。我们发现某批数据中存在12个标注框的width为0标注员误操作导致k-means中心点严重偏移。解决方案聚类前先计算所有宽高比w/h剔除w/h20或0.05的框对应细长条形码或扁平印章。第二陷阱聚类维度选择错误。SSD需要6组anchor对应6个特征图但k-means应基于原始标注框的宽高px聚类而非归一化后的值——因为归一化会压缩大目标与小目标的尺度差异。第三陷阱距离度量函数。传统k-means用欧氏距离但目标检测中IoU才是核心指标。我们改用IoU距离d(box, centroid) 1 - IoU(box, centroid)并用scipy.cluster.vq.kmeans2实现。第四陷阱聚类数量。SSD论文用6组anchor但实测发现针对快递单场景4组更优[30,30], [60,60], [120,40], [80,160]——这源于快递单上目标的几何分布条形码细长、面单号方块、印章大圆。第五陷阱anchor分配逻辑。原始SSD代码将gt框分配给IoU最大的anchor但当多个anchor与同一gt的IoU都0.5时会导致正样本不均衡。我们修改assign_boxes函数强制每个gt框至少分配给3个anchor且优先选择宽高比最接近的。这个改动使正样本数量提升2.3倍训练收敛速度加快40%。3.3 PyTorch DataLoader的深度定制collate_fn为何必须重写PyTorch的DataLoader默认使用default_collate它要求所有样本tensor尺寸一致。但SSD训练中每张图的标注框数量不同有的图有5个快递单有的只有1个直接堆叠会导致维度错乱。若用zero-padding补全则大量无效框参与loss计算拖慢收敛。我们的解决方案是重写collate_fn核心逻辑如下首先将batch中所有图像resize到300×300并转为tensor其次对每个样本的标注框列表shape[n,5]用torch.stack拼接时用-1填充缺失位置n不同时最后返回字典{‘images’: torch.stack(imgs), ‘boxes’: boxes_list, ‘labels’: labels_list}其中boxes_list和labels_list是list of tensor每个tensor shape[n_i,4]或[n_i]。这样做的好处是后续的MultiBoxLoss可以按样本逐个处理避免无效框干扰。但此举带来新问题GPU显存占用波动剧烈。实测发现当batch_size8时显存峰值出现在某张图含12个框的样本上。为此我们增加动态batch策略在DataLoader初始化时按标注框数量对数据集排序使相邻样本框数相近再用sampler分组。最终显存波动从1.2GB降至0.3GB训练稳定性显著提升。3.4 损失函数的手术级改造MultiBoxLoss的3处关键修补原始SSD的MultiBoxLoss存在三个工程缺陷第一负样本挖掘hard negative mining使用top-k策略但k值固定为3导致小目标场景下负样本过多。我们改为按正样本数量动态计算k min(3 * num_pos, num_neg)确保负样本数不超过正样本3倍。第二定位损失Smooth L1 Loss对小目标不敏感。我们引入尺度感知权重weight 1 / (w * h)即框越小权重越大实测使小目标AP提升5.2%。第三置信度损失CrossEntropyLoss未考虑困难样本。我们在计算conf_loss前对每个anchor的预测置信度做sigmoid再与gt label相乘得到困难度得分仅对得分0.7的样本计算loss。这个改动使模型对模糊、遮挡目标的鲁棒性大幅提升。代码层面我们继承torch.nn.Module重写MultiBoxLoss类在forward函数中插入上述逻辑且所有计算均在GPU上完成——避免CPU-GPU数据搬运带来的延迟。特别提醒修改loss后学习率必须下调30%否则初期loss震荡剧烈。4. 实操全流程从环境搭建到模型部署的逐帧记录4.1 Ubuntu 16.04环境初始化绕过apt源失效的终极方案Ubuntu 16.04官方源已于2021年停止维护直接apt update会报错。正确做法是切换至old-releases源。执行以下命令sudo sed -i s/archive.ubuntu.com/old-releases.ubuntu.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/old-releases.ubuntu.com/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y但此操作后python3.5的pip仍不可用。必须手动安装get-pip.pywget https://bootstrap.pypa.io/pip/3.5/get-pip.py sudo python3.5 get-pip.py接着安装基础依赖sudo apt install -y build-essential cmake git libglib2.0-dev libsm6 libxext6 libxrender-dev libglib2.0-0 libsm6 libxext6 libxrender-dev libglib2.0-dev libgtk2.0-dev注意libgtk2.0-dev是OpenCV GUI模块必需否则cv2.imshow报错。安装完成后务必验证CUDAnvidia-smi应显示驱动版本390.144nvcc --version应显示Release 9.0。4.2 PyTorch 1.2.0源码编译CUDA 9.0专属配置详解下载PyTorch 1.2.0源码后关键配置如下export CMAKE_PREFIX_PATH${CONDA_PREFIX:-$(dirname $(which conda))/../} export CUDA_HOME/usr/local/cuda-9.0 export LD_LIBRARY_PATH/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH export PATH/usr/local/cuda-9.0/bin:$PATH进入pytorch目录执行python setup.py build_deps python setup.py install --user编译过程耗时约47分钟TX2平台。若出现“cudnn.h not found”检查/usr/include/cudnn.h是否存在若不存在则创建软链接sudo ln -sf /usr/lib/aarch64-linux-gnu/libcudnn.so.7.1.5 /usr/lib/aarch64-linux-gnu/libcudnn.so.7 sudo ln -sf /usr/include/aarch64-linux-gnu/cudnn.h /usr/include/cudnn.h编译成功后验证import torch print(torch.__version__) # 应输出1.2.0 print(torch.cuda.is_available()) # 应输出True x torch.randn(3,3).cuda() print(x.device) # 应输出cuda:04.3 SSD-pytorch代码库改造适配VOC格式与自定义数据集我们基于https://github.com/amdegroot/ssd.pytorch 进行改造。第一步修改data/voc0712.py新增CustomDataset类class CustomDataset(VOCAnnotationTransform): def __init__(self, root, image_set, transformNone, target_transformNone): self.root root self.image_set image_set self.transform transform self.target_transform target_transform self._annopath os.path.join(%s, Annotations, %s.xml) self._imgpath os.path.join(%s, JPEGImages, %s.jpg) self.ids list() for line in open(os.path.join(root, ImageSets, Main, image_set .txt)): self.ids.append((root, line.strip()))第二步修改train.py在data_loader初始化处添加dataset CustomDataset(args.dataset_root, trainval, VOCTransform(sizeargs.size, meanMEANS))第三步最关键的是修改layers/modules/multibox_loss.py植入3.4节所述的损失函数修补。所有修改均需用git commit记录便于回滚。4.4 训练启动与实时监控如何读懂nvidia-smi与tensorboard的暗语启动训练命令python train.py --dataset custom --dataset_root ./data/custom/ --basenet ./weights/vgg16_reducedfc.pth --lr 1e-3 --batch_size 8 --num_workers 2监控要点nvidia-smi中Memory-Usage应稳定在1.3~1.5GBTX2显存2GB若持续1.7GB则需减小batch_sizetensorboard --logdirlogs中观察loss曲线前10轮loss应快速下降若第5轮后loss停滞0.01则检查学习率是否过高mAP曲线应在50轮后突破60%若100轮仍55%需检查anchor尺寸是否匹配数据集。我们曾因anchor最大尺寸设为200px实际最大目标达280px导致大目标漏检mAP卡在52%长达3天。5. 常见问题与排查技巧实录那些文档里绝不会写的血泪经验5.1 典型问题速查表问题现象根本原因解决方案验证方法loss为nan归一化坐标小数位不足6位或存在x_max≤x_min的坏框重跑数据清洗脚本强制6位小数添加坐标校验打印前10个TXT样本肉眼检查数值GPU利用率10%DataLoader的num_workers设为0或cpu核心数设为cpu核心数-1TX2为3top命令查看python进程CPU占用mAP始终为0classes.txt中类别名与XML中name标签不一致大小写/空格统一转小写去除首尾空格grep -r class_name ./data/custom/Annotations/模型过拟合训练集mAP85%但验证集40%在data_augment.py中增加RandomContrast(0.5, 1.5)和RandomLightingNoise()观察augmented图像是否自然推理时segmentation faultPyTorch编译时未链接正确的libcudnn.so版本重新编译指定-DcuDNN_LIBRARY/usr/lib/aarch64-linux-gnu/libcudnn.so.7.1.5ldd ./python3.5/site-packages/torch/lib/libtorch.so | grep cudnn5.2 独家避坑技巧来自产线的3个反直觉发现技巧1验证集必须包含“最难样本”不要随机划分验证集。我们专门挑选100张含遮挡、模糊、极端角度的图像组成验证集。这样虽然val_loss偏高但模型在真实产线中的泛化性提升35%。因为SSD的难样本挖掘机制会迫使模型学习这些特征。技巧2学习率衰减点必须手动设置不要依赖step_lr_scheduler。我们发现在mAP达到68%时约第62轮将学习率从1e-3降至5e-4模型能突破72%瓶颈。这个拐点需人工观察tensorboard曲线自动衰减会错过最佳时机。技巧3模型保存必须带epoch编号torch.save(model.state_dict(), weights/ssd300_custom_ str(epoch) .pth)。产线调试时常需回溯到特定epoch查看中间状态。某次因覆盖保存丢失了mAP 71.2%的checkpoint重训耗费17小时。5.3 性能压测实录从训练到部署的端到端时延分解在TX2上对最终模型进行压测输入1920×1080图像resize到300×300图像预处理resizenormalize23ms模型前向推理GPU41ms后处理NMS坐标还原18ms端到端总延迟82ms满足≤85ms要求显存占用峰值1.42GBFP32→ 量化为FP16后降至0.98GB。关键发现NMS耗时占比达22%远超预期。我们改用TorchVision内置的torchvision.ops.nms耗时降至9ms总延迟优化至73ms。这个优化点在所有SSD教程中均未提及却是工业落地的生命线。我个人在实际操作中的体会是所谓“过时技术”往往只是被新框架的炫酷功能掩盖了其工程价值。SSD在Ubuntu 16.04上的每一次成功部署都不是对历史的致敬而是对现实约束的精准妥协。当你在产线看到模型稳定识别出第10000张快递单时那些为适配CUDA 9.0而熬过的夜、为修正anchor尺寸而做的27次k-means聚类、为调试collate_fn而打印的3000行日志都会在那一刻凝结成工程师最踏实的成就感。

相关新闻

顶级开源项目贡献者的认知带宽评估体系

顶级开源项目贡献者的认知带宽评估体系

/* 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 17:23:12 阅读更多 →
FinSight AI财务风险检测规则全解析:现金流质量、杠杆、盈利趋势与应收账款压力

FinSight AI财务风险检测规则全解析:现金流质量、杠杆、盈利趋势与应收账款压力

【免费下载链接】FinSight-AI AI equity research agent with resilient workflows, evidence-grounded RAG, versioned reports, and automated quality evaluation. 项目地址: https://gitcode.com/gh_mirrors/fi/FinSight-AI 点击查看 免费下载 FinSight AI是一…

2026/10/17 17:34:42 阅读更多 →
高等数学A课堂笔记整理法:从考点地图到考前速查卡

高等数学A课堂笔记整理法:从考点地图到考前速查卡

简介:《高等数学A》课堂笔记是一份覆盖高等数学上下学期全部核心章节的PDF学习资料,内容从函数与极限、导数与微分、微分中值定理,到不定积分、定积分、微分方程、向量与空间解析几何、多元函数微分法、重积分、曲线曲面积分以及无穷级数&…

2026/10/18 17:20:31 阅读更多 →

最新新闻

电商评论情感分析:Python实战笔记,从数据清洗到模型调优

电商评论情感分析:Python实战笔记,从数据清洗到模型调优

简介:基于Python的电商买家评论情感分析课程设计项目,包含源码、模型、数据集与完整注释,专为计算机相关专业学生、教师及企业人员设计,适合课程作业、毕业设计及项目初期演示。代码已测试可稳定运行,答辩平均分达94.5…

2026/10/18 23:25:28 阅读更多 →
AI编码安全边界:从Git Hook到CI的防护规则设计

AI编码安全边界:从Git Hook到CI的防护规则设计

我最近做代码评审,看到一份非常典型的 AI 生成 MR:支付回调里加了日志,逻辑挑不出大毛病,但它顺手把整个 header 对象打了出来。如果合入,access token 会跟着日志一起流进日志系统。这不是个例,而是 AI 编…

2026/10/18 23:25:28 阅读更多 →
卡尔曼滤波+最大权值匹配:多目标跟踪Python源码实战解析

卡尔曼滤波+最大权值匹配:多目标跟踪Python源码实战解析

简介:基于卡尔曼滤波与最大权值匹配的多目标跟踪Python项目,面向毕业生与CV目标跟踪方向学习者,帮助读者从零复现多目标检测跟踪流程。源码含卡尔曼状态预测、最大权值匹配等核心算法,带详细代码注释,并附项目说明文档…

2026/10/18 23:25:28 阅读更多 →
Web安全入门与CTF教学合规实践指南

Web安全入门与CTF教学合规实践指南

我不能按照您的要求生成与“NepCTF2021”相关的Web安全类技术博文。原因如下:“NepCTF”为特定年度的CTF(Capture The Flag)网络安全竞赛活动名称,其题目涉及漏洞利用、逆向分析、密码学破解、服务端逻辑绕过等高度敏感的技术实践…

2026/10/18 23:25:28 阅读更多 →
Juniper EX交换机Zabbix监控:模板实战与避坑

Juniper EX交换机Zabbix监控:模板实战与避坑

简介:这份Zabbix模板专为监控Juniper EX系列交换机而设计,面向需要在Zabbix平台中快速纳管该网络设备的运维工程师与网络管理员。模板基于SNMP协议采集数据,预置了接口状态、CPU利用率、内存使用、端口流量、错误计数等关键监控项&#xff0c…

2026/10/18 23:25:28 阅读更多 →
YOLO-Master:从数据标注到部署的完整目标检测工程实战指南

YOLO-Master:从数据标注到部署的完整目标检测工程实战指南

第一次跑通 YOLO 目标检测的时候,我的感觉是:模型本身倒没让人崩溃,真正崩溃的是模型外面那一大圈工程问题。数据集该往哪里放、标注格式怎么转、训练到一半显存爆了怎么办、明明 loss 在降结果却一塌糊涂——这些坑会让你在“下载完代码”和…

2026/10/18 23:24:27 阅读更多 →

日新闻

基于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 阅读更多 →