作者:人工智能_SYBH

基于PaddleDetection实现野生动物检测YOLOv5

基于PaddleDetection实现的野生动物检测

一、项目简介

AI达人特训营第二期

1.1 项目背景

我国是全球野生动物种类最丰富的国家之一,其中大熊猫等上百种珍贵、濒危野生动物为我国所特有。随着社会发展,相关数据显示,我国野生动物的灭绝速率呈上升趋势,越来越多的物种面临着生存危机。随着深度学习的高速发展,目标检测在各个领域广泛应用,我们是不是也能借助这种方法识别到野生动物,来保护、拯救珍贵、濒危野生动物,保护、发展和合理利用野生动物资源。

1.2 项目目的

本项目基于PaddleDetection使用ppyolov5实现野生动物检测,具有较高的精度可用于动物保护。

二、模型简介

2.1 PaddleDetection

PaddleDetection为基于飞桨PaddlePaddle的端到端目标检测套件,内置30+模型算法及300+预训练模型,覆盖目标检测、实例分割、跟踪、关键点检测等方向,其中包括服务器端和移动端高精度、轻量级产业级SOTA模型、冠军方案和学术前沿算法,并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。

2.2 Yolov5

YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。大家对YOLOv5算法的创新性半信半疑,有的人对其持肯定态度,有的人对其持否定态度。在我看来,YOLOv5检测算法中还是存在很多可以学习的地方,虽然这些改进思路看来比较简单或者创新点不足,但是它们确定可以提升检测算法的性能。其实工业界往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。本文通过YOLOv5检测算法来实现野生动物目标检测。

基础模型

三、数据准备

3.1 数据集获取

该数据集属于土耳其共和国森林和水务部,并经许可共享。它包含各种种类和大小的动物。2585 张图片包含动物(有些包含多只动物),1420 张图片不包含任何动物。图像尺寸从 1024x1280 到 2448x3264 不等。大约一半的图像是在夜间拍摄的,而另一半是在白天拍摄的。

3.2 数据集处理

3.2.1 处理为voc格式

图像注释采用PASCAL VOC注释(.xml)文件的形式。如果.xml文件中不存在对象标签,则意味着该图像中不存在动物。

处理教程:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/docs/tutorials/PrepareDataSet.md

用户数据集转成VOC数据后目录结构如下(注意数据集中路径名、文件名尽量不要使用中文,避免中文编码问题导致出错)

dataset/xxx/
├── annotations
│   ├── xxx1.xml
│   ├── xxx2.xml
│   ├── xxx3.xml
│   |   ...
├── images
│   ├── xxx1.jpg
│   ├── xxx2.jpg
│   ├── xxx3.jpg
│   |   ...
├── label_list.txt (必须提供,且文件名称必须是label_list.txt )
├── train.txt (训练数据集文件列表, ./images/xxx1.jpg ./annotations/xxx1.xml)
└── valid.txt (测试数据集文件列表)

该项目已下载好数据集,并将数据集进行训练集:测试集=8:2的划分。 该模型为但单标签图像分类,所以数据集包含object这一个类

3.2.2 数据解压

首先进入数据集目录

In [1]

%cd data/data180216 
/home/aistudio/data/data180216

In [2]

%ls
dataset.zip*

In [ ]

#解压数据集
!unzip dataset.zip
3.2.3 数据配置

将解压的数据集dataset目录下的内容移到/home/aistudio/work/PaddleYOLO-release-2.5/dataset/voc目录下

在该目录下新建一个label_list.txt,输入类别名称:object

最终数据集目录

四、模型训练

  1. 从/home/aistudio/work/PaddleYOLO-release-2.5/configs目录中找到想要的模型,这里使用VOC标注,则只能用VOC模型。
  2. 本文使用yolov5_s_60e_voc.yml, 则需要修改两个文件:

打开该文件/home/aistudio/work/PaddleYOLO-release-2.5/configs/datasets/voc.yml

修改为如下配置,num_classes为数据集中标签类别

由于本数据集只有野生动物这一个类,则num_classes为1

metric: VOC
map_type: 11point
num_clas
lock