python numpy创建矩阵、并归一化_每通道以numpy为单位对一批图像进行归一化处理...
我有大量的形狀[批次大小,寬度,高度,通道數](它們不是RGB圖像,而是類似的2D字段概念)。在
我想對每個頻道的圖像進行歸一化處理。有沒有比下面這些更性感的方式來做這件事?特別是我不喜歡的是頻道上的循環,我發現必須這樣做很奇怪np.min.最小值以及np.最大值在切片上。同樣,這是硬編碼,只工作在張量與排名4,它如何適應有動態排名,或通道在一個動態軸上?在def get_img_ch_min_max(imgs):
'''return minimum and maximum for each channel of [batch, width, height, channels]'''
if len(imgs.shape)==3: imgs = np.expand_dims(imgs, axis=-1)
# iterate each channel
ch_min = np.array([np.min(imgs[:,:,:,i]) for i in range(imgs.shape[-1])])
ch_max = np.array([np.max(imgs[:,:,:,i]) for i in range(imgs.shape[-1])])
return ch_min, ch_max
def normalise_per_channel(imgs):
'''normalise batch of images per channel, [batch, width, height, channels]'''
if len(imgs.shape)==3: imgs = np.expand_dims(imgs, axis=-1)
ch_min, ch_max = get_img_ch_min_max(imgs)
ch_range = ch_max - ch_min
imgs_ret = np.copy(imgs)
for i in range(imgs.shape[-1]): # iterate each channel
if ch_range[i] > 0: # avoid divide by zero
imgs_ret[:,:,:,i] = (imgs[:,:,:,i] - ch_min[i]) / ch_range[i]
imgs_ret = np.squeeze(imgs_ret)
return imgs_ret
總結
以上是生活随笔為你收集整理的python numpy创建矩阵、并归一化_每通道以numpy为单位对一批图像进行归一化处理...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 时序数据库_时序数据库In
- 下一篇: python functools imp