自制无人机视角小目标检测数据集:VOC/YOLO/COCO格式转换与增强实战
简介面向无人机视角小目标检测的研究者与毕业设计、课程设计使用者这是一份自制车辆行人检测数据集包含548张真实场景图像背景丰富且非单一连续帧。标注涵盖轿车、摩托车、行人、三轮车、货车、自行车、遮阳三轮车、忽略区域、其他等11个类别可直接用于小目标检测算法的训练与效果验证。压缩包共2000个文件主要分为四类文本格式的YOLO标签、XML格式的VOC标签、Python编写的增强与格式转换脚本、以及JSON标注文件整体大小约314.58MB目录组织清晰便于按需取用。数据已预先划分好训练集与验证集配合增强脚本可生成更多角度、亮度变化的样本格式转换脚本支持VOC、YOLO、COCO、JSON之间互转能快速适配主流深度学习框架省去大量手工标注与格式整理时间。目前已有620人学习下载无论科研测试、毕业设计还是实际项目演示这套含脚本的完整数据集都能提供即取即用的落地支持。1. 自制无人机视角小目标数据集548张图为什么值得从零攒做无人机视角的车辆行人检测最卡人的往往不是模型选型而是数据根本撑不起小目标场景。公开的车辆检测数据集一抓一大把但要么拍摄角度是平视或近地斜视要么目标动辄占画面的三分之一模型训完一上真机就退化对二三十像素的车辆和行人基本漏检。所以我才更倾向自己攒一套自制无人机视角小目标车辆行人检测数据集548张原图虽然不大但配上VOC、YOLO、COCO三种格式标签再加一份数据增强脚本完全够撑起一轮YOLO系列从训练到验证的完整闭环。下面按筛选、标注、转换、增强到训练验证的顺序把一套能落地的做法拆开讲适合手里有航拍素材、想跑通小目标检测的从业者照着做。2. 三种标注格式的本质VOC/YOLO/COCO的存储结构与坐标换算很多人在网上下载到一个带三种标签的数据集压缩包解压后直接扔进训练脚本就跑跑通了也说不清三种格式到底差在哪。等你把自采数据喂进训练框架时第一个翻车点必定是格式转换。三种格式不是简单的“换一层皮”而是坐标系的搬运。VOC用绝对像素坐标、YOLO用归一化中心点坐标、COCO用绝对像素的左上角加宽高——只要一种坐标没对齐训练出来的框就会偏、就会飞。2.1 VOC的XML结构object节点与bndbox的读取方法Pascal VOC是目标检测里最经典的组织方式每张图片对应一个同名XML文件。XML顶层是annotation节点里面有folder、filename、source和size。size里的width、height记录图片像素尺寸这是后面所有坐标换算的分母读错一个尺寸整批坐标全歪。每个目标是一个object节点内部包含name类别名、pose、truncated、difficult以及bndbox。bndbox里的xmin、ymin、xmax、ymax是绝对像素坐标分别表示左上角和右下角。解析VOC时我一般用xml.etree.ElementTree按object节点循环取name和bndbox。要注意的是标注工具生成的坐标有些是浮点字符串直接int()会抛异常所以要先float再int做个防御性处理。另外如果你准备后续转YOLO格式XML里必须存了图片宽高别用图片文件本身去读尺寸——文件可能被压缩过或改过名但XML里的size才是标注阶段的原始口径。import xml.etree.ElementTree as ET def parse_voc(xml_path): tree ET.parse(xml_path) root tree.getroot() size root.find(size) img_w int(size.find(width).text) img_h int(size.find(height).text) objects [] for obj in root.findall(object): name obj.find(name).text box obj.find(bndbox) xmin int(float(box.find(xmin).text)) ymin int(float(box.find(ymin).text)) xmax int(float(box.find(xmax).text)) ymax int(float(box.find(ymax).text)) objects.append({ name: name, bbox: [xmin, ymin, xmax, ymax] }) return img_w, img_h, objects这段代码先取图片尺寸再遍历所有object节点把类别名和bbox坐标组装成字典列表。注意我在int转换前先夹了一层float因为有些标注工具会把坐标写成123.0字符串直接int()会报错。返回的img_w和img_h是后续转换的基准objects列表里每一项代表一个目标框。2.2 YOLO的txt标注归一化坐标与类别编号怎么对应YOLO系列读取的标注格式是每张图对应一个同名txt文件一行一个目标格式固定为class_id x_center y_center width height。这里有两个必须刻进脑子的点坐标全部归一化到0到1之间分母是图片的宽和高中心点坐标不是左上角坐标。很多人在第一次转格式时把width写成右下角的xmax训练出来的框全是歪的而且损失函数看着在收敛实际mAP一塌糊涂。归一化的公式很简单x_center (xmin xmax) / 2 再除以图片宽度宽等于(xmax - xmin)除以图片宽度。VOC转YOLO最隐蔽的坑是类别编号YOLO的txt里第一列是类别ID必须和你训练配置里的classes.txt顺序一致。我习惯先写一个classes.txt让转换脚本读它生成name到id的映射避免每次手写映射表出错。def voc_to_yolo_txt(xml_path, classes_list, out_txt): img_w, img_h, objects parse_voc(xml_path) name_to_id {name: idx for idx, name in enumerate(classes_list)} with open(out_txt, w) as f: for obj in objects: if obj[name] not in name_to_id: continue # 跳过未在classes中定义的类别 xmin, ymin, xmax, ymax obj[bbox] x_center (xmin xmax) / 2.0 / img_w y_center (ymin ymax) / 2.0 / img_h w (xmax - xmin) / img_w h (ymax - ymin) / img_h cls_id name_to_id[obj[name]] f.write(f{cls_id} {x_center:.6f} {y_center:.6f} {w:.6f} {h:.6f}\n)这里的关键是归一化公式里的分母用的是img_w和img_h不是目标框的宽高。有人会犯迷糊把x_center除以目标的宽度面对无人机视角下十几像素的小目标除出来的值直接放大几十倍训练时yolo损失函数瞬间爆炸成NaN。第二个细节是保留6位小数对小目标来说宽度可能只有0.01量级6位小数刚好覆盖到1e-6够用如果你用float16训练再多的小数位也会被截断。2.3 COCO的JSON结构categories与annotations的匹配逻辑COCO格式和VOC、YOLO都不同它不按图建文件而是把所有标注汇成一个JSON里面分三块images存图片ID、文件路径和尺寸annotations存每个目标的框信息、所属图片ID、类别ID和面积categories存类别ID与类别名的映射。annotations里的bbox是[x, y, width, height]的绝对像素坐标x和y是左上角不是中心点。area字段也建议补上面积取宽乘高评估脚本会用到。COCO格式最容易翻车的是category_id的起始值。YOLO的class_id从0开始COCO的category_id从1开始如果你直接把YOLO的txt转成COCO忘了加1评估时就会报category id out of range。另一个高频问题是image_id的对应关系——images里的id和annotations里的image_id必须一致而且建议从1开始递增避免和0值混淆。def voc_to_coco_json(xml_list, classes_list, out_json): coco { images: [], annotations: [], categories: [ {id: idx 1, name: name} # COCO的id从1开始 for idx, name in enumerate(classes_list) ] } ann_id 1 for img_id, xml_path in enumerate(xml_list, start1): img_w, img_h, objects parse_voc(xml_path) coco[images].append({ id: img_id, file_name: xml_path.replace(.xml, .jpg), width: img_w, height: img_h }) for obj in objects: xmin, ymin, xmax, ymax obj[bbox] w xmax - xmin h ymax - ymin cat_id classes_list.index(obj[name]) 1 # 1对齐COCO coco[annotations].append({ id: ann_id, image_id: img_id, category_id: cat_id, bbox: [xmin, ymin, w, h], area: w * h, iscrowd: 0 }) ann_id 1 with open(out_json, w) as f: json.dump(coco, f)这段脚本直接从VOC批量生成COCO。我特别把两种容易错的对应关系写在代码里image_id从1开始自增category_id在classes_list索引基础上加1。如果后续你要用mmdetection它还会要求annotation里带segmentation字段——这时候就需要把bbox的四角按顺时针拼成多边形列表否则可视化阶段框根本画不出来。3. 从航拍素材到格式化数据集图像筛选、标注与转换三件事拿到548张图的最终成品之前源头是航拍视频或无人机照片。很多人一上来就把所有画面都标注了结果类别分布不均衡、目标尺寸单一模型练完效果很差。这一章直接讲三件事选哪些图、怎么标、怎么转换成三份格式。本质上是一套流水线跑通一次之后后面的图就能按相同流程批量处理。3.1 原图筛选的四个标准目标尺寸、视角、光照与背景第一个标准是目标尺寸比例。无人机视角下车辆通常只有20到60像素宽行人更小往往在15到30像素之间。以COCO定义的32×32像素作为小目标参照筛图时不能只挑目标大的画面那样模型学不到小目标的特征。我的习惯是让小于32像素的标注框数量占比至少达到30%让训练在早期就能见到难例。第二个标准是视角一致性。无人机航拍以俯视和斜俯视为主目标呈现明显的俯视变形。公开数据集里大量水平视角的画面混进来反而会让模型学乱。筛图时只保留俯视或斜俯视画面车顶、行人头顶特征要清晰可见。第三个是光照变化清晨逆光、正午强光、傍晚低照度的画面都要覆盖否则模型在光线变化时会性能波动。第四个是背景多样性树荫、车顶反光、路面标线都会干扰特征提取尽量把不同场景分散到各张图里别让同一片停车场的图占一半。# 从4K视频抽帧并按清晰度粗筛 ffmpeg -i drone_video.mp4 -vf fps2,scale1920:1080 -q:v 2 frames/frame_%04d.jpg # 删除小于80KB的模糊帧 find frames -name *.jpg -size -80k -deleteffmpeg抽帧时fps2表示每秒取2帧一个小时的视频有7200帧但最终只需要548张。重点不是抽得多而是抽得均匀。建议先抽低帧率每隔一段时间取一帧然后快速浏览一遍把画面明显重复的删掉。文件大小粗筛是个省事的办法模糊帧因为细节少、压缩体积小80KB阈值在1080p下还算靠谱但遇到大面积纯色天空时要谨慎容易误删。3.2 标注流程用LabelImg产出VOC初级XML标注工具我用得最多的是LabelImg它原生支持VOC和YOLO两种格式导出。打开图片后画框选择类别下一张继续。这里有个直接影响后续转换的细节类别名必须提前预置在classes.txt里下拉选择而不是手动输入。手动输入是最容易出错的环节同一个类别出现Car和car两个版本后面转脚本就全乱了。标注完成后每张图片生成一个同名XML文件。548张图一个人标大概需要6到8小时熟练后能到每张40秒。标记完建议抽检20张重点看两类一是目标被截断的框取到截断边界还是完整目标二是目标太小难以辨认的我的习惯是只要能判断出是车辆或行人就标实在认不出来就保留原图但删除标注不让模糊标签干扰训练。标注流程里我还会把中间产物和最终产物分目录放annotations_raw和annotations_reviewed。每校验完一批就把XML挪到reviewed目录。这样如果后期发现标注标准不一致还有原始档可以回溯不至于推倒重来。这就是给自己留的后悔药。3.3 VOC转YOLO再转COCO一份可复用的批量脚本格式转换是整个流程里最容易踩坑的一环。下面先给一套完整的Python脚本覆盖VOC转YOLO和VOC转COCO两个方向批量扫描目录里的XML输出对应的txt和JSON。脚本复用了2.1节的parse_voc保证两个转换方向的坐标口径一致。import os, json, glob import xml.etree.ElementTree as ET CLASSES [car, person, truck, bicycle, motorcycle] def parse_voc(xml_path): tree ET.parse(xml_path) root tree.getroot() size root.find(size) img_w int(size.find(width).text) img_h int(size.find(height).text) objects [] for obj in root.findall(object): name obj.find(name).text if name not in CLASSES: continue box obj.find(bndbox) xmin int(float(box.find(xmin).text)) ymin int(float(box.find(ymin).text)) xmax int(float(box.find(xmax).text)) ymax int(float(box.find(ymax).text)) objects.append({name: name, bbox: [xmin, ymin, xmax, ymax]}) return img_w, img_h, objects def voc_to_yolo_file(xml_path, out_txt): img_w, img_h, objs parse_voc(xml_path) name_to_id {n: i for i, n in enumerate(CLASSES)} lines [] for obj in objs: xmin, ymin, xmax, ymax obj[bbox] xc (xmin xmax) / 2.0 / img_w yc (ymin ymax) / 2.0 / img_h w (xmax - xmin) / img_w h (ymax - ymin) / img_h lines.append(f{name_to_id[obj[name]]} {xc:.6f} {yc:.6f} {w:.6f} {h:.6f}) with open(out_txt, w) as f: f.write(\n.join(lines)) def voc_to_coco_batch(xml_files, out_json): coco {images: [], annotations: [], categories: [{id: i1, name: n} for i, n in enumerate(CLASSES)]} ann_id 1 for img_id, xml_path in enumerate(xml_files, start1): img_w, img_h, objs parse_voc(xml_path) coco[images].append({ id: img_id, file_name: os.path.basename(xml_path).replace(.xml, .jpg), width: img_w, height: img_h}) for obj in objs: xmin, ymin, xmax, ymax obj[bbox] w, h xmax-xmin, ymax-ymin coco[annotations].append({ id: ann_id, image_id: img_id, category_id: CLASSES.index(obj[name]) 1, bbox: [xmin, ymin, w, h], area: w*h, iscrowd: 0}) ann_id 1 with open(out_json, w) as f: json.dump(coco, f) # 批量调用 xml_list glob.glob(annotations_reviewed/*.xml) for xml_path in xml_list: voc_to_yolo_file(xml_path, labels/ os.path.basename(xml_path).replace(.xml, .txt)) voc_to_coco_batch(xml_list, annotations_coco/instances.json)脚本的核心思想是单一数据源所有转换都从VOC XML出发不搞VOC转YOLO再转COCO的链式转换避免中间过程的精度损失。跑完检查两件事一是txt里的所有坐标值是否都在0到1之间二是生成的COCO JSON能否用json.loads正常读回。如果出现负数或大于1的值多半是图片宽高读错回去查XML的size节点。4. 数据增强脚本把548张扩到2000张的扩增实现与参数设置548张原始图像训练检测模型肯定不够至少要扩一倍以上。但增强不是把图片随便翻转加噪点无人机视角下有些变换在物理上不成立做了反而引入噪声。这一章给出选型思路、实现代码和建议参数照着调就能把548张扩到2000张级别。4.1 增强策略选型几何变换、光度扰动与混合增强几何变换里水平翻转是安全的因为无人机左右转向不改变目标外观垂直翻转千万不要开那等于把天上视角变成地下视角车顶特征全变了。旋转要控制在正负15度以内超过这个范围目标外观和实际航拍不匹配。缩放可以谨慎用向下缩放相当于模拟更高飞行高度向上缩放模拟低空飞行但幅度要控制否则目标形态失真。光度扰动是另一个大头包括亮度、对比度、饱和度、色相。无人机在不同高度光照差异大这部分增强能显著提升泛化能力。亮度偏置beta建议取值10到20对比度alpha取1.1到1.3饱和度和色相小幅调整就行。混合增强里Mosaic和MixUp在YOLO生态里用得最广。Mosaic把四张图拼成一张模型在一个batch里能看到更多上下文对小目标尤其友好MixUp则是把两张图按比例叠加。对小目标场景Mosaic的效果更直接相当于自动生成了更多尺度的样本。我一般会把增强分成两路几何加光度做离线增强结果写入增强后的VOC、YOLO、COCO文件Mosaic和MixUp交给训练框架在数据加载阶段在线做。前者保留一份可复现的增强后数据集后者不改变数据集文件运行时再拼接。这样既方便排查问题也不把训练过程绑死在离线增强上。4.2 增强脚本实现同步更新bbox的OpenCV代码离线增强最难的不是改图是改标注框。图片翻转了、旋转了、亮度变了标注框必须跟着变。下面这份脚本实现水平翻转、亮度增强和旋转用OpenCV完成图像处理同步更新bbox坐标。import cv2, numpy as np, os def brightness_contrast(img, alpha1.2, beta10): # alpha控制对比度beta控制亮度 return cv2.convertScaleAbs(img, alphaalpha, betabeta) def flip_horizontal(img, boxes, img_w): img_f cv2.flip(img, 1) new_boxes [] for (xmin, ymin, xmax, ymax) in boxes: # 翻转后坐标映射到新位置 new_boxes.append([img_w - xmax, ymin, img_w - xmin, ymax]) return img_f, new_boxes def rotate_image_and_boxes(img, boxes, angle): h, w img.shape[:2] M cv2.getRotationMatrix2D((w // 2, h // 2), angle, 1.0) img_rot cv2.warpAffine(img, M, (w, h)) new_boxes [] for (xmin, ymin, xmax, ymax) in boxes: corners np.array([ [xmin, ymin, 1], [xmax, ymin, 1], [xmax, ymax, 1], [xmin, ymax, 1] ]).T pts M corners # 2x4矩阵变换四个角点 x_min min(pts[0]); x_max max(pts[0]) y_min min(pts[1]); y_max max(pts[1]) new_boxes.append([x_min, y_min, x_max, y_max]) return img_rot, new_boxes旋转处理的逻辑值得多说两句不能只旋转中心点坐标再算宽高那样框会歪。正确做法是把四个角点分别乘旋转矩阵再取最小和最大的x、y构成新外接矩形。这个外接矩形会比原框略大包含一点背景但对小目标来说影响有限。关键是旋转后要做一次坐标裁剪确保新框不超出图像边界。增强后保存标注时我建议复用3.3节的转换脚本把增强图像的标注也转成三种格式这样增强后的数据集仍然保持VOC、YOLO、COCO三份完整后续训练框架随便你换。4.3 增强参数建议从548张到2000张的配置表增强参数不是越大越好。对比度超过1.5画面就开始发灰亮度超过30暗部细节全丢。下面这张表是我在无人机小目标数据上反复试出来的稳定区间你可以按自己的素材微调。增强类型参数建议取值注意事项水平翻转概率0.5无人机视角安全垂直翻转概率0物理上不成立旋转角度范围±10°到±15°超过15°外观失真亮度beta10到20分两档做对比度alpha1.1到1.3太高画面发灰饱和度系数0.8到1.2防止颜色偏移缩放比例0.8到1.2模拟高度变化按这套参数跑下来548张能稳定扩到1500到2000张。配合在线Mosaicbatch size为16时每次迭代看到的有效上下文相当于四倍参数效果接近3000张级别。训练超过100个epoch时增强强度要适当调低否则模型在小目标上会过拟合增强引入的人工痕迹。5. 避坑记录标签转换、数据增强与训练时的五个高发问题这部分是反复踩出来的血泪经验。每一个现象都是真实出现过的每一条我都给出现象、原因和解决方式。看完能帮你省下至少一周的排查时间。5.1 现象一YOLO训练时loss为NaNtxt里出现负坐标YOLO训练几百步后loss变成NaN第一件事去查txt内容。常见原因不是模型问题而是转换脚本里除错了分母本该除以图片宽度img_w写成了除以(xmax - xmin)。当目标只有十几个像素时除出来放大几十倍甚至上百倍数值直接溢出yolo损失函数在计算边界回归时梯度爆炸成NaN。解决写一个校验脚本扫描所有txt检查每一行的5个浮点数是否都在0到1之间。异常行直接删掉标注重新转换不要手动改数字因为根源是转换脚本的问题改单个txt治标不治本。5.2 现象二COCO的category_id与VOC的name对不上用mmdetection或detectron2训练COCO格式数据时输出有5类但评估时报unknown category。原因是VOC的name列表和COCO的categories列表顺序不一致。比如XML里类别是person、car、truck而训练配置写的是car、person、truck转换时classes_list.index(name)取到的索引就错位了。解决把类别顺序固定在一个classes.json里所有转换脚本从它读训练配置文件也从它生成。类别顺序永远以这个文件为准不靠手记。5.3 现象三Mosaic增强后目标框飞出图像边界Mosaic把四张图拼成一张拼接处有些目标会落在画布边界一部分框超出图像范围。如果训练框架没有自动裁剪模型就会学到半截框推理时对边缘目标误检严重。解决在Mosaic实现里加一个判断如果目标的中心点落在画布外或目标面积丢失超过30%直接丢弃该目标而不是把框裁回边界。裁回边界会造成框变形干扰训练。5.4 现象四旋转增强后XML的size节点没更新旋转后图片的宽高可能变化但增强脚本只改了图像像素没有同步更新XML里的size节点。后续转YOLO格式时x_center除以的是旧宽高坐标全部偏移模型训练出来框全是偏的。解决增强脚本保存标注文件前先用cv2.shape读回实际宽高再写进XML。不要凭原图的尺寸推算旋转加缩放都会改变尺寸。5.5 现象五增广后bbox重叠严重MixUp语义混乱无人机视角下车辆密集增强后一张图可能堆了几十个框。MixUp的alpha设得太大时两个目标的像素叠加在一起语义边界模糊模型学到的特征互相打架最后mAP50-95不升反降。解决MixUp的alpha控制在0.5以下如果还不行就降到0.3。离线增强时对密度高的图做筛选单张图超过20个框的不做MixUp只保留原图和几何增强副本。6. 训练与验证用YOLOv8闭环评估小目标检测效果数据都准备好后怎么证明增强真的有效我的做法是固定同一套验证集对比增强前后的训练结果。先跑baselineepochs设100记录mAP50和mAP50-95再用增强后的数据集跑同样配置。如果mAP50-95提升超过5个点说明增强策略有效否则回头调整参数组合。训练命令用YOLOv8的标准入口# drone.yaml中配置train和val路径、nc类别数、names类别名 yolo detect train datadrone.yaml modelyolov8s.pt epochs100 imgsz640 batch16飞无人机小目标数据集时imgsz用640起步如果显存够用就试1280。我实际对比过640输入和1280输入在mAP50-95上能差7个点小目标在大分辨率下特征更清晰但推理耗时也接近翻倍部署时要按实际算力选址。评估指标上不要只看总mAP要看YOLOv8输出里small这一档的AP。如果small AP明显低于medium说明模型还没记住小目标的特征回数据增强里加大缩放范围让目标尺寸更多样。最后一个小技巧是拿验证集预测结果做可视化抽查。把预测框叠加到原图上快速浏览缩略图专注三类错误漏检、误检、定位偏移超过目标本身一半的框。这三类错误能直接告诉你下一步该调数据还是调模型。我自己每次跑完都会把预测图存进一个目录里和之前的预测结果放一起对比。这个习惯帮我回看过好多次——有时候不是模型不行是数据里混进了一张错标图。可视化能让你在半小时内发现那张图比盯着训练曲线猜半天高效得多。希望这套流程能帮你少走弯路。本文还有配套的精品资源点击获取

相关新闻

DataX db2writer 插件:DB2 批量写入与数据迁移实战

DataX db2writer 插件:DB2 批量写入与数据迁移实战

简介:本资源为DataX数据迁移插件DB2Writer的完整实现包,面向需要将数据高效写入IBM DB2数据库的开发者与数据工程师,尤其适合金融、电信等企业级数据同步场景。DB2Writer支持全量迁移、基于时间戳或自增ID的增量迁移、多线程并行写入以及错误…

2026/10/11 11:31:07 阅读更多 →
Linux下NVMe SSD故障诊断与数据抢救实战指南

Linux下NVMe SSD故障诊断与数据抢救实战指南

1. 项目概述:这不是一次简单的硬盘更换,而是一场对存储底层逻辑的重新校准Homelab NVMe 修复记录——这七个字背后,藏着一个非常典型的个人实验室运维现场:没有厂商SLA保障、没有专职运维团队、没有冗余热备盘,但偏偏又…

2026/10/11 11:31:07 阅读更多 →
LLM Internals 交叉熵损失函数详解:GPT 训练背后的核心数学,为什么取负对数?

LLM Internals 交叉熵损失函数详解:GPT 训练背后的核心数学,为什么取负对数?

【免费下载链接】llm-internals Learn LLM internals step by step - from tokenization to attention to inference optimization. 项目地址: https://gitcode.com/gh_mirrors/ll/llm-internals 点击查看 免费下载 交叉熵损失函数(Cross-Entropy Loss&…

2026/10/11 11:31:06 阅读更多 →

最新新闻

RAID 0/1/5/6/10全解析:选型、建阵列与故障恢复实战指南

RAID 0/1/5/6/10全解析:选型、建阵列与故障恢复实战指南

如果你跟我一样整天和存储设备打交道,那“RAID 0/1/5/6/10”这几个数字绝对不陌生。很多人刚接触服务器时,第一课就是背RAID级别的概念:0要性能,1要安全,5折中,10又安全又性能。可真到了选型、建阵列、坏盘…

2026/10/11 16:46:53 阅读更多 →
《道德经》第七十七章:损有余而补不足的平衡智慧

《道德经》第七十七章:损有余而补不足的平衡智慧

每次读《道德经》第七十七章,我都会想起某位老前辈说过的一句话:“这个世界上最厉害的人,不是那些什么都抓在手里的人,而是懂得松开手的人。”他说这话的时候,正是他事业最如日中天的阶段,当时我没听懂&…

2026/10/11 16:46:52 阅读更多 →
AI古风女主发型干货:仙气、宫廷、侠女、闺秀、异域、仙尊全拆解

AI古风女主发型干货:仙气、宫廷、侠女、闺秀、异域、仙尊全拆解

AI古风女主翻车,十有八九先烂在头发上。脸再精致,发型一贴头皮,立马像道姑;发冠一多,像义乌小商品批发;发丝一糊,塑料假发感直接拉满。古风发型不是堆簪子,是轮廓、层次、发际线、碎…

2026/10/11 16:46:52 阅读更多 →
自流平专用HPMC源头厂家定制常见问题 采购注意事项汇总

自流平专用HPMC源头厂家定制常见问题 采购注意事项汇总

自流平专用HPMC源头厂家定制常见问题 采购注意事项汇总 选自流平专用HPMC的4大高频踩坑难题很多做自流平砂浆、干粉建材的朋友在采购羟丙基甲基纤维素(HPMC)时,都会碰到这些头疼的问题: 买的材料要么保水够但流动度差,要么流动性好却泌水开裂…

2026/10/11 16:46:52 阅读更多 →
2026昆明景区古建牌坊检测排名 TOP5 CMA 资质机构提供牌坊裂缝检测、牌坊倾斜检测、老化检测 联系方式推荐

2026昆明景区古建牌坊检测排名 TOP5 CMA 资质机构提供牌坊裂缝检测、牌坊倾斜检测、老化检测 联系方式推荐

昆明古城韵味悠长,景区古建牌坊星罗棋布,然而当地检测机构鳞次栉比、鱼龙混杂。景区石牌坊、乡村古牌坊、文物古建牌楼开展结构安全鉴定、修缮验收、文保备案时,大量无资质机构出具报告无法通过住建、文物部门核验。小编实地走访筛选本地正规…

2026/10/11 16:46:52 阅读更多 →
McAfee企业版8.8升级指南:ePO分层升级与老终端续命技巧

McAfee企业版8.8升级指南:ePO分层升级与老终端续命技巧

简介:McAfee 企业版8.8可升级版本是一套面向企业IT管理员与安全运维人员的终端防病毒解决方案,用于构建覆盖病毒扫描、恶意软件防御、网络威胁防护与数据丢失防护的统一安全体系。资源包共34个文件,以msi安装包、exe可执行程序、zip组件压缩包…

2026/10/11 16:45:52 阅读更多 →

日新闻

流感时间序列预测实战: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 阅读更多 →