本项目通过Keras搭建一个深度卷积神经网络来对驾驶员开车时的照片进行分类。
- 模型输入:驾驶员的照片
- 模型输出:驾驶员分类打各个状态的概率
我们对以下十种状态进行侦测:
- 安全驾驶
- 右手打字
- 右手打电话
- 左手打字
- 左手打电话
- 调节收音机
- 喝饮料
- 那后面东西
- 整理头发和化妆
- 和其他乘客说话
我们可以看到,除了第一种状态安全驾驶,其他九种状态都是司机开车时的危险动作。
我最终训练出来的模型,在测试集上评估的LogLoss为0.28486,在Kaggle排行榜,排名前13%。具体实施方案详见本项目报告。
这个项目训练、测试用的数据是来自于一个Kaggle竞赛State Farm Distracted Driver Detection(数据集现在链接)。
这个竞赛提供数据文件有:
-
driver_imgs_list.csv.zip - 一个训练数据集的列表,每列是图片的文件名以及它所对应的状态类别和司机的编号
-
img.zip - 一个打包文件夹,里面包含训练集和测试集
-
sample_submission.csv - 提交在kaggle上进行评分的文件模板
- 数据集分析和挖掘
- 模型训练
distracted_driver_detection.ipynb
- 预测结果做均值融合
此外,运行以上代码,文件夹的布局为:
|--- dataset
|--- train (22424 images)
|--- c0 (2489 images)
|--- c1 (2267 images)
.....
|--- to_prediction
|--- test (79726 images)
|--- subm (存放导出的预测submission)
|--- models (训练的模型)
需要说明的是使用kares中flow_from_directory
方法,需要传入一个包含子目录的目录,所以测试集文件放置,安排了两层。