はじめに
いまさらですが、ColaboratoryでAnime2Sketchを試してみました。本記事は手っ取り早く試すための備忘録的なもので、理論に関しては触れていません。Colaboratoryを使えることが前提ですので、Colaboratoryの使用方法がわからない場合は、Webの無料のサービスがあるのでそちらを利用してください
Anime2Sketchとは
Anime2Sketchは、イラストやアニメアート、マンガ用のスケッチ画作成ツールです。
"Adversarial Open Domain Adaption for Sketch-to-Photo Synthesis"をベースにしたアプリケーションとのことで**MIT License**としてリリースされています。
準備
Colaboratoryにアクセスし、ノートブックを新規作成
ランタイムをGPUに変更し接続
Xiaoyu XiangさんのGitHubよりプロジェクトをクローン
!git clone https://github.com/Mukosame/Anime2Sketch.git
フォルダの変更
%cd Anime2Sketch
事前学習済みデータがGoogleDriveに公開されているのでgdownでダウンロード
import gdown
url='https://drive.google.com/uc?id=1RILKwUdjjBBngB17JHwhZNBEaW4Mr-Ml'
output='./weights/netG.pth'
gdown.download(url, output, quiet=True)
実行
test.py を参考に作成
from data import get_image_list
from model import create_model
from data import read_img_path, tensor_to_img, save_image
gpu_ids = [0]
model = create_model(gpu_ids)
model.eval()
繰り返す場合は、以下のセルのみ実行
test.pyでは、test_samplesに保存された画像すべてが変換されますが、ここでは指定のファイルのみとしています
load_size = 512
test_path = "test_samples/madoka.jpg"
aus_path = "./res.png"
img, aus_resize = read_img_path(test_path, load_size)
aus_tensor = model(img)
aus_img = tensor_to_img(aus_tensor)
save_image(aus_img, aus_path, aus_resize)
処理結果は、res.pngとして保存しており、ローカルマシンへのダウンロードや自分のGoogleDriveをマウントしてそこにコピーできます
ハイパーパラメータ
内部処理で、オリジナルの画像のサイズを変換前に512x512に変更し、保存前にもとの画像のサイズに戻しています
変換対象の画像サイズが大きい場合、512x512では結果がぼやけてしまいます、
シャープなエッジが必要な場合、load_size = 512を 768, 1024等に変更してみてください
接続直後では、load_size = 4096まで成功しています
処理結果
例1
冒頭の画像は、load_size 4096で処理
例2
例3
細かい画像は苦手みたいなので背景がシンプルなもの
ジブリ公開画像 porco028 1920 x 1038
issue
パイパーパラメータを変更して何度か試しているとCudaのOut Of Memoryが生じます
RuntimeError: CUDA out of memory
その場合は、ランタイムを再起動して、再度cellを実行する必要があります。
Cudaメモリ操作用のなんらかのまじないがあるかもしれません