【Demo】基于Python、Keras和CASIA-HWDB1.1实现卷积神经网络
文件列表(压缩包大小 87.15K)
免费
概述
该存储库是包含深度学习库Keras和CASIA-HWDB1.1数据集的子集进行的实验。 此处提供的代码实现了卷积神经网络,其测试集准确性有时大于95%。 该网络配置是Zhang Yuhao在《 Deep Convolutional Network for Handwritten Chinese Character Recognition》中描述的配置的简化版本; 由于我们只想使用卷积网络和深度学习库,因此没有进行任何改进模型的尝试。
假设你已经安装了Keras及其后端,并对其进行了配置。 使用以下命令安装其他必需的依赖项:
$ pip3 install -r requirements.txt
该代码最后在Keras 2.1.5上进行了测试,使用TensorFlow 1.8.0作为后端,以及h5py 2.7.1,numpy 1.14.2,Pillow 5.1.0,scikit-image 0.14.0和scipy 1.0.0。 测试在单个GeForce GTX 970下运行。
在发布的部分中,我们上传了CASIA-HWDB1.1数据集的(压缩)子集,经过训练的模型和一些分类,所有这些均按照以下步骤生成。 如果你使用我们的子集,请从步骤3开始。
0.从官方地址下载CASIA-HWDB1.1数据集(HWDB1.1trn_gnt.zip(1873 MB)和HWDB1.1tst_gnt.zip(471 MB))并将其解压缩(需要以ALZ格式解压缩档案):
$ unzip HWDB1.1trn_gnt.zip
Archive: HWDB1.1trn_gnt.zip
inflating: HWDB1.1trn_gnt.alz
$ unalz HWDB1.1trn_gnt.alz
unalz v0.65 (2009/04/01)
Copyright(C) 2004-2009 by kippler@gmail.com (http://www.kipple.pe.kr)
Extract HWDB1.1trn_gnt.alz to .
unalziiiing : 1219-c.gnt (21547829bytes) ...........
unalziiiing : 1220-c.gnt (26773966bytes) ...........
[...]
$ mkdir HWDB1.1trn_gnt
$ mv *.gnt HWDB1.1trn_gnt/
$ unzip HWDB1.1tst_gnt.zip
Archive: HWDB1.1tst_gnt.zip
inflating: 1289-c.gnt
inflating: 1290-c.gnt
[...]
$ mkdir HWDB1.1tst_gnt
$ mv *.gnt HWDB1.1tst_gnt/
1.将数据集转换为HDF5二进制数据格式:
$ python3 1-gnt_to_dataset.py HWDB1.1trn_gnt/ HWDB1.1tst_gnt/
Converting 'trn'...
Converting 'tst'...
2.从HDF5数据集中提取200个字符类别的子集:
$ python3 2-dataset_to_subset.py HWDB1.1.hdf5
Subsetting 'trn'...
Subsetting 'tst'...
3.在子集中训练网络:
$ python3 3-train_subset.py HWDB1.1subset.hdf5
Using TensorFlow backend.
. . .
2018-06-10 10:18:51.390792: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3608 MB memory) -> physical GPU (device: 0, name: GeForce GTX 970, p
ci bus id: 0000:02:00.0, compute capability: 5.2)
Train on 40000 samples, validate on 8020 samples
Epoch 1/15
40000/40000 [==============================] - 41s 1ms/step - loss: 4.5114 - acc: 0.0975 - val_loss: 2.2487 - val_a
cc: 0.4542
Epoch 2/15
40000/40000 [==============================] - 30s 761us/step - loss: 1.7218 - acc: 0.5745 - val_loss: 0.7780 - val
_acc: 0.8026
Epoch 3/15
40000/40000 [==============================] - 30s 762us/step - loss: 0.8618 - acc: 0.7704 - val_loss: 0.4930 - val
_acc: 0.8675
. . .
Epoch 14/15
40000/40000 [==============================] - 31s 763us/step - loss: 0.1265 - acc: 0.9607 - val_loss: 0.3307 - val_acc: 0.9181
Epoch 15/15
40000/40000 [==============================] - 30s 762us/step - loss: 0.1179 - acc: 0.9640 - val_loss: 0.3282 - val_acc: 0.9198
Test score: 0.32826207710256655
Test accuracy: 0.9214865656650205
4.(可选)生成一些分类的报告:
$ python3 4-draw_results.py HWDB1.1subset.hdf5 model-1528618732.json weights-1528618732-0.921487.hdf5
Using TensorFlow backend.
. . .
2018-06-10 10:33:17.881820: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3608 MB memory) -> physical GPU (device: 0, name: GeForce GTX 970, pci bus id: 0000:02:00.0, compute capability: 5.2)
Evaluating the network on the test set...
Test score: 0.32826207710256655
Test accuracy: 0.9214865656650205
Extracting some results...
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)