为了完成这一项目,我遇到了很多问题。下面是我遇到的一些挑战及做出的应对对策。
首先,我尝试在没有删除最顶层的情况下使用预训练模型,结果并不理想。原因可能是由于我们的模型之前没有在动画片上接受训练。为了解决这个问题,我重新用图片训练模型,结果好了很多。
但是尽管用带有标记的图片训练,精确度仍然不理想。模型在训练图像上表现得并不好。所以,我试着增加图层数量。这种做法结果不错,但训练和验证精度之间并不对应。模型出现了过度拟合,它在陌生数据上表现得也不好。所以我在密集层之后增加了Dropout层,这样就解决了。
我注意到,汤姆的出镜时间更长,所以模型得出的很多结论都是汤姆。为了让模型平衡预测,我用了sklearn.utils.classweight模块中的computeclass_weight( )函数。它在数值计数较低的类别中分配了更高的权重,在较高的数值计数中分配较低权重。
另外,我还用Model Checkpoint保存了最佳模型。
最终,我们在验证数据上达到了88%左右的结果,在测试数据上达到了64%的精确度结果。
欲查看完整代码,请点击原文地址:www.analyticsvidhya.com/blog/2018/09/deep-learning-video-classification-python/