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
这里我们可以根据需要,自行下载权重文件,这些文件可以拿来直接进行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>
显示的标注图片如下所示:
另外,官方项目目录中,还有一个检测物体的文件,可以执行如下命令进行执行,它可以处理图片和视频,功能更加强大,示例如下所示:
python detect.py --source data/images --weights demo/model/yolov5m.pt --conf 0.65
视频效果如下所示:
- 点赞
- 收藏
- 关注作者
评论(0)