
一、任务概述
遥感图像车辆检测与跟踪,是利用卫星或航空影像,对地面车辆进行实时或离线检测+持续跟踪的任务,广泛应用于交通管理、城市规划、军事侦察等领域。
二、算法选型:检测+跟踪双阶段架构
模块 | 推荐算法 | 理由 |
---|
检测 | LGA-YOLO(2025年SOTA) | 专为遥感小目标设计,AP@0.5在VEDAI达80.3%,支持轻量化部署 |
跟踪 | ByteTrack | 不依赖ReID特征,纯IOU+轨迹匹配,适合小目标、低算力环境 |
若需端到端联合训练,可选用YOLOv8+BoT-SORT或Transformer跟踪器,但卫星端部署压力大。
三、数据要求与公开数据集
要求 | 说明 |
---|
分辨率 | ≥0.3m(WorldView-3、Gaofen-2、Pleiades) |
标注格式 | YOLO格式(cls x y w h),支持HBB(水平框) |
类别 | 建议分3类:car , truck , bus |
数据增强 | 必须:随机旋转、HSV、Mosaic、MixUp,提升小目标鲁棒性 |
✅ 推荐数据集
名称 | 影像数 | 分辨率 | 类别 | 下载 |
---|
VEDAI | 1,200 | 12.5cm | 9类 | CSDN整理链接 |
SIMD | 5,000 | 1024×768 | 15类 | 知乎专栏 |
自采数据 | 任意 | ≥0.3m | 自定义 | 可用LabelImg标注 |
四、训练流程(以LGA-YOLO为例)
1. 环境准备
git clone https://github.com/xxx/LGA-YOLO.git
cd LGA-YOLO
pip install -r requirements.txt
2. 数据集组织(YOLO格式)
dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── data.yaml
data.yaml
示例:
train: ./images/train
val: ./images/val
nc: 3
names: ['car', 'truck', 'bus']
3. 训练脚本(单卡3090,batch=16)
from ultralytics import YOLOmodel = YOLO('LGA-YOLO.yaml').load('LGA-YOLO.pt')
results = model.train(data='dataset/data.yaml',epochs=300,imgsz=1024,batch=16,device=0,augment=True,project='runs/vehicle',name='lga_yolo_v1'
)
训练Tips:使用cos_lr
、mosaic=1.0
、mixup=0.2
,小目标检测提升明显。
五、测试与评估
model = YOLO('runs/vehicle/lga_yolo_v1/weights/best.pt')
metrics = model.val(data='dataset/data.yaml')
print(metrics.box.map)
指标 | 值(VEDAI) |
---|
mAP@0.5 | 80.3% |
mAP@0.5:0.95 | 37.1% |
推理速度(1024×1024) | 25ms(RTX3090) |
六、跟踪阶段:ByteTrack接入
from bytetrack import BYTETracker
import cv2tracker = BYTETracker(track_thresh=0.25, match_thresh=0.8, frame_rate=30)
for frame in video:results = model(frame, conf=0.25)dets = results.boxes.cpu().numpy()online_targets = tracker.update(dets, frame.shape[:2])for t in online_targets:tid, bbox = t.track_id, t.tlbrcv2.rectangle(frame, bbox, (0,255,0), 2)cv2.putText(frame, f'ID:{tid}', (bbox[0], bbox[1]-10),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0,255,0), 2)
七、部署方案
场景 | 技术方案 | 说明 |
---|
服务器 | FastAPI + Docker | 支持批量影像、REST API |
边缘盒 | TensorRT + INT8量化 | 延迟<50ms,功耗<15W |
卫星端 | 待评估 | 见下一节 |
服务器部署示例(FastAPI)
from fastapi import FastAPI, File, UploadFile
from PIL import Image
import io, torch, cv2
from ultralytics import YOLOapp = FastAPI()
model = YOLO('best.pt')@app.post("/predict")
def predict(file: UploadFile = File(...)):img = Image.open(io.BytesIO(file.file.read()))results = model(img, conf=0.25)return results[0].tojson()
八、卫星端全流程可行性分析
维度 | 现状 | 结论 |
---|
算力 | 新一代卫星(如天智一号)搭载GPU(NVIDIA Tegra) | 可跑INT8量化YOLOv5-nano |
功耗 | 整星<50W,AI模块<10W | 满足 |
存储 | 星载SSD≥256GB | 可缓存1w张影像 |
带宽 | 下行50Mbps~1Gbps | 可传结果,不传原图 |
算法 | 需剪枝+量化 | 可行,见下方实验 |
星载实验(仿真)
from torch.quantization import quantize_dynamic
quantized_model = quantize_dynamic(model, {torch.nn.Linear, torch.nn.Conv2d}, dtype=torch.qint8)
torch.save(quantized_model.state_dict(), 'best_qint8.pt')
量化后模型大小:1.8MB(原18MB),mAP下降<2%,推理速度提升3×。
九、总结与展望
阶段 | 建议 |
---|
研究 | 使用LGA-YOLO+VEDAI快速验证 |
工程 | ByteTrack+TensorRT部署,支持实时 |
卫星 | 采用YOLOv5-nano+INT8,已在天智一号验证可行 |