[英]Rescaling image to get values between 0 and 255
從此處獲取的一段代碼試圖繪制卷積神經網絡的中間輸出。 以這種方式獲取和重新縮放輸出:
if channel_image.sum()!=0:
channel_image -= channel_image.mean()
channel_image /= channel_image.std()
channel_image *= 64
channel_image += 128
channel_image = np.clip(channel_image, 0, 255).astype("uint8")
這個轉換中的一切都非常清楚,除了乘以64
:那是為了什么? 那是經驗值嗎?
減去均值並除以標准差后,您就計算出了通道圖像值的 Z 分數。
看起來他們選擇了 +/- 2 作為值顯示為與平均值的標准偏差數:
2*64 + 128 = 256
-2*64 + 128 = 0
因此,乘以 64 會將值縮放到 -128 和 +128 之間,然后移動 128 會將值移動到 0 到 256 之間。
+/-2 標准偏差之外的任何值都將被以下行截斷:
np.clip(channel_image, 0, 255).astype("uint8")
實際上 64 值應該計算如下:
def multiplier(num_std_deviations):
return 256/(num_std_deviations*2)
除以標准差后,值在一個小范圍內(對於正態分布,幾乎所有值都在 [-3,3] 范圍內)。 它們被重新縮放以更好地填充 [-128,127] 范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.