🚀 バタフライGAN
このモデルは、無条件画像生成を行うGANモデルです。少ないトレーニングデータでも高速かつ安定した学習が可能で、美しいバタフライの画像を生成することができます。
🚀 クイックスタート
このモデルを使用するには、以下の手順に従ってください。
import torch
from huggan.pytorch.lightweight_gan.lightweight_gan import LightweightGAN
gan = LightweightGAN.from_pretrained("ceyda/butterfly_cropped_uniq1K_512")
gan.eval()
batch_size = 1
with torch.no_grad():
ims = gan.G(torch.randn(batch_size, gan.latent_dim)).clamp_(0., 1.)*255
ims = ims.permute(0,2,3,1).detach().cpu().numpy().astype(np.uint8)
✨ 主な機能
- 高速かつ安定した学習:単一のRTX - 2080 GPUで数時間のトレーニングで収束し、100未満のトレーニングサンプルでも安定した性能を発揮します。
- 低データトレーニング:論文で述べられているように、少ないデータでのトレーニングが可能です。
📦 インストール
このモデルを使用するには、huggingface/community - events リポジトリをインストールする必要があります。
💻 使用例
基本的な使用法
import torch
from huggan.pytorch.lightweight_gan.lightweight_gan import LightweightGAN
gan = LightweightGAN.from_pretrained("ceyda/butterfly_cropped_uniq1K_512")
gan.eval()
batch_size = 1
with torch.no_grad():
ims = gan.G(torch.randn(batch_size, gan.latent_dim)).clamp_(0., 1.)*255
ims = ims.permute(0,2,3,1).detach().cpu().numpy().astype(np.uint8)
📚 ドキュメント
モデルの説明
このモデルは、論文: Towards Faster and Stabilized GAN Training for High - fidelity Few - shot Image Synthesis に基づいており、Light - GANモデルとも呼ばれています。この論文では、単一のRTX - 2080 GPUで数時間のトレーニングで収束し、100未満のトレーニングサンプルでも安定した性能を発揮することが述べられています。
このモデルは、ここ のスクリプトを使用してトレーニングされており、lucidrainsの リポジトリ から適応されています。
上記のスクリプトとは異なり、公式リポジトリの変換を使用しました。トレーニング画像はすでにクロップされ、整列されていたためです。公式論文の実装 リポジトリ
transform_list = [
transforms.Resize((int(im_size),int(im_size))),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
]
想定される用途と制限
このモデルは、楽しみや学習を目的としています。
制限とバイアス
- トレーニング中に、各種から1匹のバタフライのみが含まれるようにデータセットをフィルタリングしました。そうしないと、モデルが生成するバタフライのバリエーションが減少します(画像が多いいくつかの種が支配的になります)。
- データセットは、['pretty butterfly','one butterfly','butterfly with open wings','colorful butterfly'] のCLIPスコアを使用してもフィルタリングされました。これは、完全なデータセット からバタフライが含まれない画像(科学的なタグだけの画像、混乱した画像)を排除するために行われました。しかし、このようなアプローチが特定のシナリオで問題になる可能性があります。誰がどのバタフライが「きれい」でデータセットに含まれるべきかを判断するのでしょうか。例えば、CLIPがバタフライを識別できない場合、それをデータセットから除外してしまい、バイアスを引き起こす可能性があります。
トレーニングデータ
1000枚の画像が使用されました。この数を増やすことは可能でしたが、データセットを手動で選別する時間がありませんでした。また、論文で述べられているように、低データトレーニングが可能かどうかを確認したかったためです。
詳細は データカード を参照してください。
トレーニング手順
2台のA4000で約1日間トレーニングされました。7 - 12時間で良好な結果が得られます。重要なパラメータは "--batch_size 64 --gradient_accumulate_every 4 --image_size 512 --mixed_precision fp16" です。トレーニングログは ここ で確認できます。
評価結果
100枚の画像でFIDスコアが計算されました。異なるチェックポイントの結果は ここ で確認できます。ただし、FIDスコアの限界があるため、あまり意味があるとは言えません。
生成された画像
デモ で生成された画像を試すことができます。
BibTeXエントリと引用情報
このモデルはhugganスプリント中に作成されました。
モデルのトレーニング:Ceyda Cinarel https://twitter.com/ceyda_cinarel
追加の貢献:Jonathan Whitaker https://twitter.com/johnowhitaker
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。