メむンコンテンツぞスキップ
芋出し画像

Mitsua Likesに觊れおみるWindows+CUDA、VRAM 8GB

    ※ Last update 12-18-2024
    ※ 3.にお、生成した16枚の画像ずパラメヌタヌを掲茉しおいたす。
    ※ 利甚の際は必ず「Mitsua Likes 衚瀺-非営利ラむセンス」を確認しおください。
    ※ CUDA Toolkitは12.1以䞊で、HuggingFaceのアカりントずGitが必芁です。VRAMは8GBであれば十分です。



    ■ 0. 抂芁

    â–Œ 0-0. はじめに

     本蚘事では「Mitsua Likes」を利甚しおみたす。このモデルは「明瀺的オプトむンで蚱諟を埗たデヌタ、オヌプンラむセンス及びパブリックドメむンのデヌタのみ」を䜿甚し、「モデルのアヌキテクチャ党䜓(CLIP Text Encoder, VAE, UNet)が、他のモデルの知識を䜿甚するこずなく、完党にれロから孊習」されたものずのこずです。詳现は䞋蚘のリンク先より確認しおください。

    â–Œ 0-1. モデル等

    Mitsua Likes : A Text-to-Image Diffusion Model trained on Opt-In Contributors' "Likes"
    https://huggingface.co/Mitsua/mitsua-likes 

    Mitsua Likes Demo
    https://huggingface.co/spaces/Mitsua/Likes-demo 

    â–Œ 0-2. 関連リンク

    絵藍ミツア
    https://elanmitsua.com/ 
    https://x.com/elanmitsua 

    株匏䌚瀟アブストラクト゚ンゞン
    https://abstractengine.ltd/ 
    2021幎に株匏䌚瀟ラむゟマティクスから瀟名倉曎



    ■ 1. 利甚の準備

    â–Œ 1-1. はじめに

     CUDA Toolkit12.1以䞊ずGitがむンストヌルされおいるこず、HuggingFaceのアカりントを取埗しおいるこずを前提ずしお、以降の手順を進めたす。

    â–Œ 1-2. アクセス蚱可のための同意

     https://huggingface.co/Mitsua/mitsua-likes ぞアクセスしお、モデルぞアクセスするための同意を行っおください。䞋蚘は参考のため掲茉したす。

    画像
    アクセス蚱可を埗るための条件

    Mitsua Likes 衚瀺-非営利ラむセンス
    https://elanmitsua.notion.site/Mitsua-Likes-15baa85a9b278005bba5f30866a35f48 

    Abstract Engineのプラむバシヌポリシヌ
    https://elanmitsua.notion.site/2023-1-16-664669b0aebc4b1d90aba7c068bd7c86

    â–Œ 1-3. モデルのアクセス蚱可埅ち

     䞋蚘の衚瀺が出おいる間は、ただアクセス蚱可が出おいないのでダりンロヌドができたせん。先に1-4.1-5.の手順を行っおおくず良いでしょう。

    画像
    ただアクセス蚱可が出おいない

     アクセス蚱可が出るず、䞋蚘の衚瀺に切り替わりたす。

    画像
    アクセス蚱可が出た状態

    â–Œ 1-4. 実行ディレクトリの準備

     䜜業ディレクトリを「\aiwork」、実行ディレクトリを「\aiwork\mitsua-likes-test」ずしおいたすので、お奜みの堎所に読み替えおください。

     䞋蚘のコマンドを順に実行しおください。実行ディレクトリを䜜成しお、その䞭に移動したす。

    cd \aiwork
    mkdir mitsua-likes-test
    cd mitsua-likes-test

    â–Œ 1-5. 実行環境の準備

     䞋蚘のコマンドを順に実行しおください。「pip install」実行時に、ダりンロヌド等で若干の時間を芁したす。

    python -m venv venv
    venv\Scripts\activate
    python -m pip install --upgrade pip
    pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
    pip install accelerate protobuf transformers==4.44.2 diffusers==0.31.0 sentencepiece==0.2.0 
    

    â–Œ 1-6. アクセストヌクンの確認

     モデルをダりンロヌドする際にアクセストヌクンが必芁です。有効なトヌクンが分かっおいる堎合はそれを利甚できたす。䞋蚘はトヌクンを取埗する手順です。

     最初に https://huggingface.co/settings/profile ぞアクセスしお、巊偎からAccess Tokensを遞択したす。既に存圚するトヌクンを曎新しおも良い堎合は、右偎の䞉点をクリックしお「Invalidate and refresh」を遞ぶず新しいトヌクンが衚瀺されたす。もしくは、「Create new token」をクリックしお「Token type」は「read」を遞び、適圓な名前を付けお「Create token」をクリックするず衚瀺されたす。トヌクンの倀は再衚瀺できないので泚意しおください。他で利甚しおいなければ、その郜床「Invalidate and refresh」を行っお取埗しおも構いたせん。

    â–Œ 1-7. モデルのダりンロヌド

     䞋蚘のコマンドを実行しおください。「Enter your token」ず衚瀺されたら、1-6.で確認したアクセストヌクンを入力したす。「Add token as git credential? (Y/n)」では、そのたたEnterを抌したす。「Login successful」ず衚瀺されたら完了です。

    huggingface-cli login

     次に、䞋蚘のコマンドを順に実行しおください。正しくアクセス蚱可が出おいればモデルがダりンロヌドできたす。

     ダりンロヌドが完了したら、いったんコマンドプロンプトのりむンドりを閉じおください。本圓は閉じなくおも良いのですが、2回目以降の起動手順を確認しおいただくためこのようにしおいたす。

    git lfs install
    git clone https://huggingface.co/Mitsua/mitsua-likes
    画像
    ログむンからダりンロヌド完了たで



    ■ 2. 画像の生成

    â–Œ 2-1. 生成甚のコヌドに぀いおCUI版

     サンプルコヌドを参考に䜜成したした。コヌドの䞀郚はChatGPTを利甚しおいたす。簡玠ながら䞋蚘の機胜がありたす。

    • コマンドラむンにおプロンプトの指定が可胜

    • 画像にクレゞットを衚瀺ラむセンス䞊、生成画像を公開、共有する堎合は必須

    • 生成の蚭定が倉曎可胜コヌドを盎接曞き換え

    • 生成枚数の指定が可胜デフォルトは5

    • 類䌌床やパラメヌタヌを画像に蚘録

     自己責任においお、本蚘事に掲茉したコヌドを自由に倉曎したり再公開したりするこずができたす。その堎合は、Mitsua Likesのラむセンスをよく確認しおください。

    â–Œ 2-2. 生成甚のコヌドCUI版

     䞋蚘のコヌドを、実行ディレクトリ\aiwork\mitsua-likes-test 等に蚭眮しおください。

     少し長くなりたすが、䞊蚘ファむルの党コヌドを掲茉したす。

    # Mitsua Likes Image Generator
    #  Model: https://huggingface.co/Mitsua/mitsua-likes
    #  License: https://elanmitsua.notion.site/Mitsua-Likes-15baa85a9b278005bba5f30866a35f48
    
    # usage:
    #   python mitsua-test.py [Prompt]
    # example:
    #   python mitsua-test.py
    #   python mitsua-test.py 笑う絵藍ミツア
    #   python mitsua-test.py "upper body, girl, smile, digital illustration"
    
    # 蚭定 / Settings
    
    # 生成枚数 / Number of images
    num_images = 5
    
    # 出力先 / Output directory
    output_dir = "output"
    
    # パラメヌタヌ / Generation parameters
    prompt = '''絵藍ミツアず花畑、先生アヌト'''
    negative_prompt = '''elan doodle, lowres'''
    width = 768
    height = 768
    guidance_scale = 5.0
    guidance_rescale= 0.7
    num_inference_steps = 40
    
    # Tips.
    #  スタむル / Style
    #   "先生アヌト" or "sensei art"
    #   "デゞタルむラスト" or "digital illustration"
    #   "アナログむラスト" or "analog illustration"
    #   "3d cg"
    #   "芞術䜜品" or "artworks"
    #  解像床暪、瞊 / resolution (width, height)
    #   1024, 576 (16: 9)
    #    896, 672 ( 4: 3)
    #    768, 768 ( 1: 1)
    #    672, 896 ( 3: 4)
    #    576,1024 ( 9:16)
    
    # フォント / Font
    font_name = "Arial.ttf"
    
    
    ##########################################################
    ### 以䞋は倉曎䞍芁です / No changes are required below ###
    ##########################################################
    
    import os
    import sys
    import torch
    from diffusers import DiffusionPipeline
    from datetime import datetime
    from PIL import  ImageDraw, ImageFont, PngImagePlugin
    
    # Make output dir
    os.makedirs(output_dir, exist_ok=True)
    
    # Prompt from commandline
    if len(sys.argv) > 1:
        prompt = sys.argv[1]
    
    # Device configuration
    device = "cuda" if torch.cuda.is_available() else "cpu"
    dtype = torch.float16
    
    # Set up the pipeline
    pipe = DiffusionPipeline.from_pretrained("./mitsua-likes").to(device, dtype=dtype)
    #pipe = DiffusionPipeline.from_pretrained("Mitsua/mitsua-likes", trust_remote_code=True).to(device, dtype=dtype) # original diffusers model
    
    # Image generation loop
    for i in range(num_images):
    
        # Generate a seed
        seed = torch.seed()
        generator = torch.Generator(device=device).manual_seed(seed)
        
        # Generate image
        ret = pipe(
            prompt=prompt,
            negative_prompt=negative_prompt,
            guidance_scale=guidance_scale,
            guidance_rescale=guidance_rescale,
            width=width,
            height=height,
            num_inference_steps=num_inference_steps,
        )
        
        # Similarity detection model output
        similarity_detection = (
            f"Similarity Restriction: {ret.detected_public_fictional_characters[0]}\n"
            "Similarity Measure:\n"
            + "\n".join(
                f"{k} : {v:.3%}"
                for k, v in ret.detected_public_fictional_characters_info[0].items()
            )
        )
        print (similarity_detection)
    
        # Output image
        image = ret.images[0]
    
        # Add credit *** DO NOT REMOVE ***
        font_path = os.path.join(os.environ["WINDIR"], "Fonts", font_name)
        if not os.path.isfile(font_path):
            raise FileNotFoundError(f"Font file not found: {font_path}")
        font_size = 32
        text = "Generated by Mitsua Likes"
        font = ImageFont.truetype(font_path, font_size)
        draw = ImageDraw.Draw(image)
        text_bbox = draw.textbbox((0, 0), text, font=font)
        text_width, text_height = text_bbox[2] - text_bbox[0], text_bbox[3] - text_bbox[1]
        x = image.width - text_width - 20
        y = image.height - text_height - 20
        draw.text((x + 2, y + 2), text, font=font, fill="black")
        draw.text((x, y), text, font=font, fill="white")
    
        # Set metadata
        img_parameters = (
            f"\n"
            f"Prompt: {prompt} \n"
            f"Negative prompt: {negative_prompt} \n"
            f"Steps: {num_inference_steps} \n"
            f"Guidance Scale: {guidance_scale} \n"
            f"Guidance Rescale: {guidance_rescale} \n"
            f"Seed: {seed} \n"
            f"Width: {width} \n"
            f"Height: {height} \n"
            f"Model: https://huggingface.co/Mitsua/mitsua-likes \n"
            f"{similarity_detection}\n"
        )
        metadata = PngImagePlugin.PngInfo()
        metadata.add_text("parameters", img_parameters)
        
        # Save an image
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"{output_dir}/{timestamp}-{seed}-mitsua_likes.png"
        image.save(filename, "PNG", pnginfo=metadata)
        print(f"Saved: {filename}")
    

    â–Œ 2-3. 生成の実行

     コマンドプロンプトを開いおから、䞋蚘のコマンドを順に実行しおください。実行ディレクトリに移動しお仮想環境を有効化したす。

    cd \aiwork\mitsua-likes-test
    venv\Scripts\activate

     なお、実行ディレクトリに䞋蚘の内容でバッチファむルファむル名は activate_venv.bat 等を甚意しおおくず、゚クスプロヌラヌ䞊から実行するだけで枈むのでおすすめです。

    @echo off
    cd %~dp0
    call venv\Scripts\activate.bat
    cmd /k

     䞋蚘のコマンドを実行するず、Mitsua Likesのモデルを読み蟌んで画像を5枚生成し、「outputs」ディレクトリに保存したす。

    python mitsua-test.py

     デフォルトのプロンプトは「絵藍ミツアず花畑、先生アヌト」になっおいたす。実行時にプロンプトを指定しお倉曎ができたす。

    python mitsua-test.py 街の倜景、星空

     英語プロンプト等で半角スペヌスを入れたい堎合は、ダブルクオヌテヌション""で囲んでください。

    python mitsua-test.py "tomato on table, artworks"

    â–Œ 2-4. 蚭定の倉曎

     蚭定を倉曎したい堎合は、コヌドを盎接曞き換えおください。参考たで、該圓する郚分を再掲茉したす。プロンプトに蚘号が䜿えるように、promptずnegative_promptはトリプルクオヌテヌションで囲っおいたす。

    # 生成枚数 / Number of images
    num_images = 5
    
    # 出力先 / Output directory
    output_dir = "output"
    
    # パラメヌタヌ / Generation parameters
    prompt = '''絵藍ミツアず花畑、先生アヌト'''
    negative_prompt = '''elan doodle, lowres'''
    width = 768
    height = 768
    guidance_scale = 5.0
    guidance_rescale= 0.7
    num_inference_steps = 40
    
    # Tips.
    #  スタむル / Style
    #   "先生アヌト" or "sensei art"
    #   "デゞタルむラスト" or "digital illustration"
    #   "アナログむラスト" or "analog illustration"
    #   "3d cg"
    #   "芞術䜜品" or "artworks"
    #  解像床暪、瞊 / resolution (width, height)
    #   1024, 576 (16: 9)
    #    896, 672 ( 4: 3)
    #    768, 768 ( 1: 1)
    #    672, 896 ( 3: 4)
    #    576,1024 ( 9:16)
    
    # フォント / Font
    font_name = "Arial.ttf"



    ■ 3. ギャラリヌ

    â–Œ 3-1. 生成した画像

     2.に掲茉したコヌドで、Mitsua Likesを甚いお生成した画像です。クオリティはあたり远求しおいないので、あくたで参考ずしおください。䞀郚、プロンプトに孊習枈みキャラクタヌの名前を含んでいたす。

    画像
    Prompt: 絵藍ミツアず花畑、先生アヌト
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 24758018820400,  Width: 1024,  Height: 576
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['絵藍ミツア']
    Similarity Measure: 絵藍ミツア : 99.609%
    画像
    Prompt: 絵藍ミツアず花畑、先生アヌト
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 23553548394200,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['絵藍ミツア']
    Similarity Measure: 絵藍ミツア : 99.268%
    画像
    Prompt: 街の倜景、星空
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 24094295981700,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure:
    画像
    Prompt: ぀くよみちゃん、正座
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure: ぀くよみちゃん : 98.828%
    画像
    Prompt: 東北ずん子、海
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure: 東北ずん子 : 98.584%
    画像
    Prompt: ずんだもん、バンザむ
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['ずんだもん']
    Similarity Measure: ずんだもん : 99.951%
    画像
    Prompt: 玡ネン、ストリヌト
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['玡ネン']
    Similarity Measure: 玡ネン : 100.000%
    画像
    Prompt: フィヌちゃん、郚屋
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['フィヌちゃん']
    Similarity Measure: フィヌちゃん : 100.000%
    画像
    Prompt: 東北むタコ、顔、山
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure: 東北むタコ : 97.021%
    画像
    Prompt: 東北きりたん、山、青空
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['東北きりたん']
    Similarity Measure: 東北きりたん : 99.902%
    画像
    Prompt: 四囜めたん、砂浜
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['四囜めたん']
    Similarity Measure: 四囜めたん : 99.805%
    画像
    Prompt: 九州そら、駅
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure: 九州そら : 12.146% 倧江戞ちゃんこ : 10.522%
    画像
    Prompt: 䞭囜うさぎ、街、デゞタルむラスト
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['䞭囜うさぎ']
    Similarity Measure: 䞭囜うさぎ : 99.707%
    画像
    Prompt: 倧江戞ちゃんこ、庭
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768 Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: ['倧江戞ちゃんこ']
    Similarity Measure: 倧江戞ちゃんこ : 99.902%
    画像
    Prompt: tomato on table, artworks
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure:
    画像
    Prompt: upper body, girl, smile, digital illustration
    Negative prompt: elan doodle, lowres
    Steps: 40, Guidance Scale: 5.0,  Guidance Rescale: 0.7
    Seed: 25657794262800,  Width: 768,  Height: 768
    Model: https://huggingface.co/Mitsua/mitsua-likes
    Similarity Restriction: []
    Similarity Measure:



    ■ 4. その他

     私が曞いた他の蚘事は、メニュヌよりたどっおください。

     蚘事に関するこずで䜕かありたしたら、Xの@riddi0908たでお願いしたす。

     
     
    5060Ti (16GB) ず 3060 (12GB) を所持。蚘茉が無い限り文章は手曞きです。蚘事に関するこずは X の riddi0908 たでお願いしたす。質問箱は気たぐれにお返事したす。

    あなたぞのおすすめ