"You only look once"--吴恩达目标检测YOLO算法学习

从输入到输出,图片到底经历了什么:

1.reading and processing:

用于测试和预测的图片可以为任意尺寸,而yolo_model的输入为(608,608),需要对原图片进行预处理

def preprocess_image(img_path,model_image_size):
    image_type=imghdr.what(img_path)
    image=Image.open(img_path)
    resized_image=image.resize(tuple(reversed(model_image_size),Image.BICUBIC))
image_data=np.array(resized_image,dtype='float32')
image_data/=255
image_data=np.expand_dims(image_data,0)#增加batch_size的维度
return image,image_data

预处理步骤:读取图片-->修改尺寸-->数组化-->归一化-->增加维度   image_data 用于输入model

2.将预处理后的image_data 输入yolo_model.

yolo_model的input的shape为(None,608,608,3),output的shape为(None,19,19,425),其中19*19为yolo算法的网格划分尺寸,425可以展开为5*(1+4+80),即(None,19,19,5,85),其中置信度box_confidence=tf.sigmoid(output[...,4:5])得出,box_xy=tf.sigmoid(output[...,:2]),box_wh=tf.exp(output[...,2:4]),box_class_probs=tf.softmax(output[...,5:])获得

3.经过上诉处理的output信息包含所有anchor_box的信息,而我们最终输出目标应该只有特定的一个box,需要经过概率阈值filter和NMS算法进行过滤筛选得到最终的唯一Box,box包含scores(置信度),boxes(尺寸信息),classes(类别信息)

4.可视化





 
  

你可能感兴趣的:(目标检测)