2018年4月10万件の飲食店クチコミからRNNで文章を生成Qiitaに記事を投稿しました。深層学習において、一般的な画像認識のための分類器としてVGG[1]やGoogLeNet[2]、ResNet[3]など、認識精度の高いネットワーク構造がここ数年で発明されてきました。PyTorchやTensorFlowなどの深層学習ライブラリでは、これらを既存のネットワークとして簡単に再利用することができます。ところで、画像認識を2次元CADへ応用させる技術は今のところあまりなされていないため、試しに実験を行ってみました。CAD図面は通常、直線、曲線や文字など、写真に比べるとノイズが少ないのが特徴と言えます(図1)。ここで言うノイズとは、ピクセル単位のノイズや、また、図形の意味的なノイズでもあります。高木は円と記号で表されるように、抽象化された図形によって表現されます。ピクセルデータの側面では、情報的にかなりスパースと言うことができるかもしれません。一般的な造園土木のCAD図面まず考えられるアプローチとして、既存のCNN構造をそのまま使うことは可能かどうかということです。その場合、教師データのサンプル数、各種チューニングパラメータと分類精度の関係はどうなっているのでしょうか。教師データここで、教師データは縦横224pxの画像ファイルを2000枚ほど手作業で準備しました。し、サンプルの90%を訓練データ、残りをテストデータとして使用します。以下にそれぞれの例を示します。低木の記号これらはCADソフトウェアのスクリーンショットから切り出し、PNG画像として保存しました。ResNetPyTorhで簡単に試せるネットワークがいくつかあり、ここではVGG16とResNet18を利用し、比較を行いました。VGGは比較的シンプルな構造ですが、全結合層が大きく、メモリを多く必要とするというデメリットがあります。後発のResNetはその点において改善がなされており、しかしながら、構造が複雑です。以下、2つの比較です。学習時間は、ResNetが10分、VGGが3時間でした。パフォーマンス、学習時間、学習の安定性の3つの観点で、ResNetが優れていました。これは学習時のバックプロパゲーションにおいて、勾配消失や勾配爆発を防ぎ、勾配を深い層まで伝搬させるネットワーク構造が重要であると言えます。GPUインスタンスモダンなCNNの学習にローカルPCを使用すると、遅いのに加え、他の仕事ができなくなるので、その2つの理由によりあまり良い選択ではありません。そこで、GPUを使えるクラウドを利用することでこの問題を解決しています。Services(AWS)のP2インスタンスをスポットリクエストで利用することで、優れた計算資源を安く利用させていただいています。まとめと課題この実験では、CNNを利用したCAD画像の分類問題において、各クラス1000サンプルほどの比較的少ない教師データで98%の精度を出すことができました。実際のタスクにどう応用できるかは、今後の課題となります。多層ニューラルネットワークの立体表示Qiitaに記事を投稿しました。深層学習PyTorchでシンプルな畳み込みニューラルネットワークを作ろうQiitaに記事を投稿しました。深層学習PyTorchでシンプルな多層ニューラルネットワークを作ろうQiitaに記事を投稿しました。