使用Ultralytics YOLOv8 🚀 监控锻炼情况
通过姿势估算监测锻炼 Ultralytics YOLOv8通过实时准确地跟踪关键的身体地标和关节,增强了运动评估功能。这项技术可提供有关锻炼姿势的即时反馈、跟踪锻炼程序并测量性能指标,从而优化用户和教练的训练课程。
观看: 使用Ultralytics YOLOv8 监测锻炼情况 | 俯卧撑、引体向上、腹肌锻炼
锻炼监测的优势?
- 优化性能:根据监测数据定制锻炼计划,以获得更好的效果。
- 实现目标:跟踪和调整健身目标,以取得可衡量的进展。
- 个性化:根据个人数据定制锻炼计划,提高效率。
- 健康意识:及早发现表明存在健康问题或训练过度的模式。
- 知情决策:以数据为依据,做出调整常规和设定现实目标的决定。
真实世界的应用
锻炼监测 | 锻炼监测 |
---|---|
俯卧撑计数 | 引体向上计数 |
锻炼监测示例
from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2
model = YOLO("yolov8n-pose.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
gym_object = ai_gym.AIGym() # init AI GYM module
gym_object.set_args(line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[6, 8, 10])
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
frame_count += 1
results = model.track(im0, verbose=False) # Tracking recommended
#results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results, frame_count)
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2
model = YOLO("yolov8n-pose.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("workouts.avi",
cv2.VideoWriter_fourcc(*'mp4v'),
fps,
(w, h))
gym_object = ai_gym.AIGym() # init AI GYM module
gym_object.set_args(line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[6, 8, 10])
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
frame_count += 1
results = model.track(im0, verbose=False) # Tracking recommended
#results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results, frame_count)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
支持
支持 "俯卧撑"、"引体向上 "和 "腹肌锻炼"。
关键点地图
论据 set_args
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
kpts_to_check |
list |
None |
三个关键点索引列表,用于计算特定的锻炼,之后是关键点地图 |
view_img |
bool |
False |
显示带有计数的帧 |
line_thickness |
int |
2 |
增加计数值的厚度 |
pose_type |
str |
pushup |
需要监控的姿势、 pullup 和 abworkout 还支持 |
pose_up_angle |
int |
145 |
姿势向上角度值 |
pose_down_angle |
int |
90 |
姿势下降角度值 |
论据 model.predict
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
source |
str |
'ultralytics/assets' |
图像或视频的源目录 |
conf |
float |
0.25 |
检测对象置信度阈值 |
iou |
float |
0.7 |
NMS 的 "相交大于结合"(IoU)阈值 |
imgsz |
int or tuple |
640 |
图像尺寸标量或(高,宽)列表,即(640,480) |
half |
bool |
False |
使用半精度 (FP16) |
device |
None or str |
None |
设备上运行,如 cuda device=0/1/2/3 或 device=cpu |
max_det |
int |
300 |
每幅图像的最大检测次数 |
vid_stride |
bool |
False |
视频帧速率跨度 |
stream_buffer |
bool |
False |
缓冲所有流媒体帧(真)或返回最新帧(假) |
visualize |
bool |
False |
可视化模型特征 |
augment |
bool |
False |
对预测源进行图像增强 |
agnostic_nms |
bool |
False |
不分等级的 NMS |
classes |
list[int] |
None |
按类别筛选结果,即 classes=0,或 classes=[0,2,3] |
retina_masks |
bool |
False |
使用高分辨率分割掩膜 |
embed |
list[int] |
None |
返回给定层的特征向量/嵌入值 |
论据 model.track
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
source |
im0 |
None |
图像或视频的源目录 |
persist |
bool |
False |
帧与帧之间的持久轨迹 |
tracker |
str |
botsort.yaml |
跟踪方法 "bytetrack "或 "botsort |
conf |
float |
0.3 |
置信度阈值 |
iou |
float |
0.5 |
借据阈值 |
classes |
list |
None |
按类别筛选结果,即 classes=0,或 classes=[0,2,3] |
verbose |
bool |
True |
显示物体跟踪结果 |