比治山日記

比治山スカイウォーカーです

線画抽出の既存実装 - sketchKerasについて

概要

  • sketchKerasを調べた
  • Pytorchで再実装した

sketchKeras

アニメ絵から線画抽出する既存手法を調べていると,sketchKerasというレポジトリがありました.

github.com

sketchKerasの実装はありますが,解説や論文はなかったので公式実装を調べて, Pytorchで実装し直しました.

モデル構造

sketchKerasは単純なU-netベースのネットワークのようです.公式実装を読み込んでモデルをplot_modelで図にしたものとmodel.summary()して出力した結果を以下に示します.

f:id:exv:20200827011533p:plain:h600
f:id:exv:20200827011221p:plain:h600

再実装・テスト

これがわかれば他のフレームワークで書き直すのは難しくないので,自分でもPytorchで書き直してみました.重みもPytorch用に移植しました.

github.com

以下に実行結果を3例示します.左が元画像,真ん中が3x3 Sobelフィルタをかけた画像,右がsketchKerasの出力結果です.

f:id:exv:20200826204049j:plain
(Original image from https://safebooru.org/index.php?page=post&s=view&id=1234461)
f:id:exv:20200826204109j:plain
(Original image from https://www.metmuseum.org/art/collection/search/45434?searchField=All&sortBy=Relevance&ft=Katsushika+Hokusai&offset=0&rpp=20&pos=1)
f:id:exv:20200826204123g:plain
(Original image from https://safebooru.org/index.php?page=post&s=view&id=3066528)

微分フィルタの結果で認められるようなグラデーションの小さい不連続に起因するエッジが sketchKerasでは抑えられているように見えます.またフォントのエッジがきれいに出ているようにも見えます.