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

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