cv2.dnn.blobFromImage用法.
在使用神经网络进行图像识别及检测时,需要对数据进行预处理,预处理的方法通常有两种:
- Mean subtraction
- Scaling by some factor
blobFromImage和blobFromImages就是用来预处理图像数据的
这两个函数的作用是:
- Mean subtraction
- Scaling by some factor
- channel swapping [optional]
下图为例
在将图像数据输入到神经网络中之前,对于每一个通道,需要对训练集中所有的图片中的像素值求平均数。
这样我们会得到三个值:
例如,ImageNet数据集的平均值是:R = 103.93,G = 116.77,B = 123.68
以上是按照像素级求平均,最后整个数据集会得到三个平均值
也可以按照通道级求平均,这样最后会得到三个平均矩阵。
处理的时候需要减掉平均值
为了正则化,我们也可以成一个因子
opencv中的blobFromImage函数
cv2.dnn.blobFromImage
和cv2.dnn.blobFromImages
类似
语法:
blob = cv2.dnn.blobFromImage(image, scalefactor=1.0, size, mean, swapRB=True)
blobFromImage
只能处理单个数据,而blobFromImages
可以处理一批数据,这使我们可以一次往神经网络里面输入多张图像。