maxnet學習(1):image函數

reference:https://mxnet.incubator.apache.org/api/python/image/image.html#mxnet.image.imread

注意這裏不是gluon的函數

  • mxnet.image.imdecode和mxnet.image.imread的區別

二者都是使用C++的opencv對圖像進行處理,imdecode將圖片解碼爲NDarray,而在此前需要讀入圖片。imread直接讀入並解碼圖片。二者都可以設置flag=0讀入灰度圖片,設置to_rgb=0保持原本的bgr格式(opencv)。

讀進的圖片都是0~255, shape = (H, W, C)。而輸入gluon的網絡需要0~1, shape = (n, C, H, W), 在輸入網絡之前需要經過轉換

img = mxnet.image.imdecode(open("dog.jpg", "rb").read())
img = mxnet.image.imread("dog.jpg")
def transform(data): # Imagenet pretrained model 
    data = data.transpose((2, 0, 1)).expand_dims(axis = 0)
    rgb_mean = nd.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1)
    rgb_std = nd.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1)
    return (data.astype('float32') / 255 - rgb_mean) / rgb_std
input_image = transform(img)#此後這裏可以直接輸入gluon網絡
  • cv2.imread和mxnet.image.imread的區別
    前者使用cv2,後者使用c++版本的opencv。前者讀取結果是numpy array,後者讀取結果是nd.array。前者通道爲bgr,後者默認是rgb。

  • mxnet.image.resize, mxnet.image.resize_short
    前者是強行resize,後者是按比例將短邊resize到指定大小。

  • mxnet.image.scale_down
    如果在crop的時候,w/h大於了圖片的w/h,就按比例調整crop的大小。

  • mxnet.image.color_normalize(src, mean, std = None)
    根據mean和std對圖片進行normalize,RGB順序的NDarray

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章