Skip to content

CWTakiku/FaceTrack

Repository files navigation

YOLO11 Android 多人脸目标检测与跟踪

项目概述

这是一个基于Rockchip RKNN运行时的Android YOLO11应用,支持:

  • 目标检测 - 人脸/80类COCO目标检测(可切换模型),本项目基于WIDER_FACE数据集重新训练的人脸模型
  • 目标跟踪 - 基于ByteTrack的人脸多目标跟踪

人脸检测与跟踪核心已独立为库模块 yolo11-libapp 仅作为示例壳工程。

功能特性

1. YOLO11 目标检测

  • 基于RKNN优化的YOLO11模型
  • 支持arm64-v8a和armeabi-v7a架构
  • 硬件加速推理(NPU)
  • 人脸检测/80种COCO类别识别

2. ByteTrack 目标跟踪

  • 多目标持久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的设备

编译步骤

  1. 克隆项目
git clone https://github.com/CWTakiku/FaceTrack.git
cd yolo11
  1. 编译
./gradlew assembleDebug
  1. 安装
./gradlew installDebug

或在Android Studio中直接运行项目。

快速测试(Demo)

测试检测功能

运行 MainActivity(壳工程),选择图片进行目标检测,实际能力来自 yolo11-lib

测试跟踪功能

运行 TrackingActivity,选择图片进行目标跟踪;多次检测同一图片,观察ID保持不变。

如需在自有项目集成,只需添加模块依赖 implementation project(":yolo11-lib"),无需拷贝 demo 代码。

API使用示例

检测API

// 初始化检测器
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();

跟踪API 🆕

// 初始化检测器和跟踪器
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个目标)
  • 总延迟: 检测时间 + 跟踪时间

核心算法

YOLO11 检测

  • 架构: YOLOv11n/s/m
  • 输入: 640x640 RGB
  • 输出: 80类COCO目标
  • 后处理: NMS + 置信度过滤

ByteTrack 跟踪 🆕

  • 算法: ByteTrack (ECCV 2022)
  • 关联: IoU匹配 + 两级关联
  • 预测: 简化卡尔曼滤波
  • 状态管理: NEW → TRACKED → LOST → REMOVED

文档索引

文档 说明
TRACKING_QUICKSTART.md 5分钟快速开始指南
TRACKING_USAGE.md 详细使用文档和参数调优
TRACKER_API_EXAMPLES.java 10个使用示例
README.md 本文件:项目总览

常见问题

Q: 如何选择检测还是跟踪?

A:

  • 单帧图像 → 使用 YOLO11Detector
  • 连续帧/视频 → 使用 YOLO11Tracker

Q: 跟踪ID不稳定怎么办?

A: 调整参数:

// 提高匹配阈值
YOLO11Tracker tracker = new YOLO11Tracker(0.5f, 30, 0.9f);

Q: 如何提高性能?

A:

  1. 减小输入图像尺寸
  2. 使用跳帧处理
  3. 调高检测置信度阈值
  4. 减少跟踪的目标数量

Q: 支持哪些设备?

A: 所有支持RKNN的Rockchip芯片:

  • RK3588/RK3588S
  • RK3576
  • RK3566/RK3568
  • RV1109/RV1126
  • RV1106/RV1103

Q: 能否同时运行多个跟踪器?

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页面

更新日志

v1.1.0 (最新) 🆕

  • ✅ 新增ByteTrack目标跟踪功能
  • ✅ 新增TrackingActivity演示应用
  • ✅ 新增完整的跟踪API和文档
  • ✅ 优化JNI接口性能

v1.0.0

  • ✅ YOLO11目标检测功能
  • ✅ RKNN硬件加速
  • ✅ MainActivity演示应用

致谢

感谢以下开源项目:


🎉 开始使用YOLO11跟踪功能吧!查看 TRACKING_QUICKSTART.md 了解详情。

About

Multi-face tracking implementation based on YOLOv11-trained RKNN face model and tracking algorithms

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors