NDL
- NDLラボは、国立国会図書館の実験的なサービスを提供するサイトです
- 手書き平仮名データが公開されています
- Chainerで学習するサンプルプログラムが公開されている
- Chainerが古い、1.9.0向け
- 学習・検証した結果を利用するサンプルはない
- CPUのみでGPUを使えない
- 手書き漢字データも公開されているけどサンプルプログラムはない
GPU対応する
先に結果
-
train.py
- Chainer4対応
- GPU対応
-
ndl.ipynb
- google-drive-ocamlfuse導入
- /content/driveにGoogle Driveをマウント
- Chainerとcupyをインストール
- トレーニング
- 学習結果を可視化
やったこと
- Google Colaboratoryで実行前にGoogle Driveの準備
- NDL記載の手順をローカル端末でダウンロード、解凍、Google Driveにアップロードしておく
NDL記載の手順
$ wget http://lab.ndl.go.jp/dataset/hiragana73.tar.gz
$ tar xfz hiragana73.tar.gz
$ wget http://lab.ndl.go.jp/dataset/example/train_ndlkana.tar.gz
$ tar xfz train_ndlkana.tar.gz
- train.pyを編集
- ベースは前記事『「not only 数字 but also 平仮名 ~MNIST だけでなく NDL もまた~」Chainerで手書きを認識』のtrain.py
train.py
- help='ratio of test data')
-args = parser.parse_args()
+ help='ratio of test data')
+parser.add_argument('--gpu', '-g', type=int, default=-1,
+ help='GPU ID (negative value indicates CPU)')
+args = parser.parse_args()
-xp = np
+xp = np
+if args.gpu >= 0:
+ # Make a specified GPU current
+ chainer.backends.cuda.get_device_from_id(args.gpu).use()
+ model.to_gpu() # Copy the model to the GPU
+ xp = chainer.backends.cuda.cupy
-optimizer.setup(model)
+optimizer.setup(model)
+if args.gpu >= 0:
+ optimizer.target.to_gpu(args.gpu)
次の一歩
- 漢字もやってみてもよい(分類が多いだけで本質は変わらないから楽しくはないか)
- 複数の文字、というか文字列というか、文書をOCRさせるには?
- 文字でなく単語を学習する必要が合る?
- ノートやホワイトボードのように自由な場所に書く場合はbboxが必要?
おわり