@Author:Runsen
YOLO
最近,了解计算机视觉的都知道YOLO 很火,从2016年的v1版本开始到现在的v5,YOLO 是一种实时目标检测算法,算法模型不需要训练,直接用就可以了。YOLO 是英文You Only Look Once的缩写。
You Only Look Once说的是只需要一次CNN运算,Unified指的是这是一个统一的框架,提供end-to-end的预测。
darknet
目前关于目标检测四大开源神器,分别是Detectron2、mmDetection、darknet和SimpleDet。‘
为什么我们需要用darknet,这是因为 YOLO作者自己写的一个深度学习框架叫darknet。所以在行业上darknet的影响力比较大。
Darknet是一个用C和CUDA编写的开源的神经网络框架。安装起来非常快速、简单,并同时支持CPU和GPU。源码托管在github,
darknet和yolo的关系,就像和tensorflow和yolo的关系,torch和yolo的关系一样。你也会听说基于YOLOv4和tensorflow来实现的物体检测。
在这里,我选择基于YOLOv4和Darknet来实现的物体检测。
如果需要准备darknet运行环境:cuda、cudnn,
opencv三者很复杂。所以直接使用Google Colab平台,这样会节省很多难度。
Google Colab
Google Colab 是一个免费的 Jupyter 环境,用户可以用它创建 Jupyter notebook,提供免费的 GPU
十分钟实现
在这里,我们就开心新建一个Jupyter notebook
点击笔记本左上方的“编辑”,选择GPU
下一步就是克隆和构建Darknet
在官方文档中,有对应的教程来[编译Darknet](,选择是Linux平台
在Linux上进行编译(使用make)
只需make在darknet目录中进行即可。(您可以尝试在Google Colab的云链接中编译并运行它(按左上角的“在操场上打开”按钮)并观看视频链接)制作之前,您可以在Makefile:链接中设置此类选项
这个视频就是本次博文的所有内容。
!git clone https://github.com/AlexeyAB/darknet
%cd darknet
!sed -i 's/OPENCV=0/OPENCV=1/' Makefile
!sed -i 's/GPU=0/GPU=1/' Makefile
!sed -i 's/CUDNN=0/CUDNN=1/' Makefile
!sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile
# verify CUDA
!/usr/local/cuda/bin/nvcc --version
!make
执行make的过程有点久,但是没有问题。
下一步,下载经过预先训练的YOLOv4权重
YOLOv4已经在coco数据集中进行了训练,该数据集可以预测80个类。 我们将获取这些预训练的权重,以便我们可以在这些预训练的类上运行YOLOv4并进行检测。
!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
下面代码是实现具体的预测和图片上传
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
# define helper functions
def imShow(path):
image = cv2.imread(path)
height, width = image.shape[:2]
resized_image = cv2.resize(image,(3*width, 3*height), interpolation = cv2.INTER_CUBIC)
fig = plt.gcf()
fig.set_size_inches(18, 10)
plt.axis("off")
plt.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB))
plt.show()
# use this to upload files
def upload():
from google.colab import files
uploaded = files.upload()
for name, data in uploaded.items():
with open(name, 'wb') as f:
f.write(data)
print ('saved file', name)
# use this to download a file
def download(path):
from google.colab import files
files.download(path)
当下载完了YOLOv4权重,会在Darknet文件夹中。
Darknet现在已构建,可以在云中使用YOLOv4来运行检测! 您可以通过单击此处了解预训练的YOLOv4权重可以检测哪些类别
!./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg
imShow('predictions.jpg')
!./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/eagle.jpg
imShow('predictions.jpg')
在此,我上传一张学校的图片
感想:感觉Google Colab平台很强大,人工智能领域很高深,还有自己很水,只会用轮子。