22
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HeadwatersAdvent Calendar 2019

Day 12

JetsonNanoとCRAFTで日本語文字検出

Last updated at Posted at 2019-12-12

やること

Lineの親会社NAVERのエンジニアが作成したText DetectionのCRAFTを使って、
JetsonNanoのEdge環境でOCRできるか(Recognitionはしていません)を確認します。

CRAFTについて

https://arxiv.org/pdf/1904.01941.pdf
論文をざっくり見たところ、VGG16をベースにしてRegionScoreとAffinityScoreというものを学習、推論していくようです。

スクリーンショット 2019-12-12 11.11.04.png

従来の、バウンディングボックスを利用した物体検出からの文字検出とは違い、
CenterNetのようなポイント検出から文字検出をすることで、NMSを飛ばせ比較的早いという利点があるみたいです。

ただ、Scene Text Recognitionの課題である、湾曲したテキストの検知などをするための工夫がされており、
結構後処理に時間がかかりそうな印象を受けました。

環境構築

まずはCRAFTをgithubからダウンロードします。

次にpytorchを入れます。
ちなみに、JetsonNanoにはAnacondaは入らないようです。

wget https://nvidia.box.com/shared/static/phqe92v26cbhqjohwtvxorrwnmrnfx1o.whl -O torch-1.3.0-cp36-cp36m-linux_aarch64.whl
pip3 install numpy torch-1.3.0-cp36-cp36m-linux_aarch64.whl

requirment.txtにpytorchのバージョンが指定されていますが、削除して新しいの入れます。

torchvision==0.2.1
opencv-python==3.4.2.17
scikit-image==0.14.2
scipy==1.1.0

pip3 install -r requirements.txt

scikit-imageインストール中に電源が落ちる現象が起きて、先に進めないので、
Webカメラを外して、下記のコマンドを実行しました。

pip3 install scikit-image==0.14.2 --user

関連ライブラリのバージョンが古いというようなエラーが出たので、pipを新しくします。

pip3 install --upgrade pip setuptools

ImportError: cannot import name mainというエラーが出たので、
下記の記事からpipを再インストール

hash -r

JetsonNanoあるあるかと思いますが、
その辺にある電源アダプター(5V、2.5A)で給電していて、突然電源が落ちることがありました。

電力が足りてない?のか、とりあえず、電力を使ってそうなWebカメラを外して先に進めましたが、
5V、4Aの電源アダプターを用意できればいいという話もあります。

Githubから、Model NameがGeneralのモデルをダウンロードして、作業ディレクトリに配置します。

GPUを使う

python3 test.py --trained_model=craft_mlt_25k.pth --test_folder=./data

バウンディングボックス付きとマスクの画像と、物体位置が書かれたテキストファイルが出力されます。

res_test.jpg
res_test_mask.jpg

数字とカタカナを認識してくれてます。

認識にかかった時間:12秒くらい

GPU使わない

python3 test.py --trained_model=craft_mlt_25k.pth --test_folder=./data --cuda=False

認識にかかった時間:111秒くらい

まとめ

Webカメラを使ってガンガン認識する感じで試したかったのですが、JetsonNanoだと厳しいみたいです。

MACのGPUなしで実行した場合に、2.5秒くらいで認識したのでいい感じに動くかと思ったのですが、
Edgeはスペック上がり待ちになりそうです。

Recognitionは同じくclovaaiチームのリポジトリがありますが、
日本語認識のモデルが現状なさそうなので、自分でトレーニングしろってことだと思います。

CRAFTのモデルのトレーニングは提供されていませんが、
Recognitionの方はトレーニング方法が書かれています。

いつか自作の日本語認識OCRを作りたいと思います。

22
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?