El código modificado está disponible aquí: https://github.com/BIGBALLON/CIFAR-ZOO/blob/master/eval.py
1. ¿El modelo se ha importado correctamente?
1.1 problema
Missing key(s) in state_dict: "features.0.weight"
Unexpected key(s) in state_dict: "module.features.0.weight"
Por ejemplo, si se utiliza el siguiente comando en este momento para importar el modelo:
net.load_state_dict(checkpoint["state_dict"], strict=False)
Aquí, el parámetro estricto se establece en Falso (se ignorarán los parámetros de capa de red que no coincidan). Cómo utilizar el nombre del modelo de entrenamiento paralelo de múltiples GPU durante el entrenamiento, habrá más "módulo", es posible que el modelo no se importe correctamente.
referencia:
https://blog.csdn.net/shiwanghualuo/article/details/101756876
https://blog.csdn.net/qq_32998593/article/details/89343507
1.2 Resolver
net.load_state_dict({k.replace('module.',''):v for k,v in checkpoint["state_dict"].items()}, strict=True)
2. Procesamiento previo de la imagen de entrada
Torch a menudo usa PIL para leer imágenes, algunos preprocesos en transformaciones (cambio de tamaño, ToTensor, etc.). Se ha verificado antes que PIL y opencv solo necesitan convertirse al mismo espacio de color, y básicamente no hay problema.