1. Layout Parser
Layout Parserは、論文や新聞、書籍などのレイアウトを検出して「ここは本文、ここは図表」などを検出する機械学習モデルである。
2. Layout Parserのこまったところ
この記事にたどり着いたということは多分、「Windows OSを使っててLayoutParserをinstallできない」という困りごとに直面した人なのではないかと思う。従ってあまり多くは語らない(語れない)が、原因としては「LayoutParserに使われている検出部分のBackboneがDetectron2であり、Detectron2をWindowsOSにinstallするのが大変」ということに尽きると思う。LinuxOSを導入することをいとわなかったり、公式に書かれているようにVisual Studioを導入して~というやり方ができて解決した、という人ならばもうこの記事は読む必要はないと思う。
3. LayoutParserのinstall方法
結局、どんな方法で解決すればよいのか言うと、「Backboneをefficientdetにしたものをinstallする」である。
やり方はシンプルで、pipでinstallする際に
pip install "layoutparser[effdet]"
でinstallすればよい。公式には「WindowsでLayoutParserを使いたかったらこれを使ってください」みたいな記載はないため、結構わかりづらい…。efficientdetを導入しました、ということやそれのinstallのやり方は書いてあるのだが…。
3.2 追記。モデルのダウンロード先の設定
このままではモデル読み込みの際にエラーが発生し、モデルがインストールされない。そこで、以下の対処でモデルを読み込めるようにする。
https://github.com/facebookresearch/iopath.git --single-branch --branch v0.1.8
を実行し、iopathのファイルをcloneする。
その後、iopath/iopath/comman/file_io.py
の中の753行目の
filename=path.Split("/")[-1]
の部分を
filename=parsed_url.path.split("/")[-1]
へと変更する。
その後、
pip install -e iopath
を実行することで準備が完了する。参考
4. 他にやること
あとは基本的にやることは変わらない。モデルを設定して検出をするだけである。
ただ、モデルを設定する際に、Detectron2をbackboneにしていた場合は
pip install layoutparser as lp
model=lp.Detectron2LayoutModel(~~~
と記載していた部分を
pip install layoutparser as lp
model=lp.EfficientDetLayoutModel(~~~
と記載する必要がある。
5.注意
一応注意事項としては、検出性能が、Detectron2をbackboneにした場合と異なることが挙げられる。性能が良くなるか悪くなるかは何とも言及できないが…。
Kaggleなどで利用したいときはどうなるのだろう?有利になるのか不利になるのか…?
6.まとめ
ということで、やや「逃げ」のような方法でLayoutParserをWindowsOSにinstallする方法を紹介した。
「どうしてもDetectron2をBackboneにしたい」という人以外の要望は満たせたのではないかと思う。