несоответствие формы модели глюона - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь глюон модели зоопарка .

import mxnet as mx
from mxnet.gluon.model_zoo import vision
import cv2
import numpy as np

ctx = mx.gpu(6) # successful
net = vision.alexnet(pretrained=True, ctx=ctx)

# preparing input image. 
# You may ignore this process. This just preprocess an image for the net.
# To load input image as shape (batch=1, channel=3, width, height)
im = cv2.imread(‘img.jpg’) # w,h = 4032,3024. rgb color image
im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB).astype(float)/255
im = mx.image.color_normalize(im, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) 
im = np.transpose(im, (2,0,1)) # (4032,3024,3) -> (3,4032,3024)
im = im[None,:] # (3,4032,3024) -> (1,3,4032,3024). this means batchsize=1
im = mx.nd.array(im, ctx=ctx)

# run 
r = net(im)

Когда я запускаю это, возникает ошибка.

MXNetError: Shape inconsistent, Provided = [4096,9216], inferred shape=(4096,2976000)

Нужно ли изменять размер изображения до определенного размера? При manual глюону нужны только минимальные размеры ширина, высота. Нужно ли учитывать максимальный размер или фиксировать размер ввода?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Когда я изменяю размер входного изображения до 254*254, вывод выполнен успешно.

Возможно, предварительно обученный mxnet alexnet не обрабатывает изображения большого размера.

@ Комментарий Сергея помог. Спасибо.

0 голосов
/ 08 ноября 2018

Вам нужно исправить размер входного сигнала от 256 до 256, так как это был размер изображения, которому обучалась сеть AlexNet, согласно оригинальной статье. Обычно этого можно добиться, изменив меньшую ось (ширину или высоту) на 256, а затем выполнив обрезку по центру.

Дело в том, что когда вы используете нейронные сети для предсказания чего-либо, вам необходимо подготовить свои входные данные точно так же, как данные обучения. Если вы этого не сделаете, в простейшем случае произойдет ошибка несоответствия формы. В более сложном случае, когда формы совпадают, но изображение резко отличается от того, в котором обучалась модель, результат, скорее всего, будет неправильным.

...