yolov5 物体检测快速入门

举报
jackwangcumt 发表于 2021/12/05 22:12:24 2021/12/05
【摘要】 物体检测( object detection)是当前计算机视觉领域非常经典的问题之一,其任务是用算法和模型去识别图片或者视频当中的物体类别,并可以用框去标注图片中物体的位置。本文通过简单的步骤实现了基于yolov5算法的物体检测示例。

1 物体检测概述


       根据百度百科定义,物体检测( object detection)是当前计算机视觉领域非常经典的问题之一,其任务是用算法和模型去识别图片或者视频当中的物体类别,并可以用框去标注图片中物体的位置。目前随着技术的快速发展,目前的物体检测算法已经从传统的人工特征选择+分类器的算法,发展到基于深度学习(Deep Learning)的检测算法,通过海量的数据训练,物体检测效果变得愈加成熟。

      根据相关研究,人类所接触的外界信息大约有80%属于视觉信息。对人类来说,图像给出了客观事物的准确且直观的描述,是人类最主要的信息来源,自古就有眼见为实,耳听为虚的说法。而物体检测场景融合了图像处理、模式识别、人工智能等领域的前沿技术,在智能安防、智能监控、工业检测等非常多的领域都得到了广泛的应用。

2 yolov5概述


      经过多年的探索和研究,目前物体检测算法大致分类为:帧间差分法、背景建模法、点检测法、图像分割法、聚类分析法和运动矢量场法。其中,帧差法和背景建模法是最常用、最简单的算法,但这两种算法在背景相对静止的情况下,进行物体检测才适用。而基于深度学习的物体检测算法包含两阶段检测算法,如R-CNN、Fast R-CNN 和 Faster R-CNN等,以及一阶段检测算法,如YOLO和SSD。其中的YOLO算法有很多版本,如YOLOv2、YOLOv3、YOLOv4和YOLOv5等。

     YOLO算法是You Only Look Once的缩写,从字面上理解就是只需要看一次就可以进行识别,这样先对于两阶段算法而言,YOLO算法的执行速度就显得很快。根据相关测算,YOLO算法可以达到45帧每秒的处理速度。关于YOLO算法的实现,可以参考官网 https://github.com/ultralytics/yolov5 ,当前YOLOv5已经可以使用。

3 yolov5 安装


      这里基于Windows 10操作系统,已经成功安装了Python 3.7.9 ,且 可以使用pip工具(pip 21.3.1)。首先我们可以访问官网 https://github.com/ultralytics/yolov5 按照官方的步骤进行快速入门。首先下载源码,并安装依赖,执行如下命令即可:

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt

    其中的requirements.txt 文件记录了依赖的文件包以及版本要求,具体如下所示:

# pip install -r requirements.txt

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
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.41.0

# Logging -------------------------------------
tensorboard>=2.4.1
# wandb

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

# Export --------------------------------------
# coremltools>=4.1  # CoreML export
# onnx>=1.9.0  # ONNX export
# onnx-simplifier>=0.3.6  # ONNX simplifier
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1  # TFLite export
# tensorflowjs>=3.9.0  # TF.js export

# Extras --------------------------------------
# albumentations>=1.0.3
# Cython  # for pycocotools https://github.com/cocodataset/cocoapi/issues/172
# pycocotools>=2.0  # COCO mAP
# roboflow
thop  # FLOPs computation

     如果自动安装失败,可以尝试按照上述清单自行安装。其实,体验YOLOv5最快的方法就是从官网下载已经训练好的权重文件,这样就免去我们自行去搜集素材来进行个性化训练了,训练过程往往非常耗时。 官方提供了多种规格的权重模型文件,下载地址如下:
     https://github.com/ultralytics/yolov5/releases 1.png

    这里我们可以根据需要,自行下载权重文件,这些文件可以拿来直接进行YOLOv5物体检测的体验。我们可以将yolov5s.pt文件下载到yolov5目录中。下面给出一个简单的物体检测示例,具体的代码如下所示:

# https://github.com/ultralytics/yolov5
import torch
from torch._C import device
# 模型加载
model = torch.hub._load_local('.', 'yolov5s', pretrained=True)
# 图片
img = './demo/data/zidane.jpg'
# 推理
results = model(img)
# 查看对象的属性和方法
print(dir(results)) # dir(obj)可以查看对象的属性和方法
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
# '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', 
# '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
# '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 
# 'crop', 'display', 'files', 'imgs', 'n', 'names', 'pandas', 'pred', 'print', 'render', 's', 
# 'save', 'show', 't', 'tolist', 'xywh', 'xywhn', 'xyxy', 'xyxyn']
# <models.common.Detections object at 0x0000018058A464C8>
# 结果相关操作
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.
# 显示图片(识别后)
results.show()
#保存到文件夹out_111
results.save("out_111") 

     执行如下命令python demo.py进行运行示例,显示的结果如下所示:

PS C:\deeplearning_src\yolov5> python demo.py
YOLOv5  v6.0-124-g1075488 torch 1.10.0+cpu CPU

Fusing layers... 
Model Summary: 213 layers, 7225885 parameters, 0 gradients
Adding AutoShape... 
C:\Users\root\AppData\Roaming\Python\Python37\site-packages\torch\autocast_mode.py:141: 
UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
  warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
 '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
 'crop', 'display', 'files', 'imgs', 'n', 'names', 'pandas', 'pred', 'print', 'render', 's', 'save', 'show', 't', 'tolist', 
'xywh', 'xywhn', 'xyxy', 'xyxyn']
image 1/1: 720x1280 2 persons, 1 tie
Speed: 44.9ms pre-process, 202.5ms inference, 20.0ms NMS per image at shape (1, 3, 384, 640)
Saved 1 image to out_111
PS C:\deeplearning_src\yolov5> 

显示的标注图片如下所示:

6.jpg
另外,官方项目目录中,还有一个检测物体的文件,可以执行如下命令进行执行,它可以处理图片和视频,功能更加强大,示例如下所示:

python detect.py --source data/images --weights demo/model/yolov5m.pt --conf 0.65

视频效果如下所示:

yolo5 demo.gif

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。