🔍

NDLOCR-LiteのonnxファイルをC#から直接使用してみた(レイアウト検出)

に公開

概要

NDLOCR-Liteが使用しているレイアウト検出モデルの
deim-s-1024x1024.onnxをC#から使用してみました。
ML.NETとonnxファイルを試すのが目的で実用コードではありません。

環境

  • .Net 8.0
  • ML.NET(Microsoft.ML.OnnxRuntime)
  • SkiaSharp

コード

https://github.com/misogohei/NDLOCRDeimTest

実行

dotnet run "onnxファイルパス" "画像ファイルパス"

処理

モデルへの入出力形式はNetrondeim-s-1024x1024.onnx渡して確認。

  1. 指定された画像ファイルからonnxへの入力用のデータを生成する
    1. 入力サイズは800x800なので画像全体が収まるようにパディングを入れてからリサイズする
    2. 画像ファイルのRGBRGBRGB...のデータ並びをRRR...GGG...BBB...の並びに変換する
    3. 画素情報(0-255)を入力用の(0.0-1.0)に変換する
      単純な画素/255後、ndlocr-liteの元ソースにある変換式を適用する
  2. MLContextからonnxファイルを読み込んで入力データから推論させる
  3. 評価値が0.1未満は捨てる
  4. 正方形の入力なので結果のBBoxを元の画像の座標に戻して結果を画像化する
    (NMS処理は入っていない)

結果

微妙に違う。

  • 実行結果
    digidepo_2531162_0024_result
  • ndrocr-liteの結果
    vis_digidepo_2531162_0024

出典
国立国会図書館総務部 編『国立国会図書館スタッフ・マニュアル』E-2,国立国会図書館,1963.8. 国立国会図書館デジタルコレクション

Discussion