这是一个基于Rockchip RKNN运行时的Android YOLO11应用,支持:
- ✅ 目标检测 - 人脸/80类COCO目标检测(可切换模型),本项目基于WIDER_FACE数据集重新训练的人脸模型
- ✅ 目标跟踪 - 基于ByteTrack的人脸多目标跟踪
人脸检测与跟踪核心已独立为库模块
yolo11-lib,app仅作为示例壳工程。
- 基于RKNN优化的YOLO11模型
- 支持arm64-v8a和armeabi-v7a架构
- 硬件加速推理(NPU)
- 人脸检测/80种COCO类别识别
- 多目标持久ID跟踪
- 处理遮挡和短时消失
- 卡尔曼滤波位置预测
- 可配置参数优化
yolo11/
├── yolo11-lib/ # 🔥 独立的人脸检测/跟踪库模块
│ ├── src/main/cpp/ # C++ 核心(YOLO11 + ByteTrack + JNI)
│ ├── src/main/java/com/igrs/yolo11/
│ │ ├── YOLO11Detector.java # 检测封装
│ │ └── YOLO11Tracker.java # 跟踪封装
│ └── src/main/assets/
│ └── yolo11.rknn # 人脸模型
│
├── app/ # Demo 壳工程(依赖 yolo11-lib)
│ ├── src/main/java/com/igrs/yolo11/
│ │ ├── MainActivity.java
│ │ ├── ImageDetectionActivity.java
│ │ ├── TrackingActivity.java
│ │ ├── VideoTrackingActivity.java
│ │ └── CameraTrackingActivity.java
│ └── src/main/res/layout/
│ ├── activity_main.xml
│ ├── activity_tracking.xml
│ ├── activity_video_tracking.xml
│ └── activity_camera_tracking.xml
│
├── TRACKING_QUICKSTART.md # 快速开始
├── TRACKING_USAGE.md # 使用指南
└── TRACKER_API_EXAMPLES.java # API示例
- Android Studio Arctic Fox (2020.3.1) 或更高版本
- NDK r21 或更高版本
- Gradle 7.0+
- 最低Android SDK: 24 (Android 7.0)
- 目标设备: Rockchip RK3576/RK3588等支持RKNN的设备
- 克隆项目
git clone https://github.com/CWTakiku/FaceTrack.git
cd yolo11- 编译
./gradlew assembleDebug- 安装
./gradlew installDebug或在Android Studio中直接运行项目。
运行 MainActivity(壳工程),选择图片进行目标检测,实际能力来自 yolo11-lib。
运行 TrackingActivity,选择图片进行目标跟踪;多次检测同一图片,观察ID保持不变。
如需在自有项目集成,只需添加模块依赖
implementation project(":yolo11-lib"),无需拷贝 demo 代码。
// 初始化检测器
YOLO11Detector detector = new YOLO11Detector();
String modelPath = YOLO11Detector.copyModelFromAssets(context, "yolo11.rknn");
detector.init(modelPath);
// 检测
List<YOLO11Detector.DetectionResult> results = detector.detect(bitmap);
// 绘制结果
YOLO11Detector.drawResults(bitmap, results);
// 释放
detector.release();// 初始化检测器和跟踪器
YOLO11Detector detector = new YOLO11Detector();
detector.init(modelPath);
YOLO11Tracker tracker = new YOLO11Tracker(
0.5f, // trackThreshold
30, // trackBuffer
0.8f // matchThreshold
);
// 检测并跟踪
List<YOLO11Tracker.TrackResult> tracks =
tracker.detectAndTrack(bitmap, 0.25f, 0.45f);
// 绘制结果(带ID)
tracker.drawTracks(bitmap, tracks);
// 释放
tracker.release();
detector.release();- RK3588: ~30-50ms (640x640)
- RK3576: ~40-60ms (640x640)
- 跟踪开销: ~5-10ms (10个目标)
- 总延迟: 检测时间 + 跟踪时间
- 架构: YOLOv11n/s/m
- 输入: 640x640 RGB
- 输出: 80类COCO目标
- 后处理: NMS + 置信度过滤
- 算法: ByteTrack (ECCV 2022)
- 关联: IoU匹配 + 两级关联
- 预测: 简化卡尔曼滤波
- 状态管理: NEW → TRACKED → LOST → REMOVED
| 文档 | 说明 |
|---|---|
TRACKING_QUICKSTART.md |
5分钟快速开始指南 |
TRACKING_USAGE.md |
详细使用文档和参数调优 |
TRACKER_API_EXAMPLES.java |
10个使用示例 |
README.md |
本文件:项目总览 |
A:
- 单帧图像 → 使用
YOLO11Detector - 连续帧/视频 → 使用
YOLO11Tracker
A: 调整参数:
// 提高匹配阈值
YOLO11Tracker tracker = new YOLO11Tracker(0.5f, 30, 0.9f);A:
- 减小输入图像尺寸
- 使用跳帧处理
- 调高检测置信度阈值
- 减少跟踪的目标数量
A: 所有支持RKNN的Rockchip芯片:
- RK3588/RK3588S
- RK3576
- RK3566/RK3568
- RV1109/RV1126
- RV1106/RV1103
A: 可以!每个 YOLO11Tracker 实例独立管理轨迹:
YOLO11Tracker tracker1 = new YOLO11Tracker(); // 场景1
YOLO11Tracker tracker2 = new YOLO11Tracker(); // 场景2本项目基于 Apache License 2.0 开源。
部分代码来自:
- Rockchip RKNN SDK
- ByteTrack算法实现
- YOLO11模型
欢迎提交Issue和Pull Request!
- 开发团队: IGRS YOLO11 Team
- 技术支持: 见项目Issue页面
- ✅ 新增ByteTrack目标跟踪功能
- ✅ 新增TrackingActivity演示应用
- ✅ 新增完整的跟踪API和文档
- ✅ 优化JNI接口性能
- ✅ YOLO11目标检测功能
- ✅ RKNN硬件加速
- ✅ MainActivity演示应用
感谢以下开源项目:
🎉 开始使用YOLO11跟踪功能吧!查看 TRACKING_QUICKSTART.md 了解详情。