8089张野生动物数据集实战:YOLO与VOC格式转换及YOLOv8训练避坑指南
简介这份资源是面向计算机视觉与目标检测学习者的野生动物标注数据集适用于野外固定视角摄像场景下的动物识别模型训练与算法验证尤其适合从事YOLO系列或VOC格式检测任务的中高级开发者。压缩包共约2000个文件以1999个xml标注文件和1个说明txt为主整体约371.87MB内含JPEGImages图片、Annotations的xml与labels的txt三类目录分别对应原图、VOC标注与YOLO标注方便直接接入主流检测框架。数据集覆盖大角斑羚、大象、长颈鹿、黑斑羚、捻角羚、羚羊、犀牛、角马、斑马共9类动物标注总框数达19285个其中黑斑羚3907框、捻角羚2780框、大角斑羚2642框类别分布较均衡。目前已有460人学习下载可为野外动物检测、多类别识别与模型对比实验提供现成标注基础省去自行采集与标注成本。1. 8089 张野生动物数据集到手后先搞清楚它到底能干什么拿到一个标注好的野生动物数据集第一反应往往是直接丢进 YOLO 开训。但 8089 张、9 个类别、同时提供 YOLO 和 VOC 两套格式这几个数字背后其实藏着不少决策点。野生动物检测和常规的车辆检测数据集、行人检测数据集有本质区别动物姿态变化极大、毛发纹理干扰多、同类不同亚种外观差异大而且野外场景的光照和遮挡远比城市道路复杂。这个数据集能解决的核心问题是让你跳过最痛苦的数据采集和标注环节直接进入模型训练和调参阶段。适合谁用做生态监测的、做保护区智能相机的、做野生动物科普应用的以及想拿一个中等规模多类数据集练手 YOLO 全流程的工程师。8089 张不算大但也不算小9 个类别意味着每类平均不到 900 张这个量级决定了你必须在数据增强和迁移学习上花心思而不是指望从零训练出一个高精度模型。2. 拆开这个数据集YOLO 格式和 VOC 格式到底怎么选2.1 两套格式的文件结构差异VOC 格式的核心是三个文件夹JPEGImages放原图Annotations放 XML 标注文件ImageSets/Main放训练集、验证集、测试集的划分文件。每个 XML 文件里记录了图片尺寸、每个目标的类别名和边界框的xmin/ymin/xmax/ymax坐标。YOLO 格式则简洁得多图片放一个文件夹每张图对应一个.txt标注文件每行是class_id x_center y_center width height全部归一化到 0 到 1 之间。两套格式没有优劣之分但选哪套取决于你的训练框架和后续扩展需求。我一般会这样判断如果你用 Ultralytics 的 YOLOv5/v8/v11 系列直接用 YOLO 格式省去转换步骤如果你要用 MMDetection、Detectron2 或者需要做实例分割的扩展VOC 格式的 XML 更容易转成 COCO 格式。另外VOC 格式保留了原始图片尺寸信息在做多尺度训练时方便回溯。2.2 用脚本检查数据集完整性拿到数据集后别急着训练先跑一遍完整性检查。下面这个脚本检查图片和标注是否一一对应、标注框是否越界、类别分布是否均衡import os import xml.etree.ElementTree as ET from collections import Counter from PIL import Image def check_voc_dataset(img_dir, ann_dir): 检查VOC格式数据集的完整性 img_files set(os.path.splitext(f)[0] for f in os.listdir(img_dir) if f.lower().endswith((.jpg, .png, .jpeg))) ann_files set(os.path.splitext(f)[0] for f in os.listdir(ann_dir) if f.endswith(.xml)) # 检查缺失 missing_ann img_files - ann_files missing_img ann_files - img_files print(f图片总数: {len(img_files)}, 标注总数: {len(ann_files)}) print(f缺标注的图片: {len(missing_ann)}, 缺图片的标注: {len(missing_img)}) # 统计类别分布和越界框 class_counter Counter() invalid_boxes 0 for ann_file in ann_files: tree ET.parse(os.path.join(ann_dir, ann_file .xml)) root tree.getroot() size root.find(size) w int(size.find(width).text) h int(size.find(height).text) for obj in root.findall(object): cls_name obj.find(name).text class_counter[cls_name] 1 bbox obj.find(bndbox) xmin int(bbox.find(xmin).text) ymin int(bbox.find(ymin).text) xmax int(bbox.find(xmax).text) ymax int(bbox.find(ymax).text) if xmin 0 or ymin 0 or xmax w or ymax h or xmax xmin or ymax ymin: invalid_boxes 1 print(f\n类别分布:) for cls, cnt in class_counter.most_common(): print(f {cls}: {cnt}) print(f\n越界或无效标注框: {invalid_boxes}) # 用法 check_voc_dataset(./JPEGImages, ./Annotations)这段代码的逻辑很直接先用集合运算找出图片和标注的差集然后逐个解析 XML 统计类别数量同时检查边界框是否超出图片范围。参数方面img_dir和ann_dir换成你实际的路径即可。如果发现缺标注的图片数量超过总数的 2%建议直接删掉这些图片而不是补标注因为补标注的成本远高于丢弃少量样本。类别分布如果出现某一类少于 300 张后面训练时需要对这类做过采样或者单独设置更高的损失权重。2.3 VOC 转 YOLO 格式的转换脚本如果你拿到的只有 VOC 格式但想用 YOLO 训练转换脚本如下import os import xml.etree.ElementTree as ET # 9个类别的名称列表按你的实际类别顺序修改 CLASSES [bear, deer, elephant, fox, leopard, lion, tiger, wolf, zebra] def voc_to_yolo(ann_dir, output_dir, classes): 将VOC XML标注转换为YOLO txt格式 os.makedirs(output_dir, exist_okTrue) for xml_file in os.listdir(ann_dir): if not xml_file.endswith(.xml): continue tree ET.parse(os.path.join(ann_dir, xml_file)) root tree.getroot() size root.find(size) w int(size.find(width).text) h int(size.find(height).text) lines [] for obj in root.findall(object): cls_name obj.find(name).text if cls_name not in classes: continue # 跳过不在类别列表中的目标 cls_id classes.index(cls_name) bbox obj.find(bndbox) xmin int(bbox.find(xmin).text) ymin int(bbox.find(ymin).text) xmax int(bbox.find(xmax).text) ymax int(bbox.find(ymax).text) # 归一化并计算中心点和宽高 x_center (xmin xmax) / 2.0 / w y_center (ymin ymax) / 2.0 / h bw (xmax - xmin) / w bh (ymax - ymin) / h # 裁剪到[0,1]范围防止浮点误差导致越界 x_center max(0, min(1, x_center)) y_center max(0, min(1, y_center)) bw max(0, min(1, bw)) bh max(0, min(1, bh)) lines.append(f{cls_id} {x_center:.6f} {y_center:.6f} {bw:.6f} {bh:.6f}) # 写入对应的txt文件 txt_name os.path.splitext(xml_file)[0] .txt with open(os.path.join(output_dir, txt_name), w) as f: f.write(\n.join(lines)) print(f转换完成共处理 {len(os.listdir(output_dir))} 个标注文件) # 用法 voc_to_yolo(./Annotations, ./labels, CLASSES)关键参数说明CLASSES列表的顺序决定了class_id的映射关系必须和后续训练时的data.yaml中的names完全一致否则模型学到的类别会全部错位。归一化后的坐标保留 6 位小数足够再多是浪费存储。裁剪到[0,1]这一步看起来多余但实际转换中经常遇到xmax恰好等于图片宽度导致x_center bw/2略微超过 1 的情况不裁剪的话 YOLO 训练时会报错。3. 用 YOLOv8 跑通第一个野生动物检测模型3.1 环境搭建与 data.yaml 配置环境搭建不复杂但版本兼容性是第一个坑。我一般用 Python 3.9 到 3.11 之间的版本太新的 Python 有时会让某些依赖编译失败。安装命令pip install ultralytics8.2.0 opencv-python pillow pyyaml装完之后用yolo checks验证环境是否正常。接下来配置data.yaml# data.yaml path: /home/user/wildlife_dataset # 数据集根目录 train: images/train # 训练集图片相对路径 val: images/val # 验证集图片相对路径 test: images/test # 测试集图片相对路径可选 nc: 9 # 类别数 names: # 类别名称顺序必须和转换脚本中的CLASSES一致 0: bear 1: deer 2: elephant 3: fox 4: leopard 5: lion 6: tiger 7: wolf 8: zebra目录结构应该是这样的wildlife_dataset/images/train/放训练图片wildlife_dataset/labels/train/放对应的 txt 标注。验证集和测试集同理。这里有个容易翻车的地方YOLO 默认会在path指定的目录下找labels文件夹且labels和images的目录层级必须对应。如果你的标注文件放在别的地方训练时会直接报“No labels found”。3.2 训练参数怎么设从 8089 张数据出发8089 张图、9 个类别我建议的起步训练命令yolo detect train \ datadata.yaml \ modelyolov8m.pt \ epochs150 \ imgsz640 \ batch16 \ lr00.001 \ lrf0.01 \ warmup_epochs5 \ patience30 \ augmentTrue \ mosaic1.0 \ mixup0.1 \ copy_paste0.1 \ save_period10 \ projectruns/wildlife \ nameexp01逐个说参数的选择理由。modelyolov8m.pt而不是yolov8n或yolov8xn 太小9 类动物细粒度区分不够x 太大8089 张容易过拟合且训练慢。m 是中等规模在精度和速度之间比较平衡。epochs150配合patience30意思是如果 30 轮验证集指标不提升就提前停止避免浪费时间。imgsz640是 YOLO 的标准输入尺寸野生动物图片如果原图分辨率很高建议先用脚本统一缩放到长边 640 再训练否则数据加载会成为瓶颈。mosaic1.0是 YOLO 的默认增强把四张图拼成一张对小数据集特别有效。mixup0.1和copy_paste0.1是额外增强mixup 做图像混合copy_paste 做实例粘贴。这两个值不要设太高0.1 到 0.2 之间就够了太高会导致训练分布和真实分布偏差过大。lr00.001是初始学习率如果你用预训练权重这个值比较稳妥如果从零训练可以调到 0.01。lrf0.01是最终学习率因子意思是学习率从 0.001 余弦衰减到 0.00001。3.3 训练过程中看什么指标训练启动后终端会实时打印每一轮的box_loss、cls_loss、dfl_loss和mAP50、mAP50-95。重点看三个信号第一box_loss是否稳定下降如果震荡剧烈说明学习率偏大或者 batch size 太小第二mAP50在前 10 轮应该快速上升到 0.3 以上如果 10 轮后还在 0.1 附近大概率是 data.yaml 配置有问题或者标注格式不对第三验证集的cls_loss如果持续上升而训练集的在下降说明过拟合了需要增加增强强度或者减少模型参数量。训练完成后runs/wildlife/exp01/weights/下会有best.pt和last.pt。best.pt是验证集指标最好的权重last.pt是最后一轮的。推理测试yolo detect predict \ modelruns/wildlife/exp01/weights/best.pt \ sourcetest_images/ \ conf0.25 \ iou0.45 \ saveTrueconf0.25是置信度阈值低于这个值的检测框会被过滤。野生动物场景建议先从 0.25 开始如果漏检多就降到 0.15如果误检多就升到 0.4。iou0.45是 NMS 的 IoU 阈值控制重叠框的合并程度。4. 野生动物检测的避坑指南5 个血泪教训4.1 类别不平衡导致小类几乎检测不到现象训练完发现 leopard 和 wolf 的 AP 只有 0.2 左右而 bear 和 zebra 能到 0.7。原因9 个类别中某些类别的样本数可能只有 300 到 400 张而多的能到 1500 张以上。YOLO 的损失函数对所有样本一视同仁小类被大类淹没。解决两个办法。一是对训练集中小类图片做过采样把包含小类的图片在文件列表中重复 2 到 3 次二是在data.yaml同级目录下建一个hyp.yaml设置cls_pw1.0类别权重但 YOLOv8 对类别权重的支持不如 v5 直接更推荐过采样。我一般用第一种简单有效。4.2 验证集 mAP 很高但实际推理效果差现象验证集 mAP50 到了 0.85但拿真实野外照片测试漏检和误检都很严重。原因训练集和验证集来自同一批数据分布一致但真实场景的光照、背景、动物姿态和数据集差异大。另外如果验证集图片和训练集图片有重叠比如同一段视频抽帧指标会虚高。解决检查数据集的划分方式。如果是随机划分确保同一只动物、同一场景的图片不要同时出现在训练集和验证集。更好的做法是留出一部分完全不同来源的图片做测试集。另外推理时把imgsz调到 1280 试试野生动物在原图中往往占比较小提高输入分辨率能显著改善小目标检测。4.3 标注框包含大量背景区域现象模型学到的框总是比动物实际范围大一圈把周围的树枝、草丛也框进去了。原因标注人员在画框时倾向于画大一点确保动物完全在框内。这种“宽松标注”在 VOC 格式中很常见。解决如果标注框的宽高比动物实际身体大 20% 以上可以考虑在训练时用copy_paste增强来让模型学会更紧致的边界。另外YOLOv8 的dfl_loss本身会优化边界回归但前提是标注质量要过关。如果标注质量实在太差建议用 SAM 或者 Grounding DINO 做一遍半自动重标注。4.4 训练到一半 loss 突然变成 NaN现象前 50 轮正常第 51 轮开始box_loss变成 NaN训练崩溃。原因最常见的是学习率过大导致梯度爆炸其次是数据集中有损坏的图片或标注文件比如宽高为 0 的框。解决先跑一遍第 2 章的数据完整性检查脚本排除无效标注。如果数据没问题把lr0降到 0.0005并加上ampFalse关闭混合精度训练试试。混合精度在少数情况下会导致数值不稳定。另外batch16如果显存不够被自动降到了 4 或 8也会影响训练稳定性建议用batch-1让 YOLO 自动选择最大可用 batch size。4.5 推理速度远低于预期现象训练时显示每张图推理只要 5ms但实际部署时用 OpenCV 读图加推理每张要 200ms。原因训练时的速度是纯 GPU 推理时间不包括图片解码、预处理、后处理。实际部署中图片解码和 resize 往往占了大头。解决用yolo export导出 ONNX 或 TensorRT 格式推理速度能提升 2 到 3 倍。导出命令yolo export modelbest.pt formatonnx imgsz640 halfTruehalfTrue表示用 FP16 精度速度更快但精度损失很小。如果部署在 NVIDIA 边缘设备上导出 TensorRT 引擎yolo export modelbest.pt formatengine imgsz640 halfTrue device0导出后的模型用 ONNX Runtime 或 TensorRT 的 Python API 加载配合预处理流水线单张推理可以压到 20ms 以内。5. 把 8089 张数据的价值榨干进阶技巧与验证方法训练出一个能跑的模型只是起点。8089 张、9 个类别的数据集如果只训一个 YOLOv8m 就收手其实浪费了它的潜力。我一般会做三件事来验证和提升。第一件事是交叉验证。把训练集分成 5 折每折训一个模型看 mAP 的均值和方差。如果方差超过 0.05说明数据划分对结果影响很大需要重新设计划分策略。YOLO 本身不直接支持 k-fold但可以用split参数配合脚本手动实现。具体做法是用sklearn.model_selection.KFold生成 5 组文件列表每组分别写一个data_fold_i.yaml然后循环调用yolo detect train。5 个模型训完后用yolo detect val分别评估记录每折的 mAP50-95。第二件事是错误分析。把验证集上所有误检和漏检的图片挑出来按类别、按场景白天/夜晚、近距离/远距离、遮挡/无遮挡分组统计。我常用的做法是跑一遍推理把conf设在 0.1 到 0.9 之间每隔 0.1 跑一次画一条 precision-recall 曲线找到最佳工作点。下面这个脚本可以批量统计不同置信度下的检测结果from ultralytics import YOLO import os model YOLO(runs/wildlife/exp01/weights/best.pt) conf_thresholds [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7] for conf in conf_thresholds: results model.val(datadata.yaml, confconf, iou0.45, verboseFalse) print(fconf{conf:.1f} | mAP50{results.box.map50:.4f} | fmAP50-95{results.box.map:.4f} | fprecision{results.box.mp:.4f} | recall{results.box.mr:.4f})跑完这个脚本你会得到一张表清楚看到置信度从 0.1 升到 0.7 时precision 和 recall 的权衡关系。野生动物监测场景通常更看重 recall宁可误检也别漏检所以我会选 recall 开始明显下降之前的那个 conf 值。第三件事是导出多种格式做部署验证。同一个best.pt分别导出 ONNX、TensorRT、OpenVINO在目标硬件上跑 100 张测试图记录平均推理时间和 mAP 下降幅度。下面这张表是我在类似规模数据集上的经验值供参考格式推理设备平均耗时mAP50 变化PyTorch FP32RTX 306012ms基准ONNX FP16RTX 30607ms-0.002TensorRT FP16RTX 30604ms-0.003OpenVINO FP16Intel i7 CPU35ms-0.004ONNX FP32Jetson Orin18ms-0.002注意 TensorRT 导出时需要指定device0且导出后的引擎文件不能跨设备使用换一台机器要重新导出。OpenVINO 在 CPU 上的表现取决于 CPU 是否支持 AVX-512 指令集老 CPU 上可能慢一倍。最后说一个我踩过的坑不要用验证集反复调参。验证集用多了模型就“记住”了验证集指标会虚高。我的习惯是验证集只用来做早停和模型选择真正的调参依据是训练集上的交叉验证结果。测试集在最终交付前只跑一次跑完就封存。这个习惯让我少了很多“上线后翻车”的时刻。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

802.11权威指南中文版翻译复盘:协议、术语与审校实战

802.11权威指南中文版翻译复盘:协议、术语与审校实战

断断续续搞了快十个月,总算把这个项目收尾了——《802.11 Wireless Networks: The Definitive Guide》中文版,从初译、技术审校到最终排版定稿,全部走完。做无线协议这行的人对这本书应该都不陌生,很多写路由器固件、无线网卡驱动…

2026/10/11 18:00:38 阅读更多 →
电缆表皮腐蚀检测数据集:1583张实采图+双格式标注

电缆表皮腐蚀检测数据集:1583张实采图+双格式标注

简介:电缆表皮腐蚀检测是工业视觉中典型的小目标、低对比度、类内差异大任务,其核心挑战在于缺乏真实场景覆盖的高质量标注数据。基于YOLO与VOC双格式兼容的实采数据集,可支撑模型从原理理解(归一化坐标与绝对坐标的转换机制&…

2026/10/11 17:59:37 阅读更多 →
YOLOv8表情识别实战:数据校验、训练调参与避坑指南

YOLOv8表情识别实战:数据校验、训练调参与避坑指南

简介:面向深度学习开发者与计算机视觉学习者,这是一份完整的YOLOv8人脸表情识别工程包,整合了标注数据集、可运行源码与手把手的配套教程,帮助读者快速跨越从环境搭建、数据预处理到模型训练与部署的全流程,尤其适合课…

2026/10/11 17:59:37 阅读更多 →

最新新闻

Boss直聘数据爬虫分析与可视化实战:从采集到图表的完整链路

Boss直聘数据爬虫分析与可视化实战:从采集到图表的完整链路

简介:一份基于 Python 的 Boss直聘岗位数据爬虫分析可视化项目,面向希望入门爬虫与数据可视化的学习者,也适合作为毕业设计、课程设计或工程实训的参考模板。项目围绕 Scrapy 框架展开,覆盖从创建爬虫项目、配置解析规则到将热门城…

2026/10/11 18:46:03 阅读更多 →
Java后端日志的正确打开方式:从规范到链路追踪

Java后端日志的正确打开方式:从规范到链路追踪

说句不客气的:别再瞎打日志了。做了这么多年 Java 后端,我见过太多团队把日志当成“打完就完事”的体力活,结果线上出了问题,全组人趴在控制台前面,被一屏一屏的 INFO 刷得头皮发麻,最后才发现那条真正的 E…

2026/10/11 18:46:03 阅读更多 →
AI与WMS的深度融合:2026年智能仓储的能力演进与厂商实践

AI与WMS的深度融合:2026年智能仓储的能力演进与厂商实践

一、从记录工具到决策中枢:WMS正在经历能力跃迁 过去十年,WMS的核心价值可以用一句话概括:把仓库里的每一笔操作准确地记录下来。收货、上架、拣货、复核、发货——每个环节通过条码扫描或RFID识读完成数据采集,库存数字实时更新…

2026/10/11 18:46:03 阅读更多 →
Web服务性能核心:I/O模型、epoll与Reactor模式全面解析

Web服务性能核心:I/O模型、epoll与Reactor模式全面解析

作为一个常年跟后端服务打交道的人,我对“Web 服务与 I/O 模型”这个主题感触很深。不管是刚入行的新手,还是已经写了几年业务代码的老兵,只要你想让服务扛住高并发,或者想搞懂那些框架底层为什么这么设计,阻塞 IO、非…

2026/10/11 18:46:03 阅读更多 →
行人轨迹预测实战指南:GI-GAN注意力机制与对抗训练复现详解

行人轨迹预测实战指南:GI-GAN注意力机制与对抗训练复现详解

简介:一项面向计算机视觉与图像处理研究的学术论文PDF,围绕行人轨迹预测问题提出GI-GAN模型。该模型在编码层采用双向长短期记忆网络BiLSTM提取行人运动隐藏特征,引入双注意力模块分别计算个体运动信息与群体交互信息的关联度,并借…

2026/10/11 18:46:03 阅读更多 →
基于SpringBoot的网页即时聊天系统【源码+文档】

基于SpringBoot的网页即时聊天系统【源码+文档】

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/10/11 18:45:02 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

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

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

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

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →