Pig Pose Detection — LLaMA Factory 微调项目
基于 Qwen3.5-0.8B-Base 微调的生猪姿态检测(lying/stand/sit)模型。
目录/文件说明
数据
| 路径 | 用途 |
data/ | 原始 YOLO 格式数据集,images/ 和 labels/ 各含 train/val/test 三份划分 |
data_llm/ | LLM 训练格式数据集,含 images/、data.json(instruction-output 格式) |
脚本
| 文件 | 用途 |
convert_to_llm.py | 将 data/(YOLO 格式)转换为 data_llm/(LLM 训练格式) |
eval_model-Qwen3.5-0.8B-Base.py | 评估基础模型的姿态检测能力 |
eval_model-pigft-Qwen3.5-0.8B-Base.py | 评估微调模型的姿态检测能力 |
模型
| 路径 | 用途 |
llms/Qwen3.5-0.8B-Base/ | 基础模型(原始权重) |
pigft-Qwen3.5-0.8B-Base/ | 微调后模型(含 chat_template.jinja 对话模板、Modelfile) |
模型微调输出
| 路径 | 用途 |
模型微调输出/training_args.yaml | 训练参数配置(LoRA rank=8, 3 epochs) |
模型微调输出/train_results.json | 训练结果摘要(最终 loss: 0.23,约 6.4 小时) |
模型微调输出/training_loss.png | 训练 loss 曲线图 |
模型微调输出/trainer_log.jsonl | 训练过程日志(JSON Lines) |
模型微调输出/running_log.txt | 运行日志(文本) |
评估结果
| 路径 | 用途 |
评估结果/基础能力评估/ | C-Eval / CMMLU 评估结果(原模型 vs 微调模型) |
评估结果/专业能力评估/ | 姿态检测专项评估(姿态准确率 78.81%,格式匹配率 88.65%) |
文档
| 文件 | 用途 |
评估报告.md | 完整评估报告(基础能力 + 专业能力) |
快速开始
1. 环境搭建
# 创建 conda 环境
conda create -n llama_factory python=3.12.13
conda activate llama_factory
# 安装 LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install -r requirements/metrics.txt
2. 下载基础模型(✅ 已完成)
pip install modelscope
modelscope download --model Qwen/Qwen3.5-0.8B-Base --local_dir ./llms/Qwen3.5-0.8B-Base
3. 数据格式转换(✅ 已完成)
将 data/(YOLO 格式)转换为 data_llm/(LLaMA Factory 训练格式):
python convert_to_llm.py
4. 微调(✅ 已完成)
使用 LLaMA-Factory 基于 data_llm/ 对 llms/Qwen3.5-0.8B-Base/ 进行微调,导出后得到 pigft-Qwen3.5-0.8B-Base/。
llamafactory-cli webui
详细文档见 https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/webui.html。
5. 专业能力评估(猪只姿态检测)
# 评估基础模型
python eval_model-Qwen3.5-0.8B-Base.py
# 评估微调模型
python eval_model-pigft-Qwen3.5-0.8B-Base.py
6. 基础能力评估(C-Eval / CMMLU)
pip install lm-eval
# C-Eval — 基础模型
lm_eval --model hf --model_args pretrained=llms/Qwen3.5-0.8B-Base,dtype=float16 \
--tasks ceval-valid --num_fewshot 5 --batch_size 4 \
--output_path saves/Qwen3.5-0.8B-Base/lora/C-Eval-eval
# C-Eval — 微调模型
lm_eval --model hf --model_args pretrained=pigft-Qwen3.5-0.8B-Base,dtype=float16 \
--tasks ceval-valid --num_fewshot 5 --batch_size 4 \
--output_path saves/pigft-Qwen3.5-0.8B-Base/lora/C-Eval-eval
# CMMLU — 基础模型
lm_eval --model hf --model_args pretrained=llms/Qwen3.5-0.8B-Base,dtype=float16 \
--tasks cmmlu --num_fewshot 5 --batch_size 4 \
--output_path saves/Qwen3.5-0.8B-Base/lora/CMMLU-eval
# CMMLU — 微调模型
lm_eval --model hf --model_args pretrained=pigft-Qwen3.5-0.8B-Base,dtype=float16 \
--tasks cmmlu --num_fewshot 5 --batch_size 4 \
--output_path saves/pigft-Qwen3.5-0.8B-Base/lora/CMMLU-eval