yolov7 labelme训练全过程
时间: 2025-03-05 10:47:00 浏览: 69
### 使用 LabelMe 进行数据标注及 YOLOv7 模型训练的完整流程
#### 准备工作
为了顺利进行YOLOv7模型的训练,需先准备好所需的软件环境和工具。这包括但不限于Python及其相关库、Git用于获取源码仓库等。
#### 安装并运行 LabelMe 工具
LabelMe 是一款强大的开源图像标注工具,支持多种类型的视觉任务,如目标检测、语义分割等[^3]。对于初次使用者来说,建议按照官方文档指导完成安装过程:
1. **创建 Python 虚拟环境**
```bash
pip install virtualenv
virtualenv venv_labelme
source venv_labelme/bin/activate # Linux/MacOS 或者 `venv_labelme\Scripts\activate` Windows下
```
2. **通过 pip 安装最新版本的 LabelMe**
```bash
pip install labelme
```
此时可以启动图形界面版的标注程序:
```bash
labelme
```
#### 数据集构建与转换
当收集了一定量的手动标记样本之后,下一步就是将这些由 LabelMe 导出成 JSON 格式的标签信息转化为适合 YOLOv7 输入格式的数据集。具体操作如下:
##### 将 LabelMe 的 JSON 文件转为 YOLO 格式
由于 YOLO 系列算法采用特定的文字描述方式来表示边界框位置,因此需要编写脚本实现从 JSON 至 TXT 文档之间的批量转化。这里提供一段简单的 Python 实现作为参考:
```python
import os
from pathlib import Path
import json
def convert_labels(json_file, output_dir):
with open(json_file) as f:
data = json.load(f)
img_width = int(data['imageWidth'])
img_height = int(data['imageHeight'])
out_filename = Path(output_dir).joinpath(Path(json_file).stem + '.txt')
shapes = []
for shape in data["shapes"]:
points = shape["points"]
x_min = min([p[0] for p in points])
y_min = min([p[1] for p in points])
x_max = max([p[0] for p in points])
y_max = max([p[1] for p in points])
center_x = (x_min+x_max)/2 / img_width
center_y = (y_min+y_max)/2 / img_height
width = abs(x_max-x_min) / img_width
height = abs(y_max-y_min) / img_height
class_id = 0 # 如果有多个类别,则根据实际情况调整此处逻辑
line = "{} {} {} {} {}\n".format(class_id, center_x, center_y, width, height)
shapes.append(line)
with open(out_filename,'w') as file_out:
file_out.writelines(shapes)
if __name__ == '__main__':
input_folder = './annotations/' # 存放JSON文件的位置
output_folder = './labels/'
if not os.path.exists(output_folder):
os.makedirs(output_folder)
files = [f for f in os.listdir(input_folder)]
for filename in files:
if ".json" in filename.lower():
try:
convert_labels(os.path.join(input_folder,filename),output_folder)
except Exception as e:
print(e)
```
这段代码会读取指定目录下的所有 `.json` 文件,并将其对应的标注信息保存至同一级别的 `./labels/` 文件夹内,每张图片对应一个文本文件记录其上的物体坐标。
#### 配置 YAML 文件
为了让 YOLOv7 正确识别自定义数据集,在开始训练之前还需要编辑相应的配置文件(`.yaml`)。此文件通常位于项目根路径下的 `data/custom.yaml` 中,内容大致如下所示:
```yaml
train: ./images/train/
val: ./images/valid/
nc: 1 # 类别数量
names: ['object'] # 各类别的名称列表
```
请注意修改上述模板中的路径参数以匹配实际存储结构。
#### 开始训练
最后一步便是调用预编译好的命令来进行网络权重更新迭代直至收敛。假设已经克隆了官方 GitHub 库并且激活了正确的 conda/python env ,那么可以在终端执行下面这条指令开启一轮完整的实验周期:
```bash
cd yolov7
python train.py --workers 8 --device 0 --batch-size 16 \
--cfg cfg/training/yolov7-custom.cfg --weights '' \
--data data/custom.yaml --epochs 300 --img-size 640
```
以上即是从零起步利用 LabelMe 和 YOLOv7 构建个性化计算机视觉解决方案的大致步骤概述[^1][^2]。
阅读全文
相关推荐
















