From deac984180e54dcb904f415c8f2e095b8b1661a7 Mon Sep 17 00:00:00 2001 From: shuishen <1109946754@qq.com> Date: Tue, 25 Aug 2026 14:56:08 +0800 Subject: [PATCH] feat(console): auto-select cuda for detection workflows --- capabilities/01-object-detection/README.md | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/capabilities/01-object-detection/README.md b/capabilities/01-object-detection/README.md index 5cbe346..89a5f31 100644 --- a/capabilities/01-object-detection/README.md +++ b/capabilities/01-object-detection/README.md @@ -2,7 +2,7 @@ ## 目标 -先做一个可在本机 CPU 运行的预训练模型 Demo:输入无人机照片,输出带目标框、类别和置信度的标注图片,以及结构化 JSON。第二阶段再支持正射 GeoTIFF 切片,并把像素坐标转换为经纬度后输出 GeoJSON,便于接入现有 Cesium 地图和算法管理模块。 +先做一个可在本机运行的预训练模型 Demo:输入无人机照片,输出带目标框、类别和置信度的标注图片,以及结构化 JSON。第二阶段再支持正射 GeoTIFF 切片,并把像素坐标转换为经纬度后输出 GeoJSON,便于接入现有 Cesium 地图和算法管理模块。 本能力使用 [opengeos/geoai](https://github.com/opengeos/geoai) 发布的 `geoai-py` 作为 GeoAI 工作流层。它负责把地理影像处理、AI 推理、地理结果和可视化串起来;PyTorch、Rasterio、GeoPandas 等仍是它和本 Demo 的底层运行依赖。 @@ -36,8 +36,8 @@ ## 环境与硬件 -- 使用 Python 3.12 专用环境:`.venvs/01-object-detection`。 -- 当前电脑是 AMD RX 590 GME 8GB,不具备 NVIDIA CUDA;首版使用 CPU 推理。 +- 使用 Python 3.12 专用环境:`.venvs/01-object-detection` 保留为 CPU 路径;`.venvs/01-object-detection-cuda` 是已验证的 CUDA 路径。 +- 当前电脑使用 NVIDIA GeForce RTX 3050 Laptop GPU(8 GB VRAM,CUDA capability 8.6)。CUDA 环境使用 PyTorch `2.11.0+cu128`、Torchvision `0.26.0+cu128`、Ultralytics `8.4.118` 和 `geoai-py 0.42.0`;`pip check` 通过。 - 64GB 内存足够运行 10–30 张图片的 Demo。大尺寸正射影像需要切片,不能一次性全部载入内存。 - 模型权重和 Python 包必须记录版本与许可证,产品使用前检查是否允许商用。 - `geoai-py` 项目本身为 MIT 许可证;它依赖的模型权重、数据集和第三方库仍需分别核查许可证。`ultralytics` 等可选底层组件的许可证不能由 GeoAI 的 MIT 许可证自动覆盖。 @@ -51,7 +51,7 @@ - `annotated/`:画出检测框和标签的图片; - `detections.json`:图片名、类别、置信度、像素框坐标; - `detections.geojson`:正射影像场景下的地理框或中心点; -- `run_metadata.json`:模型版本、阈值、运行时间、设备(CPU/DirectML)。 +- `run_metadata.json`:模型版本、阈值、运行时间、请求设备和实际设备。 ## 首版验收标准 @@ -80,7 +80,7 @@ .\.venvs\01-object-detection\Scripts\python.exe .\capabilities\01-object-detection\run_detection.py ``` -默认使用 CPU、`yolo11n.pt`、1024 像素切片、20% 重叠和置信度阈值 0.20。 +默认使用 `--device auto`、`yolo11n.pt`、1024 像素切片、20% 重叠和置信度阈值 0.20。CLI 可显式传入 `--device auto|cpu|cuda`;请求 CUDA 但不可用会明确失败,`auto` 会回退 CPU。 结果写入 `shared/outputs/01-object-detection/`。 执行 GeoAI NWPU-VHR10 航拍车辆检测: @@ -89,18 +89,20 @@ .\.venvs\01-object-detection\Scripts\python.exe .\capabilities\01-object-detection\run_geoai_vehicle_detection.py ``` -该脚本默认使用 CPU、512 像素滑窗、128 像素重叠和置信度阈值 0.30,结果写入 +该脚本默认使用 `--device auto`、512 像素滑窗、128 像素重叠和置信度阈值 0.30,结果写入 `shared/outputs/01-object-detection/geoai-vehicles/`。首次运行会自动下载约 98 MB 的模型权重。 ## 当前验证结论 - `DJI_20260810092727_0001_V_10.jpeg`:通用 YOLO 检出 2–3 辆车;GeoAI NWPU 检出 33 个车辆候选,CPU 推理约 90 秒,明显改善俯视小车辆漏检。 +- GPU validation on the same `V_10` image: tiled YOLO returned the same three candidates in 4.261 seconds on CUDA versus 5.642 seconds on the retained CPU route. GeoAI NWPU returned the same 32 retained vehicles in 13.145 seconds on CUDA versus 97.054 seconds on CPU. +- On difficult `V_19`, CUDA and CPU under PyTorch 2.11 both returned four YOLO candidates, while the previous PyTorch 2.13 CPU output had five. This is a version-level numerical difference, not evidence that CUDA improves or degrades accuracy. - `DJI_20260713102047_0001_V_19.jpeg`:切片 YOLO 检出多个人员,但两种模型均未检出右上角红色汽车;该近景车顶外观仍需要更匹配的航拍数据或本项目样本微调。 - NWPU 会产生少量其他航拍类别误检,正式 Demo 只保留 `vehicle`;脚本还会过滤被高置信度整车框大部分包含的重复局部框。 - 树木不属于当前两个模型的有效类别,必须单独建设树冠检测/分割分支。 ## 控制台运行入口 -本地实验控制台可以直接上传最多 12 张 `JPG/JPEG/PNG` 进行一次 CPU 基线检测。每次运行会把原图保存到 `shared/data/raw/01-object-detection/runs/<run-id>/`,结果保存到 `shared/outputs/01-object-detection/runs/<run-id>/`,不会覆盖既有基线或用户原图。页面默认将同一影像的原图与标注图并列展示,并可在案例库中回看历史运行。 +本地实验控制台可以直接上传最多 12 张 `JPG/JPEG/PNG` 进行一次检测。每次运行会把原图保存到 `shared/data/raw/01-object-detection/runs/<run-id>/`,结果保存到 `shared/outputs/01-object-detection/runs/<run-id>/`,不会覆盖既有基线或用户原图。页面默认将同一影像的原图与标注图并列展示,并可在案例库中回看历史运行。 -该入口调用固定的 `run_detection.py` 与 `01-object-detection` 虚拟环境,仍然只适用于人员和常见车辆的基线验证;树木、真实准确率、许可审查和生产批处理不在此入口的承诺范围内。 +该入口只调用固定的 `run_detection.py`。服务端先探测固定的 `01-object-detection-cuda` 环境;CUDA 可用时使用它,否则调用固定的 `01-object-detection` CPU 环境。仍然只适用于人员和常见车辆的基线验证;树木、真实准确率、许可审查和生产批处理不在此入口的承诺范围内。 -- Gitblit v1.9.3