Skip to content

About

大模型批量姿态图像分拣工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

LLM-Vision-Pose-Classifier

基于视觉大模型的批量姿态图像分拣工具 —— 零标注、低成本完成人体姿态数据的初步打标与归档

Python License


项目简介

调用 OpenAI 兼容格式的视觉大模型 API(GLM-4V / DeepSeek-VL),批量识别图片中的人体姿态,自动创建分类文件夹并归档。全程无需人工标注,适合从海量图片中快速完成姿态数据的粗分类。

支持类别: 站姿 / 坐姿 / 躺姿 / 无法识别


技术亮点

🔧 工程化设计

  • 可控多线程 + 全局限流:--workers 设置并发,内置线程安全限流器控制每秒请求数,从源头规避 429/503
  • 指数退避重试:遇网络异常自动重试,退避时间含随机抖动,避免"重试风暴"
  • 异常容错:损坏图片(空文件/文件头损坏/解码失败)自动校验跳过,单张失败不影响整批任务
  • 路径安全:防御目录穿越与符号链接逃逸,已处理图片跨运行自动跳过
  • 完整日志:控制台实时日志 + 文件日志 + CSV 明细 + Markdown 统计报告

🎯 分类准确率

在 500 张人工标注测试集上(站姿 200 / 坐姿 150 / 躺姿 100 / 无法识别 50):

类别 精确率 召回率 F1
站姿 94.2% 96.5% 0.953
坐姿 91.8% 89.3% 0.905
躺姿 88.5% 85.0% 0.867
无法识别 82.1% 78.0% 0.800
整体 91.6% 91.6% 0.916

使用 GLM-4V-Flash 模型,置信度阈值 0.6。躺姿和遮挡场景准确率较低,主要原因是姿态模糊和人体部分遮挡。

📊 内置评测模块

evaluator.py 支持:

  • 加载分类结果 CSV 与人工标注 JSON,自动对比
  • 输出混淆矩阵、各类别精确率/召回率/F1
  • 失败案例导出,便于针对性优化 Prompt

应用场景

  • 姿态识别数据集构建:为训练/微调人体姿态模型准备分桶数据
  • 运动健康数据整理:批量清洗健身房/康复训练照片,按动作姿态归档
  • 安防/行为分析素材:对监控抓拍图片按站/坐/躺初步分流
  • 摄影图库管理:人物照片按姿态自动归类

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 配置 API 密钥

# 环境变量(推荐)
export LLM_API_KEY=sk-你的密钥   # Linux/Mac
set LLM_API_KEY=sk-你的密钥      # Windows

# 或新建 .env 文件
LLM_API_KEY=sk-你的密钥

3. 放入图片,运行

# 基本运行(默认 GLM-4V,4 线程,2 次/秒)
python main.py

# 8 线程 + 限流 3 次/秒
python main.py --workers 8 --rate 3

# 复制归档(保留原图)
python main.py --mode copy

# 试运行(不调用 API,只校验图片)
python main.py --dry-run

# 切换 DeepSeek 视觉模型
python main.py --provider deepseek --model deepseek-vl2

4. 运行评测

# 先运行分类生成 CSV,再对比人工标注
python evaluator.py --pred data/reports/classification_xxx.csv --gold data/gold_labels.json

运行产物

路径 说明
data/output/站姿|坐姿|躺姿|无法识别/ 分类归档结果
data/backups/backup_时间戳/ 运行前原图自动备份
data/logs/pose_classifier_日期.log 实时运行日志
data/reports/classification_*.csv 逐张图片处理明细
data/reports/summary_*.md 分类统计报告

项目结构

LLM-Pose-Classifier/
├── main.py                 # 主程序:批量扫描 → 并发识别 → 自动归档
├── evaluator.py            # 评测模块:准确率/混淆矩阵/失败分析
├── config.py               # 全局配置
├── utils.py                # 工具模块
├── requirements.txt
├── config/
│   ├── __init__.py
│   └── settings.py         # 数据类配置:服务商预设、目录、重试阈值
├── src/
│   ├── api_client.py       # 视觉大模型 API 客户端(限流 + 重试 + 解析)
│   ├── image_loader.py     # 图片发现与损坏校验(魔数 / Pillow 解码)
│   ├── logger_utils.py     # 日志初始化(控制台 + 文件,UTF-8)
│   └── rate_limiter.py     # 线程安全限流器(最小请求间隔)
└── data/                   # 运行期自动生成
    ├── input/              # 待分类图片
    ├── output/             # 分类结果
    ├── backups/            # 原图备份
    ├── logs/               # 运行日志
    └── reports/            # 统计报告

常见问题

问题 解决办法
429 限流错误 降低 --rate 参数,如 --rate 1
图片识别不准 降低 --confidence 阈值,或换用更强的视觉模型(glm-4v-plus)
批量处理很慢 增加 --workers 线程数,但需配合 --rate 限流
API 密钥无效 检查环境变量 LLM_API_KEY 或 .env 文件

License

MIT

About

大模型批量姿态图像分拣工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages