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.pydata/(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