我正在嘗試規范化我的數據以準備將其作為此模型的輸入。我嘗試按照本指南進行操作,但一直遇到問題。首先,我的最小值和最大值不是從 0 和 255 開始的,最終結果也沒有在 0 和 1 之間歸一化。這是我的功能def process_image(image_path): image = Image.open(image_path) new_image = image.resize((224,224)) pixels = asarray(new_image) # confirm pixel range is 0-255 print('Data Type: %s' % pixels.dtype) print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max())) # convert from integers to floats pixels = pixels.astype('float32') # normalize to the range 0-1 pixels /= 255.0 # confirm the normalization print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max())) new_image.save("result.jpg") return new_image這是我的結果輸出Data Type: uint8Min: 8.000, Max: 216.000Min: 0.031, Max: 0.847任何想法為什么?而且,我怎樣才能保存具有這些標準化結果的圖像。現在編寫代碼時,像素不會更改,因為我只是從 new_image 創建像素的副本。感謝您提供的任何幫助。
1 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
您可以做的是計算數據集的實際最小值和最大值,然后再進行您自己的 minmax 歸一化。
這可能是這樣的:
import sys
from PIL import Image
import numpy as np
image_paths = ['image_path1.jpg', 'image_path2.jpg', 'image_path3.jpg']
min = sys.maxsize
max = -sys.maxsize
for image_path in image_paths:
image = Image.open(image_path)
np_image = np.asarray(image)
if min > np_image.min()
min = np_image.min()
if max < np_image.max()
max = np_image.max()
這將為您提供變量 min 和 max,您現在可以使用它們在 0 和 1 之間進行歸一化,而不是之前的 /= 255!
...
pixels -= min
pixels /= (max - min)
...
讓我知道是否有幫助!
添加回答
舉報
0/150
提交
取消