这是一个基于 YOLOv5 的跌倒检测器项目。该项目利用深度学习模型实现对视频或图片中的跌倒事件进行实时检测,支持 PyTorch 和 ONNX 格式的模型加载
本项目依赖于 YOLOv5 仓库,用于模型的训练和推理。
本地推理包含了 FallDownDetectYolo 模块,支持命令行运行的run.py 脚本以及 run_api.py 的api调用示例。
远程推理包含了 fall.py 模块和 test.py 脚本,可以在本地进行端口转发,并在Atlas200DK开发板上挂载om模型后实行远程推理。
包含了训练好的pt、onnx以及om文件。
包含远程推理需要的 inferemote 软件包。
-
克隆项目仓库
git clone https://github.com/SowingG2333/fall-detection.git
-
创建虚拟环境(可选)
python3 -m venv venv source venv/bin/activate -
安装YOLOv5依赖
git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt -
安装本地推理依赖
pip install torch torchvision onnxruntime opencv-python numpy pandas argparse
-
安装远程推理依赖(基于Atlas200DK开发板,可选)
# windows安装 pip install requirements/inferemote-2.0.2-py39-none-win_amd64 # macos安装 pip install requirements/inferemote-2.0.2-py39-none-macosx_10_15_universal2
本项目提供了命令行接口,支持图像和视频的推理。以下是详细的命令行参数说明及使用示例。
--yolov5_path:YOLOv5 的本地路径。--weight_path:模型权重文件的路径(.pt或.onnx)。--image_path:待检测的图像路径。--video_path:待检测的视频路径。--model_type:模型类型,选择pt或onnx。--input_type:输入类型,选择image或video。--save:是否保存检测结果。--save_path:检测结果的保存路径(图片或视频)。--fps:保存视频的帧率(仅在视频模式下有效)。
-
图像推理(默认不保存结果)
python run.py --yolov5_path /path/to/yolov5 \ --weight_path /path/to/model.pt \ --image_path /path/to/image.jpg \ --model_type pt \ --input_type image -
图像推理并保存检测结果
python run.py --yolov5_path /path/to/yolov5 \ --weight_path /path/to/model.pt \ --image_path /path/to/image.jpg \ --model_type pt \ --input_type image \ --save \ --save_path /path/to/output.jpg -
视频推理(默认不保存结果)
python run.py --yolov5_path /path/to/yolov5 \ --weight_path /path/to/model.onnx \ --video_path /path/to/video.mp4 \ --model_type onnx \ --input_type video -
视频推理并保存检测结果
python run.py --yolov5_path /path/to/yolov5 \ --weight_path /path/to/model.onnx \ --video_path /path/to/video.mp4 \ --model_type onnx \ --input_type video \ --save \ --save_path /path/to/output_video.avi \ --fps 30 -
实时摄像头推理(不保存结果)
python run.py --yolov5_path /path/to/yolov5 \ --weight_path /path/to/model.onnx \ --model_type onnx \ --input_type video如果不指定
--video_path,脚本将尝试打开默认摄像头进行实时推理。
除了命令行接口,您还可以在 Python 脚本中直接调用 FallDownDetectYolo 类进行跌倒检测。以下是如何在代码中使用该模块的示例。
from fallDownDetectYolo import FallDownDetectYolo
# 初始化检测器
detector = FallDownDetectYolo(
yolov5_path='/path/to/yolov5',
weight_path='/path/to/model.pt',
image_path='/path/to/image.jpg',
video_path=None, # 如果不使用视频
pt_or_onnx='pt'
)
# 对单张图片进行推理
detector.img_inference(save=True, save_path='/path/to/output.jpg')
# 对视频进行推理
detector.video_inference(save=True, save_path='/path/to/output_video.avi', fps=30)- 利用ssh工具与远程开发板进行端口转发(端口可更改)
ssh -L 9023:localhost:9666 username@ip -p 9023- 利用airloader工具进行om模型挂载
airloader -m /path/to/model.om -p 9666- 本地运行
test.py脚本
python test.py -r localhost -p 9023 -w 5