在运用卷积神经网络进行图像识别的过程中,将数据集分为训练集与验证集,首先进行模型的训练,最终模型在训练集与验证集上的正确率均达到0.999,将训练好的模型保存到本地,测试过程中直接读取本地模型对视频帧进行图像识别,正确率却远达不到0.999,即模型在训练集与验证集上的正确率很高,但在测试集上的正确率却很低。
在反复对比测试集与训练集,确定不存在上述原因后,考虑可能是视频可视化过程中发生了错误,由于验证集的正确率很高,故对验证集进行可视化测试,探究是否为可视化的问题。通过 cv2.imshow() 方法展示验证集,终于发现了问题所在。即测试集与验证集的图像数据通过 plt.imread() 方法读取,色彩空间为 RGB ,然而在对视频进行可视化时,通过 cv2.VideoCapture() 方法读取视频并进行切帧用于测试,色彩空间为 BGR ,测试集与训练集的色彩空间不一致,出现了识别率低的问题。
训练集与测试集的图形数据通过不同方法读取,图形数据的色彩空间不一致,通过 cv2.cvtColor() 方法进行色彩空间的转换后传入模型进行测试,最终得到了与训练集与验证集近乎一致的正确率。
