# logo **Repository Path**: limengwe/logo ## Basic Information - **Project Name**: logo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 保险公司Logo识别项目 ## 项目概述 本项目基于YOLOv8实现保险公司Logo识别,包含完整的图片批处理、模型训练、自动标注和标注审核工作流程。 ## 环境准备 ### 依赖安装 ```bash # 安装PyTorch(根据CUDA版本选择合适的安装命令) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # 安装Ultralytics YOLOv8 pip install ultralytics # 安装其他依赖 pip install pillow ``` ## 脚本功能和使用说明 ### 1. 图片批处理脚本 - `image_batch_processor.py` **功能**:遍历指定目录下的所有图片,将其转换为JPG格式并以时间戳命名。 **使用方法**: ```bash python image_batch_processor.py <输入目录路径> [输出目录路径] ``` **参数说明**: - `<输入目录路径>`:必填,需要处理的图片所在目录 - `[输出目录路径]`:可选,转换后图片的保存目录,默认为输入目录下的`output`文件夹 **示例**: ```bash # 输出目录默认为 input_dir/output python image_batch_processor.py data/raw_images # 自定义输出目录 python image_batch_processor.py data/raw_images data/converted_images ``` ### 2. 模型训练脚本 - `train_logo_model.py` **功能**:使用YOLOv8训练保险公司Logo识别模型。 **使用方法**: ```bash python train_logo_model.py [参数] ``` **主要参数说明**: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--model` | str | `yolov8n.pt` | 基础模型权重文件 | | `--data` | str | `data/mini_data/logo_data.yaml` | 数据集配置文件路径 | | `--epochs` | int | 50 | 训练轮数 | | `--batch` | int | 16 | 批量大小 | | `--imgsz` | int | 640 | 输入图片尺寸 | | `--lr0` | float | 0.01 | 初始学习率 | | `--device` | str | `cpu` | 训练设备,如cpu, 0, 0,1 | | `--name` | str | `logo_detection` | 训练结果保存名称 | | `--exist-ok` | bool | False | 是否允许覆盖已有结果 | **示例**: ```bash # 基本训练 python train_logo_model.py # 自定义训练轮数和批量大小 python train_logo_model.py --epochs 100 --batch 32 # 使用GPU训练 python train_logo_model.py --device 0 # 覆盖已有训练结果 python train_logo_model.py --exist-ok ``` ### 3. 自动标注脚本 - `auto_annotate.py` **功能**:使用训练好的YOLOv8模型对图片进行自动标注,生成YOLO格式的标注文件。 **使用方法**: ```bash python auto_annotate.py --model <模型文件> --source <图片目录> [参数] ``` **主要参数说明**: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--model` | str | 必填 | YOLOv8模型权重文件路径 | | `--source` | str | 必填 | 源图片目录路径 | | `--output` | str | `data/auto_data` | 标注结果保存目录 | | `--conf` | float | 0.5 | 预测置信度阈值 | | `--iou` | float | 0.5 | NMS IoU阈值 | | `--device` | str | `cpu` | 推理设备,如cpu, 0, 0,1 | | `--save-img` | bool | True | 是否保存标注后的图片 | | `--save-txt` | bool | True | 是否保存YOLO格式的标注文件 | | `--exist-ok` | bool | True | 是否允许覆盖已有结果 | **示例**: ```bash # 基本自动标注 python auto_annotate.py --model runs/detect/logo_detection/best.pt --source data/raw_images # 自定义置信度阈值和输出目录 python auto_annotate.py --model runs/detect/logo_detection/best.pt --source data/raw_images --conf 0.7 --output data/custom_auto_data # 使用GPU推理 python auto_annotate.py --model runs/detect/logo_detection/best.pt --source data/raw_images --device 0 ``` ### 4. 标注审核脚本 - `audit_annotations.py` **功能**:将手动审核后保留的图片和标注数据合并到最终数据集目录。 **使用方法**: ```bash python audit_annotations.py [参数] ``` **主要参数说明**: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--input` | str | `data/auto_data` | 待审核数据目录 | | `--output` | str | `data/final_data` | 最终数据保存目录 | | `--annotated-dir` | str | `annotated_images` | 标注后图片子目录名称 | | `--no-prompt` | bool | False | 跳过手动审核提示,直接执行 | | `--dry-run` | bool | False | 模拟运行,不实际复制文件 | | `--exist-ok` | bool | True | 是否允许覆盖已有结果 | **审核流程**: 1. 脚本会提示用户手动审核`annotated_images`目录中的图片 2. 用户删除标注错误的图片(仅需删除标注后图片,原始图片和标注文件会自动匹配) 3. 审核完成后,脚本将保留的图片和对应标注合并到`final_data`目录 **示例**: ```bash # 交互式审核 python audit_annotations.py # 跳过审核提示,直接执行 python audit_annotations.py --no-prompt # 模拟运行,不实际复制文件 python audit_annotations.py --dry-run --no-prompt # 自定义输入和输出目录 python audit_annotations.py --input data/custom_auto_data --output data/custom_final_data ``` ### 5. 最终模型训练脚本 - `train_final_model.py` **功能**:使用`final_data`数据集训练最终的保险公司Logo识别模型。 **使用方法**: ```bash python train_final_model.py [参数] ``` **主要参数说明**: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--model` | str | `yolov8n.pt` | 基础模型权重文件 | | `--data` | str | `data/final_data/logo_final_data.yaml` | 数据集配置文件路径 | | `--epochs` | int | 100 | 训练轮数 | | `--batch` | int | 16 | 批量大小 | | `--imgsz` | int | 640 | 输入图片尺寸 | | `--lr0` | float | 0.01 | 初始学习率 | | `--device` | str | `cpu` | 训练设备,如cpu, 0, 0,1 | | `--name` | str | `final_logo_detection` | 训练结果保存名称 | | `--exist-ok` | bool | False | 是否允许覆盖已有结果 | **示例**: ```bash # 基本训练(使用final_data数据集) python train_final_model.py # 自定义训练轮数和批量大小 python train_final_model.py --epochs 150 --batch 32 # 使用GPU训练 python train_final_model.py --device 0 # 覆盖已有训练结果 python train_final_model.py --exist-ok ``` ## 工作流程示例 ### 完整工作流程 1. **图片批处理**:将原始图片转换为统一格式 ```bash python image_batch_processor.py data/raw_images data/converted_images ``` 2. **模型训练**:使用初始标注数据训练模型 ```bash python train_logo_model.py --data data/mini_data/logo_data.yaml --epochs 50 ``` 3. **自动标注**:使用训练好的模型对新图片进行自动标注 ```bash python auto_annotate.py --model runs/detect/logo_detection/best.pt --source data/converted_images ``` 4. **手动审核**:查看`data/auto_data/annotated_images`目录中的图片,删除标注错误的图片 5. **合并审核结果**:将审核后的图片和标注数据合并到最终数据集 ```bash python audit_annotations.py ``` 6. **最终模型训练**:使用final_data数据集训练最终模型 ```bash python train_final_model.py ``` ## 目录结构 ``` logo/ ├── data/ # 数据目录 │ ├── mini_data/ # 初始训练数据 │ │ ├── images/ # 图片 │ │ ├── labels/ # 标注文件 │ │ └── logo_data.yaml # 数据集配置文件 │ ├── auto_data/ # 自动标注结果 │ │ ├── images/ # 原始图片 │ │ ├── labels/ # 自动生成的标注文件 │ │ ├── annotated_images/ # 带标注的图片(用于手动审核) │ │ └── audit/ # 审核数据 │ └── final_data/ # 最终数据集 │ ├── images/ # 最终图片 │ ├── labels/ # 最终标注文件 │ ├── annotated_images/ # 最终标注图片 │ └── logo_final_data.yaml # 最终数据集配置文件 ├── runs/ # 训练和预测结果 │ └── detect/ # 检测结果 │ ├── logo_detection/ # 初始模型训练结果 │ └── final_logo_detection/ # 最终模型训练结果 ├── image_batch_processor.py # 图片批处理脚本 ├── train_logo_model.py # 初始模型训练脚本 ├── train_final_model.py # 最终模型训练脚本 ├── auto_annotate.py # 自动标注脚本 ├── audit_annotations.py # 标注审核脚本 └── yolov8n.pt # YOLOv8基础模型 ``` ## 注意事项 1. **模型训练**: - 确保数据集配置文件`logo_data.yaml`中的路径正确 - 根据硬件情况调整`--batch`和`--workers`参数 - 首次训练时,YOLOv8会自动下载预训练权重 2. **自动标注**: - 模型权重文件必须为YOLOv8格式(.pt文件) - 可通过调整`--conf`参数控制标注的严格程度 - 自动标注结果需要手动审核,确保标注质量 3. **标注审核**: - 仅需删除`annotated_images`目录中标注错误的图片,原始图片和标注文件会自动匹配 - 审核后的图片数量应与最终数据集数量一致 4. **硬件要求**: - 建议使用GPU加速训练和推理,可大幅提高速度 - CPU训练和推理速度较慢,适合小数据集测试 ## 常见问题 ### 1. 训练时出现"CUDA out of memory"错误 **解决方案**: - 减小批量大小`--batch` - 减小输入图片尺寸`--imgsz` - 使用CPU训练`--device cpu` ### 2. 自动标注时未生成标注文件 **解决方案**: - 检查模型权重文件是否正确 - 降低置信度阈值`--conf` - 确保源图片目录中包含图片文件 ### 3. 审核脚本报错"目录已存在" **解决方案**: - 使用`--exist-ok`参数允许覆盖已有目录 - 手动删除已有目录后重新运行 ## 更新日志 - 2026-01-18:初始版本,包含图片批处理、模型训练、自动标注和标注审核功能 - 支持YOLOv8模型训练和推理 - 实现完整的自动标注工作流程 - 支持交互式和非交互式标注审核 - 添加`train_final_model.py`脚本,用于训练最终模型 - 添加`data/final_data/logo_final_data.yaml`配置文件,用于final_data数据集 - 更新工作流程,包含最终模型训练步骤 - 完善目录结构文档 ## 许可证 本项目采用MIT许可证。