DeepVision Pro v0.66 BETA · Windows 桌面端

看穿屏幕的 实时目标识别引擎

使用 AGI,改善您的游戏体验

PyTorch 机器学习 + CUDA FP16 推理, 显存直接拷贝截屏,配合自研滤波算法栈, 把识别结果以透明 HUD 叠加在屏幕上 —— 不注入输入,不干扰操作。

How it works

神经网络是怎么「看」懂这一帧画面的

一次识别 = 一次前向传播。下面三个动画分别演示:整体流程、卷积运算、残差连接。

YOLO 前向传播 yolov8s.pt · FP16 · imgsz 640
输入张量
  1. 01

    输入张量 Input Tensor

    letterbox 等比缩放并补边到 640×640,BGR → RGB、/255 归一化,再转 FP16 半精度写入显存。

  2. 02

    Backbone 主干 CSP · C2f

    卷积与 C2f 残差块逐级下采样,把像素抽象成特征图,输出 P3 / P4 / P5 三个尺度。

  3. 03

    Neck 颈部 PAN-FPN

    自顶向下传语义、自底向上传位置,双向融合三个尺度,小目标与大目标都不丢。

  4. 04

    Detect Head 解耦检测头

    每个尺度各自预测类别概率与边界框回归量,不再共用一支分支,分类与定位互不干扰。

  5. 05

    输出 Threshold · NMS

    按置信度阈值筛掉弱框,再用非极大值抑制去除重复框,得到最终的 类别 / 置信度 / 边界框。

卷积核是如何「扫」出特征图的 3×3 kernel · stride 1 · valid · ReLU
滑动窗口
残差连接:为什么网络能叠得很深 Residual Block · skip connection
输入 x
Pipeline

从屏幕像素到屏幕上的框,一条完整的四段管线

每一帧画面都会依次经过捕获、推理、滤波与渲染四个阶段。 推理与界面完全解耦:面板拖到哪都不会影响识别节奏。

Stage 01 — Capture

屏幕捕获

基于桌面复制接口直接取显示输出,比传统位图拷贝更省 CPU,且不受窗口遮挡影响。

DXGI · D3DGDI BitBlt自动选择多显示器
Stage 02 — Inference

YOLO 深度学习推理

letterbox 缩放与归一化后,Ultralytics YOLO 全系列检测网络在 PyTorch + CUDA 上以 FP16 半精度执行,输出类别、置信度与边界框。

YOLOv8YOLO11YOLOv10PyTorchCUDA · FP16
示例读数:检测 7.2 ms / 帧(yolov8s · imgsz 640)
Stage 03 — Filtering

自研滤波与运动预测

检测框指数平滑、时域滞留去闪动,并按历史轨迹外推下一时刻位置。全部为纯后处理数值计算,不参与推理,因此不增加推理耗时。

EMA SmoothHysteresisCVLeast SquaresKalman
Stage 04 — Overlay

叠加层渲染

结果写入透明分层窗口并合成绘制,窗口鼠标穿透,识别内容可一键隐藏而水印常留。

Layered Windowmouse passthroughGDI+ / Direct2D
示例读数:合成绘制 1.86 ms / 帧
捕获 0.6 预处理 1.2 YOLO 推理 7.2 ms 滤波 0.3 渲染 1.9
推理 7.2 ms 渲染 1.86 ms 滤波后处理 0.3 ms 合计 ≈ 11 ms · 示例读数,实际随显卡与模型规模变化
Self-developed Filtering

自研滤波与运动预测算法栈

检测网络给的是「这一帧的框」,噪声与抖动会让它跳。DeepVision 在推理之后 接了一整套自研数值滤波层 —— 纯后处理、不加载额外模型、不做额外推理, 关闭时整条计算路径直接跳过,零附加开销。

01 / SMOOTHING

检测框指数平滑

BoxSmoother · EMA

对边界框四条边与置信度做指数加权移动平均;无跟踪编号时退化为同类别 IoU 贪心匹配。

box ← α · new + (1 − α) · prev   # α = 0.45 · IoU ≥ 0.30
02 / HYSTERESIS

时域滞留去闪动

BoxPersister · hold 12 frames

短暂遮挡或漏检时不立刻撤框,连续丢失超过阈值才移除,消除「一帧有一帧无」的高频闪烁。

if miss ≤ 12 then keep else drop   # 命中即刷新
03 / PREDICTION

运动预测三模型

MotionPredictor · window 12 · lead 200ms

为每个跟踪编号维护历史采样,外推「当前 + 提前量」时刻的中心点;结果仅用于标注,不注入输入。

p(t + Δ) = p(t) + v · Δ   # Δ = 200 ms
匀速外推 CV · 首末两点求平均速度,长基线差分抵消单帧抖动,最快
最小二乘拟合 LSQ · 窗口内直线拟合取斜率,对随机噪声最稳健
恒速卡尔曼 Kalman · 位置 + 速度双状态递推,平滑观测又可外推
内存自回收 · 目标离场后回收其历史采样与滤波器状态
零依赖实现 · 卡尔曼递推纯 Python 手写,不引入 numpy
deepvision/detector.py — 恒速卡尔曼单轴一步
# 状态 [位置, 速度, Ppp, Ppv, Pvv],P 为 2×2 协方差
def _kf_step(st, dt, z):
    p, v, ppp, ppv, pvv = st

    # 预测:速度视为随机游走
    p_pred   = p + v * dt
    ppv_pred = ppv + dt * pvv
    ppp_pred = ppp + dt*(2.0*ppv + dt*pvv) + _KF_Q_POS

    # 更新:增益由协方差直接给出
    s = ppp_pred + _KF_R_POS
    r = z - p_pred
    return [p_pred + ppp_pred/s*r, v + ppv_pred/s*r,
            pvv + _KF_Q_VEL]