热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

YOLOv3训练自己的数据集实现目标检测

YOLO的全称是YouOnlyLookOnce,是最早出现的单阶段目标检测方法,也是第一个实现了实时目标检测的方法。计算机视觉领域主要包括两大方面:图像分类、目标检测。图像分类是指

YOLO的全称是You Only Look Once,是最早出现的单阶段目标检测方法,也是第一个实现了实时目标检测的方法。计算机视觉领域主要包括两大方面:图像分类、目标检测。图像分类是指根据图像的语义信息将不同类别的图像区分开来,比如人脸识别,即模型输入一张图片,判断该图片属于某个类别。

YOLOv3训练自己的数据集实现目标检测

YOLO是一个国外开源的目标检测算法,目前流行的YOLO算法分为三个版本,即YOLOv1、YOLOv2、YOLOv3,YOLO的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box(边界)的位置及所属类别。 

YOLO的整体结构如下:

YOLOv3训练自己的数据集实现目标检测

该网络是根据GoogLeNet改进的,输入图片为448*448大小,输出为7×7×(2×5+20)。将原始图片分为S×S个单元格,之后的输出是以单元格为单位进行的。如果一个object的中心落在某个单元格上,那么这个单元格负责预测这个物体。每个单元格需要预测B个box值(box值包括坐标和宽高),同时为每个box值预测一个置信度(confidence scores)。也就是每个单元格需要预测B×(4+1)个值。每个单元格需要预测C(物体种类个数)个条件概率值。所以,最后网络的输出维度为S×S×(B×5+C),这里虽然每个单元格负责预测一种物体,但是每个单元格可以预测多个box值。

那么如何利用YOLOv3训练自己的模型呢?

首先需要一批图片数据,比如以下数据:

YOLOv3训练自己的数据集实现目标检测

图片包括100张猫狗两种类型的图片。其次需要对这批图片进行label的制作,即某张图片的猫在哪里、狗在哪里、利用Labellmg等工具进行label的制作。

YOLOv3训练自己的数据集实现目标检测

点击save后会生成以xml结尾的label文件,内容如下:

YOLOv3训练自己的数据集实现目标检测

由于该图片中只包含两个关键目标,即只有两个object,并存储相对应的object的坐标,到此已经初步生成了图片的label。

其次,将数据划分为训练集、测试集、验证集,执行以下脚本:

YOLOv3训练自己的数据集实现目标检测

最后,将.xml数据转化为YOLO需要的VOC数据,执行以下脚本:

YOLOv3训练自己的数据集实现目标检测

在数据准备完成后,即可进行模型训练。

操作系统:MacOS 10.15.6

Python:3.7.6

Tensorflow:1.13

Keras:2.15

OpenCV:4.3.0

部分训练代码如下:

YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测在训练完成后,会在logs文件下生产模型的权重文件及神经网络模型结构可视化文件等,部分模型结构如下:

YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测模型测试效果如下:

 

YOLOv3训练自己的数据集实现目标检测YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测YOLOv3训练自己的数据集实现目标检测

YOLOv3训练自己的数据集实现目标检测YOLOv3训练自己的数据集实现目标检测

 


推荐阅读
author-avatar
栗子丶子兮_481
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有