一、标注工具labelimg的安装与使用


什么是labelimg

labelimg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用Python写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。其注释以 PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持COCO数据集格式,即以 YOLO格式保存为TXT文件


安装labelimg

在cmd下面输入

pip install labelimg

不会翻墙可以换源

pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

然后等待其自动帮你安装labelimg以及lxml和pyqt5即可

结束后,在cmd中输入labelimg

labelimg

等一会就会出现labelimg界面如下图所示:


初识labelimg

接下来打开需要标注的图片文件夹

并设置标注文件保存的目录

接下来就开始标注:先将格式切换为YOLO,然后画框,标记目标的label,ctrl+s保存后,然后d切换到下一张继续标注,不断重复重复



labelimg的快捷键


标注结果展示

YOLO格式最终标注后保存的文件格式为txt文件。

除与原图片同名的txt文件外还有一个一个名为“classes.txt”的文件也保存到该文件夹中。

①“classes.txt”定义了你的 YOLO 标签所引用的类名列表。

②具体的标注文件中每一行表示一个目标,以空格进行区分,分别表示目标的类别id,归一化处理之后的中心点x坐标、y坐标、目标框的w和h

数据说明

在使用YOLOv8进行目标检测时,每个图像都伴随一个.txt文件,该文件包含了关于图像中对象的标注信息。这些.txt文件中的每一行都代表图像中的一个对象,包含以下信息:

1.类别ID:这是一个整数,代表了对象所属的类别。例如,如果你的数据集有“人”、“车”和“狗”三个类别,那么可能分别用0、1和2来表示这些类别。

2.中心X坐标:这是一个归一化后的值,代表对象边界框中心的X坐标(水平方向)。这个值是相对于整个图像宽度的比例。

3.中心Y坐标:这是一个归一化后的值,代表对象边界框中心的Y坐标(垂直方向)。这个值是相对于整个图像高度的比例。

4.边界框宽度:这也是一个归一化后的值,代表对象边界框的宽度。这个值是相对于整个图像宽度的比例。

5.边界框高度:这同样是一个归一化值,代表对象边界框的高度。这个值是相对于整个图像高度的比例。

举例来说,如果一个.txt文件中的一行是1 0.5 0.5 0.2 0.3,这意味着该对象属于类别1(例如“puzzled”),其边界框的中心位于图像中心(X和Y坐标均为0.5),边界框的宽度是图像宽度的20%,高度是图像高度的30%。

二、YOLOv8环境安装配置


yolov8源码下载地址:

GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

yolov8使用文档:

Home - Ultralytics YOLOv8 Docs


1.前期准备+所需环境配置

1.1 虚拟环境创建

先用conda prompt创建一个虚拟环境,取名yolov8, python版本用3.8.18

conda create -n yolov8 python=3.8.18

1.2 虚拟环境配置

在项目的根目录下打开conda命令行,使用conda activate yolov8 命令激活虚拟环境,接下来的操作都在虚拟环境下

安装requirements.txt
pip install -r requirements.txt

注意:新版yolov8项目文件已经没有了requirements.txt文件,需要我们手动添加,在项目的根目录下创建requirements.txt文件,内容复制粘贴下面的内容:

# Ultralytics requirements
# Usage: pip install -r requirements.txt

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.64.0

# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

# Export --------------------------------------
# coremltools>=6.0,<=6.2 # CoreML export
# onnx>=1.12.0 # ONNX export
# onnxsim>=0.4.1 # ONNX simplifier
# nvidia-pyindex # TensorRT export
# nvidia-tensorrt # TensorRT export
# scikit-learn==0.19.2 # CoreML quantization
# tensorflow>=2.4.1 # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0 # TF.js export
# openvino-dev>=2023.0 # OpenVINO export

# Extras --------------------------------------
psutil  # system utilization
py-cpuinfo  # display CPU info
# thop>=0.1.1 # FLOPs computation
# ipython # interactive notebook
# albumentations>=1.0.3 # training augmentations
# pycocotools>=2.0.6 # COCO mAP
# roboflow
安装代码运行所需的ultralytics和yolo包
pip install ultralytics
pip install yolo

1.3 预训练权重下载

源码下载界面中的readme文件中往下翻,找到yolovn8的预训练权重,点击下载,然后把下载好的文件放在项目代码的根目录下。

1.4验证环境配置是否成功

复制下面的代码来验证一下是否可以运行

yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg'

运行命令后可以实现检测,结果保存在runs->detect->predict文件夹下

打开图片可以看到已经完成了目标框和类别概率的显示和绘制。


参考文章

【目标检测】YOLOv8:快速上手指南

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。