繁体   English   中英

OpenCV Python VGG16 的图像预处理 Model

[英]OpenCV Python Image Preprocessing for VGG16 Model

我想正确预处理图像以将它们输入到 VGG16 model

作者在他们的原始论文中写道:

在训练期间,我们的 ConvNets 的输入是固定大小的 224 × 224 RGB 图像。 我们所做的唯一预处理是从每个像素中减去在训练集上计算的平均 RGB 值。

调整大小部分很容易完成:

import cv2
import numpy as np


# Reading the image in RGB mode
image = cv2.imread(PATH_TO_IMAGE,1)

# Resize Image to original VGG16 input size
# from the paper: "During training, the input to our ConvNets 
# is a fixed-size 224 × 224 RGB image"

width = 224
height = 224
dim = (width, height)

# resize image
resized_image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)

...但我不太确定减去平均 RGB 值:

meanRBB_substract_image = resized_image - np.mean(resized_image)

这是正确的方法吗?

在平均 RGB 减法之前:

在此处输入图像描述

平均 RGB 减法后:

在此处输入图像描述

更多关于 VGG16 model: https://neurohive.io/en/popular-networks/vgg16/#:~:text=The%20architecture%20depicted%20below%20is%20%VGG16. 20layer,stack%20of%20convolutional%20(conv.)

编辑:我刚刚意识到他们写的是“在训练集上计算” - >这是否意味着我需要 1. 找到我的训练集中所有图片的平均 RGB 值,然后 2. 从所有训练集中减去这个平均值图片?

尝试:

from keras.applications.vgg16 import preprocess_input
...
resized_image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
processedimage = preprocess_input(resized_image)

来自: https://www.pyimagesearch.com/2016/08/10/imagenet-classification-with-python-and-keras/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM