YOLOv8-pose+streamlit 实现人体关键点检测/姿态估计系统

一、安装与配置

1.1 安装 Streamlit

在命令行直接输入下方指令即可:

pip install streamlit

1.2 配置文件

在本地的C:\Users\Administrator.streamlit这个位置新建==.streamlit==文件,复制下面的代码段即可

[server]
port = 8501
enableCORS = false
 
[browser]
serverAddress = "localhost"
gatherUsageStats = false
 
[runner]
magicEnabled = false

1.3 运行Streamlit应用

运行streamlit演示项目:

streamlit hello

看到如下图web文件代表安装成功。在这里插入图片描述

1.4 找模板

可以上https://streamlit.io/官网,查找一下适合自己的模板,下载到本地后,运行如下指令,进行部署查看

streamlit run streamli/bg_remove.py

我们使用的模板样式如下图所示:
在这里插入图片描述

二、人体关键点检测算法

2.1 关键点序号

以YOLOv8-pose人体姿态估计为例,在COCO数据集上身体的每一个关节具有一个序号,共17个点:

COCO_keypoint_indexes = {
   
    0: 'nose',
    1: 'left_eye',
    2: 'right_eye',
    3: 'left_ear',
    4: 'right_ear',
    5: 'left_shoulder',
    6: 'right_shoulder',
    7: 'left_elbow',
    8: 'right_elbow',
    9: 'left_wrist'
### 如何使用 YOLOv8-Pose 进行人体姿态关键点检测 #### 加载预训练模型 为了执行人体姿态关键点检测,首先需要加载已经训练好的YOLOv8-pose模型。这可以通过指定权重文件路径来完成。 ```python from ultralytics import YOLO def load_model(model_path): # Load a pretrained model using the specified path and set task to 'pose' model = YOLO(model_path, task='pose') return model ``` 此函数`load_model`接收一个参数`model_path`,即保存有预训练权重的`.pt`文件的位置[^3]。 #### 执行预测操作 一旦模型被成功加载,就可以利用它来进行图像上的预测工作。下面定义了一个名为`predict_img`的方法用于处理输入源并返回带有标注的人体关键点图片对象。 ```python def predict_img(source): # Initialize the model by calling previously defined function model = load_model(r'weights/yolov8x-pose-p6.pt') # Execute predictions on given source without saving or displaying them immediately results = model.predict(source=source, save=False, show=False) keypoint_images = [] # Iterate over all detected objects within each frame/image from sources like video frames/images etc. for result in results: # Draw keypoints onto original images and append processed ones into list keypoint_image = result.plot() keypoint_images.append(keypoint_image) return keypoint_images ``` 上述代码片段展示了如何调用`model.predict()`方法传入待分析的数据源(可以是单张图片或多帧视频),并通过循环遍历每一个预测结果以获取绘制好关键点后的最终输出图像列表。 #### 结合Streamlit创建交互界面 为了让用户更便捷地体验这一功能,还可以借助Streamlit库构建简单的Web应用程序接口(API),允许上传本地图片或链接在线资源作为输入,并展示经过处理的结果图。 ```python import streamlit as st st.title('Human Pose Estimation with YOLOv8-Pose') uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png"]) if uploaded_file is not None: bytes_data = uploaded_file.getvalue() img_name = f"data/{uploaded_file.name}" with open(img_name, "wb") as file: file.write(bytes_data) output_imgs = predict_img(img_name) for i, out_img in enumerate(output_imgs): st.image(out_img, caption=f'Result Image {i+1}', use_column_width=True) ``` 这段脚本实现了基本的应用程序逻辑:接受来自用户的媒体文件上传请求;将其传递给之前编写的`predict_img`函数进行处理;最后把生成的一组图像显示出来供查看。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值