Python ValueError:检查输入时出错:预期输入_2具有形状(224224,224,3),但获得具有形状(224224,224,4)的数组

Python ValueError:检查输入时出错:预期输入_2具有形状(224224,224,3),但获得具有形状(224224,224,4)的数组,python,deep-learning,computer-vision,vgg-net,imagenet,Python,Deep Learning,Computer Vision,Vgg Net,Imagenet,我从文件夹中获取了输入,然后根据VGG16-places365模型对其进行了相应的重塑。它仍然显示了相同的错误,并查看了问题的Keras文档(),但错误仍然存在 if __name__ == '__main__': #from urllib.request import urlopen import numpy as np from PIL import Image from cv2 import resize pred_array = np.empty(

我从文件夹中获取了输入,然后根据VGG16-places365模型对其进行了相应的重塑。它仍然显示了相同的错误,并查看了问题的Keras文档(),但错误仍然存在

if __name__ == '__main__':
    #from urllib.request import urlopen
    import numpy as np
    from PIL import Image
    from cv2 import resize
    pred_array = np.empty((0,6),dtype=float)
    TEST_PATH = '/home/guest/Downloads/content/image/thumb'
    for img in os.listdir(TEST_PATH):
        image = Image.open(os.path.join(TEST_PATH, img))
        image = np.array(image, dtype=np.uint8)
        image = resize(image, (224, 224))
        image = np.expand_dims(image, 0)

    model = VGG16_Places365(weights='places')
    predictions_to_return = 5
    preds = model.predict(image)[0]
    top_preds = np.argsort(preds)[::-1][0:predictions_to_return]

    # load the class label
    file_name = 'categories_places365.txt'
    if not os.access(file_name, os.W_OK):
        synset_url = 'https://raw.githubusercontent.com/csailvision/places365/master/categories_places365.txt'
        os.system('wget ' + synset_url)
    classes = list()
    with open(file_name) as class_file:
        for line in class_file:
            classes.append(line.strip().split(' ')[0][3:])
    classes = tuple(classes)
    temprow = np.hstack((np.array([img]),top_preds))
    np.append(pred_array,temprow.reshape(-1,pred_array.shape[1]),axis=0)
df = pd.DataFrame(data=pred_array,columns=['File_name','Tag_1','Tag_2','Tag_3','Tag_4','Tag_5'])    
print(df)

您可能正在加载带有alpha通道(RGBA)的图像,但VGG16神经网络希望图像没有alpha通道(RGB)

要将图像从RGBA转换为RGB,可以使用

image = image.convert("RGB")
在PIL图像对象上,即直接在
图像之后。打开
,或在numpy数组对象上使用numpy数组切片,在调用
np.array
后切断前三个颜色通道:

image = image[:, :, :3]

您可能正在加载带有alpha通道(RGBA)的图像,但VGG16神经网络希望图像没有alpha通道(RGB)

要将图像从RGBA转换为RGB,可以使用

image = image.convert("RGB")
在PIL图像对象上,即直接在
图像之后。打开
,或在numpy数组对象上使用numpy数组切片,在调用
np.array
后切断前三个颜色通道:

image = image[:, :, :3]