无须搭建环境,只需十分钟使用Google Colab平台,基于YOLOv4和Darknet来实现的物体检测

@Author:Runsen

YOLO

最近,了解计算机视觉的都知道YOLO 很火,从2016年的v1版本开始到现在的v5,YOLO 是一种实时目标检测算法,算法模型不需要训练,直接用就可以了。YOLO 是英文You Only Look Once的缩写。
You Only Look Once说的是只需要一次CNN运算,Unified指的是这是一个统一的框架,提供end-to-end的预测。

基于Pytorch实现的YOLOV5的官方Github

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平台很强大,人工智能领域很高深,还有自己很水,只会用轮子。

参考

(完)