Hello Deep Learning: Doing some actual OCR on handwritten characters - Bert Hubert's writings
2 days ago
- 本章重点是将卷积神经网络(CNN)应用于真实世界的手写字符识别,并突出其与理想化数据集相比的难度。
- 训练使用工具(tensor-convo-par.cc),采用Adam优化器、dropout、权重衰减和数据增强等选项,并将进度保存到状态文件中。
- 真实世界的测试图像显示,MNIST数据集并未涵盖所有手写风格,如欧洲风格的“h”,导致初始识别效果较差。
- 真实图像的预处理包括转换为灰度图、校正白平衡、使用强度图分割文本行以及逐个字符框选。
- 对于网络输入,字符从不同尺寸调整为位于28x28网格中心的24x24像素区域,以匹配MNIST的空外像素。
- 推理时加载禁用dropout的网络,预测期间将期望值设置为占位符“a”(0)。
- 最终的OCR程序实现了识别功能,虽然存在一些错误(例如“L”被误读为“C”),但用约1800行代码展示了端到端的OCR功能。
- 关键经验包括训练数据覆盖范围的重要性、大量的预处理以及神经网络在OCR任务中的高效性。