深度学习和目标检测系列教程23-300:fasterrcnn和yolov5训练飞机目标识别的小项目(代码片段)

刘润森! 刘润森!     2022-12-30     176

关键词:

@Author:Runsen

FasterRCNN和yolov5训练飞机目标识别的项目

目标检测算法主要包括:两类two-stage和one-stage

一类是two-stage,two-stage检测算法将检测问题划分为两个阶段,首先产生候选区域(region proposals),然后对候选区域分类(一般还需要对位置精修),这一类的典型代表是R-CNN, Fast R-CNN, Faster R-CNN,Mask R-CNN家族。他们识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景。

另一类方式称为one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLOv5,SSD,RetinaNet等。

FasterRCNN和yolov5可以说是目前最先进的两类算法,本次将使用FasterRCNN和yolov5训练飞机目标识别的项目

数据集来源:从COCO2017 val的图片中随机抽取99张包含飞机类别目标的图片来构成mini-airplane数据集,抽取的代码位于

COCO2017 val 下载地址:https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip

generate_mini_airplane.py 从COCO2017 val的图片中随机抽取99张包含飞机类别目标的图片来构成mini-airplane数据集

FasterRCNN

FasterRCNN相关教程:https://work.datafountain.cn/forum?id=4791&type=1&source=2

文件夹中FasterRCNN

  • coco 官方的文件
  • dataset torch读取数据集
  • model FasterRCNN 预训练模型 修改输出
  • data_split 生成训练集和测试集
(base) ng@ng-Z390:/home/lrs/demo/fastrcnn$ python ./coco/coco_eval.py ../results/val_results.json --ann ../mini_airplane/annotations/val.json

fastrcnn训练测试结果

results/val_vis中存放了fastrcnn模型测试结果






模型保存到models文件夹中。

yolo

yolo相关教程:https://work.datafountain.cn/forum?id=89&type=2&source=1

上面教程基于yolov3,可以参考github上的v5教程。对数据进行相关的处理

由于coco数据存在相关的yolo数据,只需要划分训练集和测试集即可,脚本是yolo_split_data.py,

mini-airplane.yaml

train: ../mini_airplane/ImageSets/Main/train.txt  
val: ../mini_airplane/ImageSets/Main/val.txt
test: ../mini_airplane/ImageSets/Main/test.txt  


# number of classes
nc: 1

# class names
names: ['airplane']

对应模型的yaml文件将80设置为1。

在yolo文件夹中,执行各yolov5模型训练代码

python train.py --img 610 --batch 32 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5s.yaml  --weights weights/yolov5s.pt --name=yolov5s

yolo5s的map非常出乎我的意料,一直保持0.01不动

python train.py --img 610 --batch 16 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5m.yaml  --weights weights/yolov5m.pt --name=yolov5m

yolo5m的map0.5=0.823

 python train.py --img 610 --batch 8 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5l.yaml  --weights weights/yolov5l.pt --name=yolo5l

yolo5l的map0.5=0.9

 python train.py --img 610 --batch 8 --epochs 100 --data data/mini-airplane.yaml --cfg models/yolov5x.yaml  --weights weights/yolov5x.pt --name=yolov5x

yolo5x的map0.5=0.78

下面的测试使用yolo5l 90精确度的模型:测试并保存对应的–save-txt

python detect.py --weights runs/train/yolo5l/weights/best.pt --img 610 --conf 0.4 --source ../mini_airplane/images --save-txt

下面是yolo5l模型测试结果







附上Github:https://github.com/MaoliRUNsen/yolov5-fastercnn

训练模型没有任何价值,Github上传数据大小有限,没有对应模型文件

深度学习和目标检测系列教程19-300:关于目标检测apiou和map简介(代码片段)

@Author:RunsenR-CNN和YOLO等对象检测模型,使用了平均精度(mAP)。mAP将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测就越准确。PrecisionandRecall现在有两个类,Positive和Negative,这里是10个... 查看详情

深度学习和目标检测系列教程13-300:yolo物体检测算法(代码片段)

@Author:RunsenYOLO,是目前速度更快的物体检测算法之一。虽然它不再是最准确的物体检测算法,但当您需要实时检测时,它是一个非常好的选择,而不会损失太多的准确性。YOLO框架在本篇博客中,我将... 查看详情

深度学习和目标检测系列教程21-300:deepsorts测试小车经过的时间和速度(代码片段)

@Author:RunsendeepDeepSortDeepSort是一种用于跟踪目标的模型,为每个目标分配ID,为每一个不同的类别分配label。在DeepSort中,过程如下。使用YOLO计算边界框(检测)使用Sort(卡尔曼滤波器)和ReID... 查看详情

深度学习和目标检测系列教程18-300:关于yolovoc格式标签转化问题(代码片段)

@Author:RunsenPASCALVOC(ThePASCALVisualObjectClasses)是一个世界级的计算机视觉挑战赛,第一届比赛在2005年举办,随后一年举办一次,直到2012年最后一次。PASCAL的全称是PatternAnalysis,StatisticalmodellingandComputAtionalLe 查看详情

深度学习和目标检测系列教程14-300:训练第一个yolov3检测器(代码片段)

@Author:Runsen本次博客参考GIthub项目:https://github.com/qqwweee/keras-yolo3.git在开始之前,请在以下位置克隆!gitclonehttps://github.com/qqwweee/keras-yolo3.git到您的本地机器。确保设置虚拟环境并安装要求Keras2.1.5Tensorfl 查看详情

深度学习和目标检测系列教程22-300:关于人体姿态常见的估计方法(代码片段)

@Author:Runsen姿态估计是计算机视觉中的一项流行任务,比如真实的场景如何进行人体跌倒检测,如何对手语进行交流。作为人工智能(AI)的一个领域,计算机视觉使机器能够以模仿人类视觉为目的来... 查看详情

深度学习和目标检测系列教程12-300:常见的opencv的api和用法总结(上)(代码片段)

@Author:Runsen由于CV需要熟练使用opencv,因此总结了opencv常见的APi和用法。OpenCV(opensourcecomputervision)于1999年正式推出,它来自英特尔的一项倡议。OpenCV的核心是用C++编写的。在Python中,我们只使... 查看详情

深度学习和目标检测系列教程15-300:在python中使用opencv执行yolov3对象检测(代码片段)

@Author:Runsen上次讲了yolov3,这是使用yolov3的模型通过opencv的摄像头来执行YOLOv3对象检测。导入所需模块:importcv2importnumpyasnpimporttime让我们定义一些我们需要的变量和参数:CONFIDENCE=0.5SCORE_THRESHOLD=0.5IOU_ 查看详情

深度学习和目标检测系列教程15-300:在python中使用opencv执行yolov3对象检测(代码片段)

@Author:Runsen上次讲了yolov3,这是使用yolov3的模型通过opencv的摄像头来执行YOLOv3对象检测。导入所需模块:importcv2importnumpyasnpimporttime让我们定义一些我们需要的变量和参数:CONFIDENCE=0.5SCORE_THRESHOLD=0.5IOU_ 查看详情

深度学习和目标检测系列教程10-300:通过torch训练第一个faster-rcnn模型(代码片段)

@Author:Runsen上次介绍了Faster-RCNN模型,那么今天就开始训练第一个Faster-RCNN模型。本文将展示如何在水果图像数据集上使用Faster-RCNN模型。代码的灵感来自此处的Pytorch文档教程和Kagglehttps://pytorch.org/tutorials/intermediate/torc... 查看详情

深度学习和目标检测系列教程20-300:opencv与图像处理:霍夫变换技术实现直线检测(代码片段)

@Author:Runsen霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。这张图里面有一条看起来挺直的线ÿ... 查看详情

深度学习和目标检测系列教程20-300:opencv与图像处理:霍夫变换技术实现直线检测(代码片段)

@Author:Runsen霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。这张图里面有一条看起来挺直的线ÿ... 查看详情

深度学习和目标检测系列教程11-300:小麦数据集训练faster-rcnn模型(代码片段)

@Author:Runsen上次训练的Faster-RCNN的数据格式是xml和jpg图片提供,在很多Object-Detection中,数据有的是csv格式,数据集来源:https://www.kaggle.com/c/global-wheat-detectionwidth和heigth是图片的长和宽,b 查看详情

深度学习和目标检测系列教程16-300:通过全球小麦数据集训练第一个yolov5模型(代码片段)

@Author:Runsen之前的检测系统重新利用分类器或定位器来执行检测,将模型应用于多个位置和比例的图像。Yolo使用了一种完全不同的方法。它将单个神经网络应用于完整图像。该网络将图像划分为多个区域并预测每个... 查看详情

深度学习和目标检测系列教程17-300:3个类别面罩检测类别数据集训练yolov5s模型(代码片段)

@Author:RunsenYOLO是目前最火爆的的计算机视觉算法之一,今天使用的数据集来源:https://www.kaggle.com/andrewmvd/face-mask-detection这是数据集可以创建一个模型来检测戴口罩、不戴口罩或不正确戴口罩的人。该数据集包含... 查看详情

目标检测——深度学习下的小目标检测(检测难的原因和tricks)

小目标难检测原因主要原因(1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素大小,导致设计的... 查看详情

深度学习和目标检测系列教程21-300:deepsorts测试小车经过的时间和速度(代码片段)

@Author:RunsendeepDeepSortDeepSort是一种用于跟踪目标的模型,为每个目标分配ID,为每一个不同的类别分配label。在DeepSort中,过程如下。使用YOLO计算边界框(检测)使用Sort(卡尔曼滤波器)和ReID... 查看详情

深度学习和目标检测系列教程18-300:关于yolovoc格式标签转化问题(代码片段)

@Author:RunsenPASCALVOC(ThePASCALVisualObjectClasses)是一个世界级的计算机视觉挑战赛,第一届比赛在2005年举办,随后一年举办一次,直到2012年最后一次。PASCAL的全称是PatternAnalysis,StatisticalmodellingandComputAtionalLearning࿰... 查看详情