先日、以下の記事を執筆しました。

今回は、Google Colabを用いたNDLOCRの実行にかかる時間について、かんたんな調査を行なったので、その結果をまとめます。

設定

GPUは以下です。

Fr==iNGF=NP=VPa=/rG=NAIUn=0AoP=opD=cU=rI=e=rANT=Ts=u2-ae=e3s=n9Smm=s5eGI=nMep=lCsID=i0I=a:=n6==g:4P=V=26e=1CI=p60r=0PID=r:.f=00=o23=-=c92=S=e.PP=X=s20ew=M=s03rr=22=e2s:=.3=s2iU=.W=ss=.P=fta=/I=oDeg=D=urne=O3=nic/=f0=dveC=f0=e-a=WT=rMp=y=p=V=e=eB=0=ru=0=ss=0=i-=0P=oI=0r=nd=00o=:=0Mc==0ie=4M=:Bs=6e=0s=0m=0/=.o=:n=3r=01a=2y=46m=.D-=.1e=0iU=06=3ss=0=pa=OM=.g=fi=Ae=fB===C=U==DVG==AoP==lU==Va-==etU==rit=0=sli=%=iel==o==nU==:nC=GU=co=Ps=1om=Ua=1rp=Dg=.ruM=eMe=2.tI=fe=eG=am=E=uNo=CMM=l/r=C..=0tAy===

以下の画像を用いました。サイズは5000 x 3415 px で、 1.1 MB でした。

https://dl.ndl.go.jp/info:ndljp/pid/3437686/6

推論の処理内容として、以下の4つがありますが、今回は「レイアウト抽出」と「文字認識(OCR)」のみを実行しています。

‘-p 0’: ノド元分割
‘-p 1’: 傾き補正
‘-p 2’: レイアウト抽出
‘-p 3’: 文字認識(OCR)

Googleドライブの場合

マウントしたGoogleドライブをファイルの入出力に使用する場合について考察します。以下の入力オプションを使用します。

Sigle input dir mode(-s sで指定)※デフォルト

1ファイルを対象に実行したところ、以下のような結果になりました。

ID処理タイムスタンプかかった時間(秒数)
p1開始2022-04-29 05:30:5811
p2推論の開始2022-04-29 05:31:092
p3終了2022-04-29 05:31:11(合計) 13

p1からp2までの間は設定ファイル等のロードを行なっている時間です。画像に対する推論時間は2sでした。

同じ画像をもう1件登録して、2ファイルを対象に実行しました。

ID処理タイムスタンプかかった時間(秒数)
p1開始2022-04-29 05:38:0210
p2推論の開始2022-04-29 05:38:126
p3終了2022-04-29 05:38:18(合計) 16

さらに、同じ画像をもう1件登録して、3ファイルを対象に実行しました。

ID処理タイムスタンプかかった時間(秒数)
p1開始2022-04-29 05:40:2610
p2推論の開始2022-04-29 05:40:368
p3終了2022-04-29 05:40:44(合計) 18

上記の結果から、設定ファイルの初期ロードに10s程度かかり、各画像に対して、2~3s程度の処理時間がかかることがわかります。

冒頭で共有した私が作成したノートブックでは、複数の入力画像があっても、以下のオプションにより、画像ファイル毎にプログラム main.py を実行するようにしていました。

Image file mode(-s fで指定) (単体の画像ファイルを入力として与える場合はこちら)

このことから、各画像ファイルに対して、1ファイル目を除き、初期ロードに要する10s程度の時間が不要にかかっていることになります。

実際、 Image file mode を用いて2つのファイルを対象に実行したところ、 Sigle input dir mode に比べて、ちょうど10s(初期ロードに要する時間)増加していることが確認できました。

ID処理タイムスタンプかかった時間(秒数)
p11ファイル目の開始2022-04-29 05:52:5911
p2推論の開始2022-04-29 05:53:102
p3終了2022-04-29 05:53:121
p42ファイル目の開始2022-04-29 05:53:1310
p5推論の開始2022-04-29 05:53:232
p6終了2022-04-29 05:53:25(合計) 26

(当たり前のことではありますが、)処理対象の画像数が多い場合には、 Sigle input dir mode を使用することをお勧めします。

(参考)GCS(Google Cloud Storage)の場合

今回は、Google ColabからマウントしたGCSを使用した場合についても計測してみました。各種設定によって結果は変わってくると思いますが、上述したGoogleドライブとの比較が目的です。

以下の入力オプションを使用します。

Sigle input dir mode(-s sで指定)※デフォルト

1ファイルの場合

ID処理タイムスタンプかかった時間(秒数)
p1開始2022-04-29 06:06:0813
p2推論の開始2022-04-29 06:06:2113
p3終了2022-04-29 06:06:34(合計) 26

2ファイルの場合

ID処理タイムスタンプかかった時間(秒数)
p1開始2022-04-29 06:04:0812
p2推論の開始2022-04-29 06:04:2027
p3終了2022-04-29 06:04:47(合計) 39

初期ロードの時間はあまり変化がありませんが、1画像あたりの処理時間が約5倍程度になりました。推論結果の画像やテキストファイルの保存に時間を要していました。

(これも当たり前のことではありますが、)大量の画像を扱う際には、今回のノートブックの入出力にGCSを使うのはお勧めできないことがわかりました。

まとめ

Google Colabを用いたNDLOCRの実行時間を調べてみました。さまざまな設定によって結果は変わってくるかと思いますが、参考になる部分があれば幸いです。