YOLO v5学习之数据集的标定及训练

1、首先下载数据集标定工具labelImg

LabelImg数据集标定工具的下载地址:https://github.com/tzutalin/labelImg

labelImg的安装

首先安装labelImg所需要的依赖。

Ubuntu Linux
Python 3 + Qt5

sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3

macOS
Python 3 + Qt5

brew install qt  # Install qt-5.x.x by Homebrew
brew install libxml2

or using pip

pip3 install pyqt5 lxml # Install qt and lxml by pip

make qt5py3

其他系统参考官网:https://github.com/tzutalin/labelImg

2、数据集的标定

首先进入labelImg的文件夹内,然后直接运行labelImg.py文件即可。

cd labelImg
python labelImg.py

之后会出现以下这个界面表示工具运行成功。
在这里插入图片描述
对于一个物体来说,数据集越多,最终训练出来的模型效果会更好。

把所有的图片标定完成后,就会得到一个与images图片同名的labels的txt。

如下图所示:
原始的images图片数据集。
在这里插入图片描述
标定完成的labels标签。
在这里插入图片描述

3、建立yolo v5训练的数据集

数据集的文件结构为

boat_data
├── data.yaml
├── train
│   ├── images
│   │   ├── zuo1.png
│   │   ├── zuo10.png
│   │   ├── zuo100.png
│   │   ├── zuo101.png
│   │   ├── zuo102.png
│   │   ├── zuo103.png
│   │   ├── zuo104.png
│   │   ├── zuo105.png
....
....
....
│       ├── zuo94.txt
│       ├── zuo95.txt
│       ├── zuo96.txt
│       ├── zuo97.txt
│       ├── zuo98.txt
│       └── zuo99.txt
└── val
    ├── images
    │   ├── zuo1.png
    │   ├── zuo2.png
    │   ├── zuo3.png
....
....
....
    │   ├── zuo7.png
    │   └── zuo8.png
    └── labels
        ├── zuo1.txt
        ├── zuo2.txt
        ├── zuo3.txt
....
....
....
        ├── zuo7.txt
        └── zuo8.txt

6 directories, 351 files

train文件夹中imageslabels是训练集。
val文件夹中imageslabels是测试集。

data.yaml文件是需要更改的。
内容一般为一下所示(以boat举例):

train: ../boat_data/train/images #训练集的目录
val: ../boat_data/val/images #测试集的目录

nc: 1 #标定的物品的个数
names: ['boat'] #标定物品的名称,如有多个,按标定的顺序依次排序,中间使用“,”隔开。

4、yolo v5数据集的训练

注意,要把数据集放在与yolov5源码文件的相同的目录下!
在YOLO v5的目录下运行一下代码:

python train.py  --img 640 --batch 80 --epochs 3 --data ../boat_data/data.yaml --cfg yolov5s.yaml   --weights yolov5s.pt --nosave --cache

注意修改yolov5s.yaml文件中的nc为标定目标的个数。

运行以上代码后,训练完成后,出现以下情况说明模型训练成功,得到数据集last.pt
至此数据集就训练完成了。
在这里插入图片描述

### 无人机目标检测与语义分割的技术概述 在无人机遥感影像处理领域,目标检测和语义分割是两个核心任务。对于目标检测而言,主要目的是识别并定位图像中的特定对象;而对于语义分割,则是对图像中的每一个像素赋予类别标签。 #### 使用PyTorch框架进行深度学习实践 基于PyTorch的深度学习模型被广泛应用于无人机遥感影像的目标检测、地物分类以及语义分割实践中[^1]。这类应用通常依赖卷积神经网络(CNN),特别是那些专门为解决此类问题设计的架构,比如U-Net用于语义分割,Faster R-CNN或YOLO系列用于目标检测。 #### 数据准备与预处理 有效的数据集对于训练高质量的机器学习模型至关重要。例如,在研究和优化无人机配送技术方面,存在专门为此目的建立的数据集——如UAV Delivery数据集,它不仅提供了丰富的场景样本,还涵盖了不同天气条件下的多样化实例,有助于提升模型泛化能力[^2]。 #### 关键组件和技术细节 构建高效的双目视觉系统来完成高精度的任务,涉及到多个重要环节: - **相机标定**:确保获取到准确的空间坐标信息。 - **图像处理**:增强特征提取效果。 - **深度估计**:通过立体匹配算法计算物体间的相对位置关系。 - **目标检测算法**:采用先进的实时性较强的方案,如YOLOv5等。 这些组成部分共同作用以达成最终的功能需求[^3]。 #### 开源资源支持 为了便于开发者快速上手开发工作,社区内有许多开源项目可供借鉴。例如,“基于YOLO v5的维修工具检测识别系统”,该项目包含了完整的Python源码、图形用户界面(PyQt5)搭建指南及相关数据集分享等内容,极大地降低了入门门槛[^4]。 ```python import torch from torchvision import models, transforms from PIL import Image # 加载预训练模型 model = models.detection.fasterrcnn_resnet50_fpn(pretrained=True) def detect_objects(image_path): transform = transforms.Compose([transforms.ToTensor()]) image = Image.open(image_path).convert('RGB') img_tensor = transform(image) prediction = model([img_tensor]) boxes = prediction[0]['boxes'].detach().numpy() labels = prediction[0]['labels'].detach().numpy() return boxes, labels ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iNBC

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值