FC2ブログ

誰もがやさしく微笑みあえる、その日まで

東日本大震災で被災された方々、心を痛めた方々に送ります。

くずし字認識(その1) ~くずし字認識技術の研究開発状況について~


 今回は、「くずし字認識(その1) ~くずし字認識技術の研究開発状況について~」です。

 くずし字とは、「古典籍や古文書などで使われている文字のうち、楷書の点画を省略した手書き文字と、手書き文字をもとにした版本の文字」のことです。
 詳細は、こちらをご覧ください。
  https://www.nijl.ac.jp/pages/event/seminar/images/H26-kotenseki03.pdf

 くずし字認識とは、コンピュータを使って画像からくずし字を認識する技術です。
 OCR(Optical character recognition)技術が使われます。
 詳細は、こちらをご覧ください。
  https://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98


 
 今回は、最近のくずし字認識技術の研究開発状況について振り返ってみます。

 まずは調べてみて目についたのが、4年前の凸版印刷の研究開発成果に関する記事。
  https://www.itmedia.co.jp/ebook/articles/1507/06/news128.html
 記事の題名は『凸版のOCR技術、古典籍の「くずし字」を80%超の精度でテキストデータ化』
 ただ、凸版印刷のサービスが広まって古典籍の翻刻(くずし字で書かれた文献を楷書に直して一般に読める形式にすること)が急速に進んだというニュースはGoogle検索でヒットしませんでした。
 80%という精度が充分ではなかったのかも知れません。


 次に、目についたのが人文学オープンデータ共同利用センターの研究成果。
 2016年11月に、日本古典籍データセットが公開されました。
 これは、コンピュータでくずし字認識するために必要なデータセットで、その後どんどんデータが追加されました。
 2018年12月に公開されたKMNISTデータセットは、すぐに既存の機械学習モデルで学習できるため、機械学習エンジニアの方々は早速試されたようです。
  https://qiita.com/f0o0o/items/1fd1c7b9fbf87e36c925
  http://cedro3.com/ai/kmnist-vae/

 さらに、2019年7月10日に、世界最大の機械学習コンペティションであるKaggleで、くずし字認識のコンペティションが登場しました。
  https://www.kaggle.com/c/kuzushiji-recognition/overview
 主催は、情報・システム研究機構 データサイエンス共同利用基盤施設 人文学オープンデータ共同利用センター、同機構 国立情報学研究所、人間文化研究機構 国文学研究資料館です。
 データを広く世界中に公開することで、世界トップクラスの機械学習研究者やエンジニアがくずし字認識の研究開発に参加します。

 その翌日、人文学オープンデータ共同利用センター及び国立情報学研究所の研究者のニュース記事が出ました。
  https://pc.watch.impress.co.jp/docs/news/1195499.html
 ディープラーニング(深層学習)の手法(U-Net)を活用し、国文学研究資料館が持つくずし字のデータ(日本古典籍くずし字データセット)を学習させて、くずし字を現代語に推論できるシステム「KuroNet」を開発したという記事でした。
 正答率は85%で、データが増えればもっと正答率が上がるとのことです。


 崩し字認識技術の研究開発には、ヒトもカネもデータも集まってきており、これから数年の間にどんなビックリするような成果が生まれるか、とても楽しみです!



 次回は、くずし字認識に必要なOCRについて書きます。


スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

物体認識で遊んでみた(その2)


 今回は、「物体認識で遊んでみた(その2)」です。

 物体認識は、画像から特定の物体のパターンを捉えて認識する手法です。
 詳細は、こちらをご覧ください。
 https://weblabo.oscasierra.net/python/opencv-object-detection-tutorial-1.html

 今回は、以下のコードを使って、正面の顔を認識することを試みました。
 OpenCV が提供しているカスケード分類器用のXMLファイルには、"haarcascade_frontalface_default.xml"を使いました。
 https://github.com/oreilly-japan/artificial-intelligence-with-python-ja/tree/master/Chapter%2013/face_detector.ipynb

 実験に使った動画は、public domainのアニメ映画"Santa's Surprise"です。
 http://publicdomainmovie.net/movie/santas-surprise



 1つ目の結果はこちらです。
 アニメの画像だと、キャラクターごとに目、鼻、口の大きさが異なり、位置も大きく異なります。
 このケースだと人種ごとに肌の色も違うし、顔の作りも違っています。
 イヤリングをした女の子だけ顔を認識できましたが、それ以外のキャラクターはうまく認識できませんでした。
 おそらくXMLファイルがリアルな人間の顔しか対応していないのかなぁ、と推定しています。
 動画:SantasSuprise_scene1_analyzed.mp4


 2つ目の結果はこちらです。
 こちらも、キャラクターが正面を向いているシーンがあるにもかかわらず、衣類をつなぐ男の子の顔しか検出できませんでした。
 また、誤認識は多く発生しました。
 汎用的なキャラクターの顔認識の難しさを実感しました。
 動画:SantasSuprise_scene2_analyzed.mp4

 物体認識させたいものがあったら、それらに近い画像を自分で作って機械学習しないと精度が高いものはできないのかなぁ、と感じました。
 自分で作らなくてもいい学習方法があったら教えていただければ幸いです。



追記(おまけ)
そこそこ本物の人の顔に似ていれば、絵であってもちゃんと顔と認識してくれるようです。
動画:blue_turban_girl_small_analyzed.mp4


テーマ:プログラミング - ジャンル:コンピュータ

物体認識で遊んでみた(その1)


 今回は、「物体認識で遊んでみた(その1)」です。

 物体認識は、画像から特定の物体のパターンを捉えて認識する手法です。
 詳細は、こちらをご覧ください。
 https://weblabo.oscasierra.net/python/opencv-object-detection-tutorial-1.html

 今回は、以下のコードを使って、正面の顔を認識することを試みました。
 OpenCV が提供しているカスケード分類器用のXMLファイルには、"haarcascade_frontalface_default.xml"を使いました。
 https://github.com/oreilly-japan/artificial-intelligence-with-python-ja/tree/master/Chapter%2013/face_detector.ipynb

 実験に使った動画は、public domainの映画"The Snows of Kilimanjaro"です。
 http://publicdomainmovie.net/movie/the-snows-of-kilimanjaro



 1つ目の結果はこちらです。
 クローズアップ画像だと、全く顔と認識してくれませんでした。
 今回使ったXMLファイルだと、適切な大きさの顔しか認識してくれないようです。
 あと、ちょっとした濃淡を顔と認識していて、ノイズが結構多いと感じました。
 動画:The_Snows_of_Kilimanjaro_scene1_analyzed.mp4


 2つ目の結果はこちらです。
 ニーショットやウェストショットくらいの画像だと、うまく顔を認識してくれました。
 ただし、鼻と口だけの領域を顔と認識しているケースも多々見られたので、誤認識は多く発生しました。
 ひとまずパッとやってできる顔認識の実力を確認できました。
 動画:The_Snows_of_Kilimanjaro_scene2_analyzed.mp4

 次回は、実写ではなくアニメ画像で実験してみます。


テーマ:プログラミング - ジャンル:コンピュータ

StyleNetで遊んでみた(その7)


 今回は、「StyleNetで遊んでみた(その7)」です。

 StyleNetは、オリジナル画像とスタイル画像を組み合わせて、新しい画像を生み出す手法です。
 詳細は、こちらをご覧ください。
 https://elix-tech.github.io/ja/2016/08/22/art.html

 今回もTensorFlowのチュートリアルを使って画像を生成しました。
 使用したTensorFlowのチュートリアルはこちらです。
   https://www.tensorflow.org/alpha/tutorials/generative/style_transfer



 少しだけ工夫できそうなので、もう少し遊んでみました。
 工夫した点は、前もってオリジナル画像に少しだけスタイル画像を加えた点です。


 これは、オリジナル画像が「万博記念公園の太陽の塔」、スタイル画像が岡本太郎さんの「明日の神話」
 スタイル画像を前もって加えておけば、ほぼ再現します。
 スタイル画像をコラージュしてオリジナル画像に貼り付けたりすれば、もう少し面白い絵になるかな?




 次はオリジナル画像が「万博記念公園の太陽の塔」、スタイル画像がシャガールの「私と村」
 元々「私と村」は背景画像として加えてもそんなに違和感は無いので、まあまあいい感じの画像になったと思います。


 もう少し工夫できたら面白い絵が作れそうな気がしますが、今のところはこれが限界です。


テーマ:プログラミング - ジャンル:コンピュータ