尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
YOLOv8-pose多人姿态估计与关键点检测工程实战
简介面向人体姿态关键点检测学习与实践的完整项目包围绕YOLOV8-pose模型展开适合计算机视觉初学者、课程设计与毕业设计开发者以及需要快速复现姿态估计实验的研究者。包内提供可直接跑通的训练、推理与验证源码配套人体关键点标注数据集、预训练权重和依赖配置省去从零搭建网络、整理标注文件与调试运行环境的重复劳动。压缩包共1369个文件约89.04MB以jpg图像、md说明文档、txt标注与配置、py脚本为主体辅以yaml训练参数、pt权重、json记录及ipynb、png可视化结果覆盖数据准备、模型训练、日志记录与使用文档等环节。已有6223人学习反映出姿态识别与关键点检测方向具有较高关注度。读者可据此完成关键点检测模型的训练、评估与推理理解数据增强、损失函数设计和预训练迁移等流程README与脚本也有助于快速复现结果、排查环境配置和运行问题。1. 姿态关键点检测落地为什么我选 YOLOV8-pose 而不是先啃 HRNet上个月帮朋友做一个健身动作纠偏的小工具需求很朴素摄像头对着人能把肩、肘、腕、髋、膝、踝这些关键点标出来判断深蹲有没有塌腰、手肘有没有外翻。第一反应是去找姿态识别里口碑好的 HRNet 系列结果光是把预测热图转回原图坐标、再对齐翻转和缩放这一套后处理就调了大半天玄学得很。后来换成 YOLOV8-pose一个模型文件丢进去predict出来直接是归一化的关键点坐标十七个点带置信度画骨架、算角度、判姿态全都能接上。这份源码包做的就是这件事——一套带数据集、能直接跑通的姿态关键点检测工程适合想快速把姿态识别接进自己业务、又不想在模型复现上耗掉一周的开发者。下面按“它能干什么、目录长什么样、怎么跑、怎么改”讲透。2. 项目定位与技术选型单阶段多人姿态估计的取舍2.1 它到底解决什么问题这个项目的核心任务是多人 2D 姿态估计Multi-Person Pose Estimation给一张图或一帧视频输出画面里每个人的 17 个 COCO 标准关键点鼻、左右眼、左右耳、左右肩、左右肘、左右腕、左右髋、左右膝、左右踝每个点带 x、y 坐标和置信度。注意“多人”两个字很关键——早期很多姿态方案是“先检测人框、再对每个人单独跑一遍关键点”两阶段串行人一多帧率就崩。YOLOV8-pose 走的是单阶段路线一次前向同时回归人框和该框内的关键点N 个人就是 N 组输出不额外多跑一遍网络。从工程角度看这个取舍非常划算。姿态估计在业务里很少是终点通常是上游特征提取健身纠偏要算关节角行为识别要喂骨架序列动画驱动要做重定向。这些下游任务真正在意的是“关键点稳不稳、延迟够不够低”而不是“学术榜单上 PCKh 高 0.3 个点”。单阶段模型在 640×640 输入下中端显卡能跑到实时甚至超实时CPU 上降分辨率也能凑合用这是它落地的最大底气。2.2 为什么是 YOLOV8-pose 这套技术栈把技术栈拆开看其实是三层层次组成作用骨干与颈部CSPDarknet 系列 backbone PAN-FPN多尺度特征提取与融合检测头解耦头分类/框回归/关键点回归分支输出人框与 17 点热图式回归训练与推理框架Ultralytics 封装PyTorch 后端数据加载、增强、损失、导出、预测一条龙关键点在检测头里是这么处理的对每个人框模型回归 17 组(x, y, visibility)其中 x、y 是相对于该人框的归一化偏移visibility 是该点是否可见的置信度。这种“框内相对坐标”的设计让模型不必在全图尺度上直接回归绝对坐标收敛更稳也让同一个模型天然支持多人——每个 anchor/query 只负责自己那个人。提示visibility不是“这个点在画面里被遮挡的概率”这么简单它同时承担了“该点是否在图像边界内”的语义。做下游角度计算时通常要把 visibility 低于阈值比如 0.5的点直接丢掉否则会出现用低置信点算出来的诡异角度。选型上还有两个现实考量。一是生态Ultralytics 这套接口的训练、验证、导出ONNX、TensorRT、OpenVINO几乎是模板化的换个部署环境不用重写推理逻辑。二是数据集门槛低YOLO 格式的 pose 标注就是一个 txt 文件每行一个人类别 cx cy w h kx1 ky1 kv1 ... kx17 ky17 kv17全部归一化。自己标几十张图就能微调比 COCO-WholeBody 那种 133 点的重型标注友好太多。2.3 源码包的目录骨架拿到这种工程我一般先tree一遍看结构。这个包的组织方式基本是“训练脚本 配置 数据集 推理示例”四块典型布局如下yolov8-pose-project/ ├── ultralytics/ # 框架源码含 cfg 与 nn 模块 │ ├── cfg/models/v8/ # yolov8-pose.yaml 等模型结构定义 │ └── nn/ # 骨干、颈部、检测头、损失实现 ├── datasets/ │ └── pose-demo/ │ ├── images/{train,val}/ │ ├── labels/{train,val}/ │ └── data.yaml # 数据配置路径、关键点形状、类别名 ├── weights/ │ └── yolov8n-pose.pt # 预训练权重用来做迁移学习起点 ├── train.py # 训练入口 ├── val.py # 验证入口 ├── predict.py # 图片/视频推理演示 └── requirements.txt这个结构里最容易被忽视的是data.yaml它决定了模型头部的输出维度。文件大致长这样# datasets/pose-demo/data.yaml path: ./datasets/pose-demo train: images/train val: images/val kpt_shape: [17, 3] # 17 个关键点每个点 3 个值 (x, y, visibility) flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15] # 水平翻转时左右点的索引交换 names: 0: personflip_idx是很多人第一次改数据集时会栽的地方——它用于数据增强里的水平翻转。如果你自己定义了 5 个关键点却忘了同步改这个数组训练时翻转增强会把“左肩”的标签贴到“右肩”位置上模型学出来的骨架会左右乱窜loss 看着在降实际预测全是错的。这个坑后面还会细说。3. 跑通流程从环境到第一张骨架图3.1 环境准备与依赖安装这套工程对环境的要求不算苛刻Python 3.8 以上、PyTorch 1.8 以上就能起步。GPU 训练建议 CUDA 11.x 配对应的 torch 版本CPU 也能跑但训练会慢到让人怀疑人生。我一般的做法是单独开一个 conda 环境避免和机器上其他项目的 torch 版本打架# 创建并激活环境 conda create -n pose python3.10 -y conda activate pose # 先装 torch按自己的 CUDA 版本选对应命令这里以 CUDA 11.8 为例 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 再装工程依赖 pip install -r requirements.txt # requirements 里通常包含 ultralytics、opencv-python、numpy、pyyaml、tqdm安装完先做一次体检确认 torch 能吃上 GPUpython -c import torch; print(torch.__version__, torch.cuda.is_available())输出里True才算 GPU 就绪。如果显示False多半是装成了 CPU 版 torch或者驱动版本和 CUDA runtime 不匹配这时候别急着往下跑训练先在nvidia-smi里核对驱动支持的 CUDA 上限。这个检查看着多余但我见过太多次训练跑了两小时才发现一直在 CPU 上爬的情况。3.2 数据集组织与标注格式核对数据集这块工程里自带了一份演示数据目录结构在data.yaml里已经声明好了。跑通前必须核对两件事图片和标签同文件名、同相对路径标签是 YOLO pose 格式的 txt。标注文件里每一行的格式是这样的# labels/train/0001.txt # class cx cy w h x1 y1 v1 x2 y2 v2 ... x17 y17 v17 0 0.512 0.603 0.284 0.791 0.501 0.312 2 0.487 0.305 2 ... 0.402 0.881 1所有数值都是归一化到 [0,1] 的相对于图片宽高关键点坐标是相对于整张图而不是人框——这点和推理阶段的输出不同推理输出是相对框的后处理时框架会自动转回去但如果自己写标注转换脚本这是最容易搞混的一处。v的取值一般是 0/1/20 表示未标注1 表示标注但被遮挡2 表示可见且标注。如果你的标注工具只输出 0/1也问题不大但flip_idx和kpt_shape必须和实际点数严格一致。正确性校验有个很实用的小脚本把标签还原成骨架画到图上肉眼过一遍import cv2 import numpy as np IMG datasets/pose-demo/images/train/0001.jpg LBL datasets/pose-demo/labels/train/0001.txt # COCO 17 点的骨架连接对用来连线可视化 SKELETON [(5,7),(7,9),(6,8),(8,10),(5,6),(5,11),(6,12),(11,12), (11,13),(13,15),(12,14),(14,16),(0,1),(0,2),(1,3),(2,4)] img cv2.imread(IMG) h, w img.shape[:2] for line in open(LBL): parts np.array(line.split(), dtypefloat) kpts parts[5:].reshape(-1, 3) # 从第 6 个值起是 17*3 的关键点 pts (kpts[:, :2] * [w, h]).astype(int) # 反归一化回像素坐标 for a, b in SKELETON: if kpts[a, 2] 0 and kpts[b, 2] 0: # 两端都有效才连线 cv2.line(img, tuple(pts[a]), tuple(pts[b]), (0, 255, 0), 2) for (x, y), v in zip(pts, kpts[:, 2]): if v 0: cv2.circle(img, (x, y), 3, (0, 0, 255), -1) cv2.imwrite(check.jpg, img)这段代码做了三件事按行解析每个目标的标注、把关键点反归一化、按骨架连接对画线画点。参数上SKELETON是 COCO 标准连接关系kpts[a, 2] 0这个判断是为了跳过未标注的点否则会在图上的 (0,0) 附近画出一堆乱线。跑完打开check.jpg如果骨架是贴在人体上的说明标注没问题如果整个人是歪的或者骨架飘在别处那基本是归一化基准错了比如按人框而不是整图归一化。3.3 训练命令与关键参数环境、数据都确认后训练就是一条命令的事python train.py \ --model weights/yolov8n-pose.pt \ --data datasets/pose-demo/data.yaml \ --epochs 100 \ --imgsz 640 \ --batch 16 \ --device 0 \ --workers 4 \ --project runs/pose --name demo几个参数我按重要性排一下--model预训练权重起点。即使你的关键点数和 COCO 不同比如只标 5 个点也可以加载框架会自动裁掉/重建头部但骨干权重仍然有用收敛比从零训快得多。--imgsz输入分辨率。640 是性能和精度的平衡点远距离小目标多就上 960但显存和延迟一起涨。--batch按显存调OOM 就先减半别硬撑。--workersDataLoader 进程数Windows 上建议设小一点甚至设 0否则容易卡死在多进程上。--project/--name输出目录权重存runs/pose/demo/weights/best.pt训练曲线、混淆矩阵、验证集预测图都在同目录下。训练脚本里真正干活的部分一般是对框架 API 的封装早期版本写法大致是这样from ultralytics import YOLO # 加载带 pose 头的预训练权重 model YOLO(weights/yolov8n-pose.pt) # 开始训练内部会读取 data.yaml 里的 kpt_shape 构建头部 results model.train( datadatasets/pose-demo/data.yaml, epochs100, imgsz640, batch16, device0, workers4, projectruns/pose, namedemo, # 姿态任务常用的增强开关 fliplr0.5, # 水平翻转依赖 data.yaml 的 flip_idx degrees10.0, # 小幅旋转应对拍摄角度 scale0.5, # 随机缩放提升尺度鲁棒性 mosaic1.0, # 马赛克增强前期提升明显 )这里要点一下fliplr和flip_idx的联动关系fliplr0.5意味着每张图有一半概率被水平翻转翻转时标签坐标要镜像x - 1-x同时左右关键点的语义要对调左肩变右肩。框架靠data.yaml里的flip_idx完成后者。所以flip_idx不是可选装饰它是增强正确性的前提。同理mosaic1.0把四张图拼成一张对小目标友好但训练末段通常要关掉框架默认最后 10 个 epoch 自动关闭否则真实场景的构图分布和训练分布偏差会拉低最终指标。3.4 推理与骨架可视化训练完最爽的一步是看效果。工程里的predict.py一般会做图片、视频、摄像头三种输入的分支核心调用只有几行from ultralytics import YOLO model YOLO(runs/pose/demo/weights/best.pt) # 对单张图片推理saveTrue 会把带骨架的结果图写到 runs/pose/predict 下 results model.predict(test.jpg, imgsz640, conf0.4, saveTrue) for r in results: if r.keypoints is None: continue # keypoints.xy: (人数, 17, 2) 像素坐标; keypoints.conf: (人数, 17) 置信度 xy r.keypoints.xy.cpu().numpy() conf r.keypoints.conf.cpu().numpy() for person_xy, person_conf in zip(xy, conf): # 只保留置信度够高的点避免下游算角度时用到垃圾数据 valid person_conf 0.5 print(有效关键点数:, valid.sum())conf0.4是人框的置信度阈值不是关键点的关键点置信度要单独在keypoints.conf里过滤。这两个阈值混用是新手高频翻车点把人框阈值调得很高结果远处的人整个被丢掉或者只看人框置信度就直接拿所有关键点去算角度被遮挡点的坐标其实是一团噪声。推理速度上yolov8n-pose在 640 输入、单张中端卡上通常是毫秒级到十几毫秒换yolov8s/m精度涨一点、延迟也涨。做实时视频建议先用 n 版跑通链路再按精度需求往上换型号别一上来就上大模型然后抱怨卡。4. 核心模块拆解一个关键点是怎么被回归出来的4.1 检测头里的关键点分支框架的检测头在ultralytics/nn/modules/head.py里pose 版本的头继承自检测头多出一条关键点回归分支。结构上的关键点是关键点不是独立预测的而是绑定在每个人框上的。简化后的前向逻辑大致是# 伪代码保留关键结构省略了大量广播与形状处理 class PoseHead(nn.Module): def __init__(self, nc, kpt_shape, ch()): super().__init__() self.nc nc # 类别数姿态任务通常就是 1人 self.nk kpt_shape[0] # 关键点数量COCO 是 17 self.no nc 4 self.nk * 3 # 每框输出: 类别 框4 关键点(17*3) # 三条并行分支分类、框回归、关键点回归 self.cv2 nn.ModuleList(...) # 分类 框 self.cv3 nn.ModuleList(...) # 关键点 self.cv4 nn.ModuleList(...) # 关键点可见性/精修 def forward(self, x): for i in range(self.nl): # 遍历 P3/P4/P5 三个尺度 cls_box self.cv2[i](x[i]) # (B, 4nc, H, W) kpt self.cv3[i](x[i]) # (B, nk*3, H, W) # 关键点坐标用 sigmoid 约束到 [0,1]表示相对网格/框的偏移 kpt[..., 0::3] kpt[..., 0::3].sigmoid() kpt[..., 1::3] kpt[..., 1::3].sigmoid() # 第三维visibility不套 sigmoid直接作为 logit 参与 BCE 损失这段里最值得记住的是self.no nc 4 self.nk * 3它决定了每个预测位置输出多少维。你改关键点数量时kpt_shape一变这个维度自动跟着变所以永远改data.yaml和模型 yaml 里的kpt_shape不要去手改no。另外x、y走 sigmoid 是有意的——把坐标压进 [0,1]语义上是“相对该人框左上角的归一化偏移”这让不同大小的目标共享同一套回归目标尺度训练稳定得多。后处理阶段框架会把这些相对偏移乘上对应人框的宽高、再加上框左上角坐标还原成原图像素坐标。这条链路藏在ops.py的kpt_decode一类函数里平时不用碰但排查“预测点整体偏移”类问题时就得顺着这条链一路看下来。4.2 姿态损失函数的三部分构成训练姿态模型loss 由三块加起来框回归损失、分类损失、关键点损失。前两块和普通检测一致CIoU BCE姿态特有的第三块是重点。关键点损失一般是OKS-based 的加权 BCE或者直接的坐标回归损失实现里大致是# 简化示意关键点损失的核心思想 # 1) 对每个 GT 关键点找到负责它的预测点 # 2) 坐标用 L1/L2 回归visibility 用 BCE # 3) 按 OKS 的 sigmoid 权重对不同关键点加权 loss_kpt 0.0 for gt_kpt, pred_kpt, vis in zip(gt_kpts, pred_kpts, gt_vis): if vis 0: # 未标注的点不参与坐标损失 continue loss_kpt (pred_kpt - gt_kpt).abs().mean() loss_kpt loss_kpt / max(vis.sum(), 1) # 按有效点数归一化 loss_vis BCEWithLogits(pred_vis, (gt_vis 0).float())两个细节决定成败。第一vis 0的点必须 mask 掉不然模型会被迫去拟合“未标注”的位置等价于教它胡说。第二归一化要按有效点数而不是总点数否则一个大部分人只有半身可见的 batchloss 尺度会忽大忽小学习率都不好调。OKS 那套权重的作用是让眼睛、手腕这类小且难的点在总 loss 里占比合理避免被肩髋这些大关节淹没。4.3 数据增强对姿态任务的特殊处理检测任务的增强搬到姿态上核心矛盾是任何几何变换都必须同步作用到关键点上且左右翻转要处理语义交换。马赛克增强在姿态里尤其危险——四张图拼接后原来的人可能被裁掉一半关键点坐标随之越界框架内部会做裁剪和过滤但如果你自己改增强流程一定要保证越界点被正确标记为不可见而不是硬留在 [0,1] 之外。常见的正确做法是先算好图片的仿射矩阵同时对图像做 warpAffine、对关键点做同一矩阵的坐标变换再根据变换后坐标是否落在图内更新 visibility。翻转时按flip_idx交换点序并x - 1 - x。这两步看似机械但只要漏一步训练集会悄悄变脏loss 曲线照样好看mAP 就是上不去——这类“黑匣子”式的指标异常十有八九要回到增强代码里找。4.4 验证指标怎么看姿态任务的验证不能只看 mAP。工程val.py跑完会输出几类指标框的 mAP50-95、以及基于 OKS 的关键点 AP。OKSObject Keypoint Similarity是姿态版的 IoU按每个关键点的标注方差加权算相似度再取平均。实际看的时候我会重点关注三件事一是AP 随 OKS 阈值的变化如果 AP50 很高但 AP75 掉得厉害说明点位普遍差几个像素多半是输入分辨率不够或者小目标太多。二是分关键点看误差手腕、脚踝通常是最差的如果差得离谱检查这几类点在训练集里的可见比例。三是看验证集的预测可视化图框架会自动存一批肉眼看骨架有没有系统性偏移比如整体偏右下有的话基本是坐标解码环节或标注归一化基准出了问题。5. 常见问题排查我踩过的五个坑5.1 训练 loss 正常但预测骨架全乱现象训练 loss 平稳下降验证指标看着也还行但拿best.pt预测骨架连到了错误的人身上或者所有点挤在一小块区域。原因data.yaml里kpt_shape和模型 yaml 里的kpt_shape不一致或者flip_idx长度与点数不匹配。框架在某些版本下不会直接报错而是按较小维度截断导致关键点顺序错位。解决训练前打印一次模型头的实际输出维度和kpt_shape[0] * 3对一遍flip_idx用脚本自动生成COCO 17 点就用标准数组自定义点数时手写并校验长度。5.2 水平翻转增强后左右肢体识别反了现象不翻转的图预测正常一遇到镜像自拍或前置摄像头画面左右手腕、左右脚踝全部对调。原因fliplr开了但flip_idx是默认的 COCO 顺序而你的数据集点数不同或者干脆没配。翻转时坐标镜像了语义没对调。解决把flip_idx改成和数据点定义严格对应的交换数组如果暂时不想处理直接把fliplr设 0先保证正确性再谈增强收益。5.3 显存 OOM 或训练中途进程被杀现象训练跑几十个 iteration 后报 CUDA out of memory或者 Linux 下进程被 OOM killer 干掉。原因batch与imgsz组合超出显存或者workers开太大每个 worker 都缓存了一份数据内存被吃光。解决先把batch减半、imgsz降到 512 试一轮确认能稳定跑再往上加workers在内存紧张的机器上设 2 到 4Windows 上设 0。真需要在有限显存上跑大分辨率用梯度累积模拟大 batch。5.4 关键点置信度普遍偏低、下游角度算不准现象人明明站得端正预测出来的手腕、脚踝置信度只有 0.3 左右按 0.5 过滤后点数不够算关节角直接崩。原因训练集里这类点标注稀疏或被大量遮挡模型学不到高置信输出也可能是验证/推理时的imgsz与训练不一致尺度变化让本来就不稳的小关键点更飘。解决补标一批包含完整四肢的样本训练时适当降低degrees和scale的强度让模型先学好基本点位推理侧把关键点阈值和“可见性”分开处理用 visibility 做软加权而不是硬阈值角度计算时对低置信点做邻近帧平滑。5.5 导出 ONNX 后推理结果和 PyTorch 对不上现象PyTorch 下骨架正常导出 ONNX 用 onnxruntime 跑关键点整体偏移或数量不对。原因导出时没指定opset或者输入尺寸动态化导致后处理里的坐标还原逻辑假设失效也有版本是导出时把 NMS 一起打包后处理重复做了一次。解决导出时固定imgsz、显式指定opset12以上导出后先用同一张图对比两边输出的最大绝对误差正常应在 1e-3 量级NMS 是否内置要确认清楚避免二次过滤。真对不上就退回导出去掉 NMS 的版本自己在外部做后处理链路反而清晰。6. 二次开发把关键点接进自己的业务逻辑跑通只是起点真正花时间的是把 17 个点变成业务结论。我一般会在工程里加一个独立的后处理模块和模型推理解耦这样换模型、调阈值都不用动业务代码。最常用的是关节角计算比如判断手肘弯曲程度import numpy as np def angle_between(a, b, c): 计算 b 为顶点时a-b-c 的夹角角度制 ba np.array(a) - np.array(b) bc np.array(c) - np.array(b) # 加 eps 防止零向量导致除零 cos np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc) 1e-8) return np.degrees(np.arccos(np.clip(cos, -1.0, 1.0))) # COCO 索引: 5左肩 7左肘 9左腕 L_SHOULDER, L_ELBOW, L_WRIST 5, 7, 9 elbow_angle angle_between(kpts[L_SHOULDER], kpts[L_ELBOW], kpts[L_WRIST])参数上要守住两条一是传入前先确认这三个点的置信度都过阈值否则算出来的角度毫无意义二是np.clip不能省浮点误差会让arccos的输入冒出 1.0000001 直接变 NaN。这就是典型的“算法没问题、工程细节翻车”。改造思路上有三条路值得展开。第一条是换数据集适配自己的场景比如只关心上半身可以把kpt_shape改成[5, 3]甚至更少同步改flip_idx模型更轻、小样本下更稳。注意改点数等于换任务预训练头要重建但骨干权重照样能加载这一点前面提过。第二条是做时序平滑单帧姿态抖动是常态视频场景里对每个关键点维护一个滑动窗口做中值滤波或 One-Euro 滤波能显著降低骨架“抽搐”代价是引入几帧延迟实时纠偏类应用要权衡。第三条是模型蒸馏或换小模型先用yolov8m-pose训一个高精度版本再用它的输出当软标签训yolov8n-pose部署是端侧性能不够时最省事的路线。验证改造是否有效我的习惯是固定一套“回归样本”挑 30 到 50 张覆盖不同姿态、遮挡、光照的图每次改完代码都跑一遍比对关键点坐标的平均像素误差和下游业务指标比如动作判定准确率。这套样本不进训练集专门当后悔药用。从那以后我每次动kpt_shape、flip_idx或者增强参数都强制先跑一遍这套回归样本再提交省下来的返工时间远多于维护它的成本。希望这些能帮你在接姿态识别时少绕几个弯。本文还有配套的精品资源点击获取
RELATED

相关推荐

基于DQN的导弹目标选择:从MDP建模到PyTorch实现与调参避坑

基于DQN的导弹目标选择:从MDP建模到PyTorch实现与调参避坑

简介:本资源面向计算机、自动化等专业的学生与开发者,提供基于Python与DQN强化学习实现海防场景导弹目标选择任务的完整项目方案,适用于毕业设计、课程设计及项目开发参考。任务中敌方舰艇以固定阵型排列,我方18枚导弹需依次选择攻…

📅 2026/10/25 21:12:29
加了 CSP 还是没拦住:四条被读错的指令语义

加了 CSP 还是没拦住:四条被读错的指令语义

授权与合规声明 本文全部操作对象均为自建隔离靶场(本机容器或隔离虚拟机),涉及安全测试的环节必须以取得合法授权为前提。未经授权的渗透测试违反《中华人民共和国网络安全法》与《刑法》相关条款,须承担相应法律责任。本文只讲环…

📅 2026/10/25 21:12:29
文件上还有一层你看不见的属性:三个平台各叫什么

文件上还有一层你看不见的属性:三个平台各叫什么

授权与合规声明 本文全部操作对象均为自建隔离靶场(本机容器或隔离虚拟机),涉及安全测试的环节必须以取得合法授权为前提。未经授权的渗透测试违反《中华人民共和国网络安全法》与《刑法》相关条款,须承担相应法律责任。本文只讲环…

📅 2026/10/25 21:12:29
MORE NEWS

更多资讯

📰

151、RDMA开源项目:UCX(统一通信X)框架

从一次诡异的“连接超时”说起 上周五晚上十点,客户现场报过来一个case:两节点之间用UCX做RDMA通信,小包(64字节)跑得飞起,一换到4K以上大包就间歇性超时,而且只在跨交换机场景下复现。我第一反…

📰

基于VGG16的图像检索系统:从特征提取到Faiss提速的完整实践

简介:一套基于VGG16模型构建的图像检索系统项目,以“以图搜图”为核心场景,面向想入门深度学习与信息检索结合的开发者和AI学习者。VGG16包含13个卷积层与3个全连接层,能提取丰富的图像语义特征;项目完整演示了利用预训…

📰

纯NumPy从零实现CNN:手写数字识别与反向传播全解

简介:纯NumPy手写卷积神经网络完成MNIST手写数字识别,是理解CNN底层原理的轻量级实战代码。它面向想彻底搞懂卷积层、池化层、全连接层及反向传播推导的同学,也适合人工智能方向的初学者与研究者。项目不依赖任何深度学习框架,代码…

📰

三维实时解算与数字孪生技术实践

1. 镜像视界技术体系概述视频孪生技术正在经历从二维平面到三维立体的革命性跃迁。我们团队研发的"镜像视界"三维实时解算体系,通过独创的空间计算架构,实现了物理世界与数字空间的毫秒级同步。这套系统最核心的创新点在于突破了传统数字孪生系…

📰

时间序列分类算法选型与能耗数据实战:DTW、LSTM与特征工程

时间序列分类这个方向,我最早接触是在做楼宇能耗分析的时候。当时手头攒了三年的电表读数,15分钟一个采样点,密密麻麻的曲线堆在数据库里,领导就问一句话:这些曲线里,哪些是正常办公,哪些是空调…

📰

Linux实时调度延迟实战:从cyclictest测量到CPU隔离调优

1. 什么是“调度延迟初体验”:一个嵌入式与实时系统工程师的真实入门现场“调度延迟初体验”这六个字,乍看像极了某本Linux内核书的课后习题,或者新同事在晨会上支吾着汇报的模糊感受。但在我带过的二十多个嵌入式项目里,它从来不…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬