【问题标题】:OpenCV Python Image Preprocessing for VGG16 ModelVGG16 模型的 OpenCV Python 图像预处理
【发布时间】:2020-10-03 20:21:22
【问题描述】:

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

作者在他们的original paper 中写道:

在训练期间,我们的 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 模型的更多信息:https://neurohive.io/en/popular-networks/vgg16/#:~:text=The%20architecture%20depicted%20below%20is%20VGG16.&text=The%20input%20to%20cov1%20layer,stack%20of%20convolutional%20(conv.)

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

【问题讨论】:

  • 你看到我的回答了吗? @亨利

标签: python opencv machine-learning vgg-net


【解决方案1】:

试试:

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/

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2021-06-27
    • 2019-09-12
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多