YOLO
在本文中,我们将研究一个这样的对象检测框架——YOLO。这是一个非常快速和精确的框架,YOLO框架(You Only Look Once)与R-CNN不同的是在单个实例中获取整个图像,并预测这些框的边界框坐标和类概率。使用YOLO最大的优点是它的速度非常快,可以处理45帧每秒。YOLO也理解广义对象表示。这是最好的目标检测算法之一,表现出了与R-CNN算法相对相似的性能。
作为刚接触图像的小白,最好的理解方法就是启动我们的Jupyter笔记本(或者您喜欢的IDE),并最终以代码的形式实现我们的学习了!这是我们到目前为止一直在做的,让我们开始吧。
我们将在本节中看到的实现YOLO的代码取自Andrew NG关于深度学习的GitHub。您需要下载这个zip文件,其中包含运行此代码所需的经过预先训练的权重。
在进行其他操作之前,我们首先导入所需的库:
import os
import matplotlib.pyplot as plt
from matplotlib.pyplot import imshow
import scipy.io
import scipy.misc
import numpy as np
import pandas as pd
import PIL
import tensorflow as tf
from skimage.transform import resize
from keras import backend as K
from keras.layers import Input, Lambda, Conv2D
from keras.models import load_model, Model
from yolo_utils import read_classes, read_anchors, generate_colors, preprocess_image, draw_boxes, scale_boxes
from yad2k.models.keras_yolo import yolo_head, yolo_boxes_to_corners, preprocess_true_boxes, yolo_loss, yolo_body
%matplotlib inline
现在,让我们创建一个根据概率和阈值的过滤框:
def yolo_filter_boxes(box_confidence, boxes, box_class_probs, threshold = .6):
box_scores = box_confidence*box_class_probs
box_classes = K.argmax(box_scores,-1)
box_class_scores = K.max(box_scores,-1)
filtering_mask = box_cl