AI源码解读.数字图像处理案例:Python版

4.3.3 图像检测

本部分包括图片预处理、人脸检测和狗狗检测。

1.图片预处理

使用TensorFlow作为后端时,在Keras中,CNN的输入是一个4维数组(也被称作4维张量),它的各维度尺寸为(nb_samples、rows、columns、channels)。其中nb_samples表示图像(或者样本)的总数;rows、columns和channels分别表示图像的行数、列数和通道数。

path_to_tensor()函数实现将彩色图像中字符串型的文件路径作为输入,返回一个4维张量,作为Keras CNN正确的输入格式。paths_to_tensor()函数将图像路径字符串组成的Numpy数组作为输入,将其缩放为224×224的图像。随后,该图像被调整为具有4个维度的张量。对于任一输入图像,最后返回的张量维度是(1,224,224,3)。

2.人脸检测

使用OpenCV中基于Haar特征的级联分类器检测图像中的人脸,下载其中一个检测模型,存储在haarcascades目录中。模型下载地址为https://github.com/udacity/cn-deep-learning/tree/master/dog-project/haarcascades。

3.狗狗检测

在检测模块中使用ResNet 50模型,得到对应图像的预测向量,标签值在151~268时判定该图像中包含狗狗。