本项目基于开源视觉语言模型(VLM)与 LoRA 微调,实现对工地安全隐患的视觉问答(VQA)识别与结构化输出。
D:\vlm\
├── data/
│ ├── raw/helmet/kaggle/images/ # 501张原始图片
│ ├── processed/ # VLM自动标注结果
│ └── vqa/train.jsonl # 300条VQA训练样本
├── src/
│ ├── config/paths.py # 路径配置
│ ├── data/ # 数据处理
│ ├── app/streamlit_app.py # 前端界面
│ ├── training/finetune_lora.py # LoRA微调脚本
│ ├── inference/demo.py # 推理Demo
│ └── evaluation/evaluate.py # 评估脚本
├── models/lora_safety/ # LoRA权重输出目录
├── outputs/
│ └── vqa_representative_samples.json # 24条代表性样本
├── requirements.txt
└── README.md
python -m src.models.download_qwen_model --size 2Bcd D:\vlm
streamlit run src/app/streamlit_app.py --server.port 8502cd D:\vlm
python -m src.training.finetune_lora ^
--model_name Qwen/Qwen2-VL-2B-Instruct ^
--data_path data/vqa/train.jsonl ^
--output_dir models/lora_safety ^
--num_epochs 3 ^
--batch_size 2 ^
--learning_rate 2e-4Base模型推理:
python -m src.inference.demo ^
--image data\raw\helmet\kaggle\images\hard_hat_workers1.png ^
--question "这张图中有哪些安全隐患?"微调模型推理:
python -m src.inference.demo ^
--image data\raw\helmet\kaggle\images\hard_hat_workers1.png ^
--question "这张图中有哪些安全隐患?" ^
--use_finetuned本地模型评估(推荐):
python -m src.evaluation.evaluate ^
--test_data data/vqa/train.jsonl ^
--lora_path models/lora_safety ^
--num_samples 50API快速测试(辅助):
python -m src.evaluation.eval_api --compare --compare_samples 5| 样本输出 | ✅ | 24条代表性VQA样本(JSON) |
src/training/finetune_lora.py- LoRA微调(使用本地模型)src/inference/demo.py- 推理Demo(使用本地模型)src/evaluation/evaluate.py- 评估脚本(使用本地模型,Base vs FT对比)src/evaluation/eval_api.py- API快速测试(辅助工具,仅用于标注)src/app/streamlit_app.py- Streamlit前端
- 基础模型: Qwen2-VL-2B-Instruct
- LoRA配置: Rank=16, Alpha=32, Dropout=0.05
- 训练参数: Epochs=3, Batch=2, LR=2e-4, BF16
- 数据集: 501张图片 → 300条VQA样本