Ruka hadi maudhui makuu
Mafunzo ya AI

Tengeneza Picha Zenye Maandishi Mengi na Miundo Inayodhibitiwa kwa MOSS-Image

Mafunzo haya yanaeleza jinsi ya kusanidi MOSS-Image, kuchagua kati ya miundo yake ya Base na SFT, kutengeneza picha kupitia Python au Gradio, na kuweka maandishi na vitu katika nafasi maalum kwa kutumia vidokezo vya muundo vilivyopangwa. Pia yanaeleza mipangilio inayopendekezwa ya sampuli, hali za matumizi ya kumbukumbu, usaidizi wa ComfyUI na zana za kuboresha vidokezo.

Tengeneza Picha Zenye Maandishi Mengi na Miundo Inayodhibitiwa kwa MOSS-Image

MOSS-Image ni nini?

MOSS-Image ni mradi huria wa kutengeneza picha kutoka kwa OpenMOSS Team. Unatoa modeli msingi ya kubadilisha maandishi kuwa picha na modeli iliyoboreshwa kwa mafunzo yanayosimamiwa, pamoja na pipeline maalum ya Diffusers, kiolesura cha Gradio, programu-jalizi asilia ya ComfyUI, na zana za kuandaa vidokezo vya kina.

Mifano ya MOSS-Image Base na SFT

Mradi huu umeundwa kwa ajili ya tungo zinazochanganya vipengele vya kuona na maandishi yanayosomeka. Unaunga mkono vidokezo vya hadi tokeni 4K na unaweza kutengeneza mitindo kuanzia anime hadi picha zenye uhalisia wa picha. Kiini chake cha 5B kinalenga kutoa utengenezaji wa picha ulio thabiti na wenye ufanisi.

Vipengele muhimu

  • Udhibiti wa mpangilio: Weka maandishi na vipengele vya kuona kwa kutumia ingizo la JSON lenye muundo na visanduku vya mipaka.
  • Uchoraji wa maandishi: Tengeneza maandishi yaliyo wazi ndani ya mabango, madokezo, ubao mweupe na tungo nyingine za picha.
  • Vidokezo virefu: Wasilisha vidokezo vya maandishi vyenye hadi tokeni 4K.
  • Mitindo mbalimbali: Unda picha za mtindo wa anime na zenye uhalisia wa picha.
  • Usaidizi wa uboreshaji maalum: Badilisha modeli msingi kwa kazi na nyanja maalum.
  • Muundo wenye ufanisi: Tengeneza picha kwa kutumia kiini cha 5B.
  • Violesura mbalimbali: Tumia Python, Gradio, ComfyUI au ujuzi tofauti wa kuboresha vidokezo.

Chagua modeli

MOSS-Image inapatikana katika matoleo mawili:

  • MOSS-Image-Base: Modeli msingi ya kubadilisha maandishi kuwa picha. Uzito wake unapatikana kwenye Hugging Face na ModelScope.
  • MOSS-Image-SFT: Toleo lililoboreshwa kutoka kwa modeli msingi kwa kutumia data iliyochaguliwa. Uzito wake unapatikana kwenye Hugging Face na ModelScope.

Kulingana na ulinganisho uliotolewa na mradi, modeli ya SFT hutengeneza upangaji wa maandishi ulio wazi zaidi na mpangilio wa ubao mweupe ulio nadhifu zaidi. Anza na modeli ya Base unapohitaji checkpoint ya awali ya matumizi ya jumla au unapopanga kuiboresha. Tumia SFT wakati uwasilishaji wa maandishi yenye muundo ni muhimu hasa.

Matokeo ya MOSS-Image Base Matokeo ya MOSS-Image SFT

Sakinisha MOSS-Image

Clone hazina, ingia kwenye saraka yake, unda mazingira pepe, iwashe, kisha sakinisha mahitaji:

git clone https://github.com/OpenMOSS/MOSS-Image.git
cd MOSS-Image
python -m venv .venv
source .venv/bin/activate

pip install -r requirements.txt

Mifano hutumia CUDA na kuhamisha pipeline kwenye GPU kwa kutumia pipe.to("cuda"). Hakikisha mazingira yako ya PyTorch yamewekwa kwa jukwaa la GPU unalopanga kutumia kwa inference.

Tengeneza picha kwa Python

MOSS-Image hupakiwa kupitia Diffusers kwa kutumia pipeline yake maalum. Mfano ufuatao unaomba modeli itengeneze mandhari ya jikoni yenye kikumbusho cha Kichina kilichoandikwa kwa mkono:

import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "OpenMOSS-Team/MOSS-Image-Base",
    custom_pipeline="pipeline_moss_image",
    trust_remote_code=True,
    torch_dtype={"default": torch.bfloat16, "vae": torch.float32},
)
pipe.scheduler = type(pipe.scheduler).from_config(pipe.scheduler.config)
pipe.to("cuda")

prompt = (
    "A wide view of a refrigerator beside a kitchen counter with a fruit bowl. "
    "A small sticky note on the refrigerator door is handwritten in Chinese:“\n"
    "记得买牛奶和鸡蛋!\n牛奶两盒,鸡蛋一打。\n顺便带一袋面包。”"
)

image = pipe(
    prompt,
    height=1456,
    width=1456,
    num_inference_steps=50,
    guidance_scale=3.0,
    uncond_skip_layers=[22],
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]

image.save("refrigerator_note.png")

Elewa hoja muhimu

  • custom_pipeline="pipeline_moss_image" huchagua pipeline ya MOSS-Image.
  • trust_remote_code=True huruhusu Diffusers kupakia utekelezaji maalum wa pipeline ya modeli.
  • torch_dtype hutumia bfloat16 kwa chaguo-msingi huku ikihifadhi float32 kwa VAE.
  • height na width huamua vipimo vya matokeo.
  • num_inference_steps=50 hufuata pendekezo chaguo-msingi la sampuli la mradi.
  • guidance_scale=3.0 hutumia thamani inayopendekezwa ya uelekezaji usiotegemea kiainishi.
  • uncond_skip_layers=[22] huwezesha kuruka tabaka la tawi hasi kwenye tabaka la 22.
  • manual_seed(42) hufanya utekelezaji unaorudiwa wenye usanidi uleule uweze kutoa matokeo yanayofanana zaidi.

Endesha kiolesura cha Gradio

Sakinisha vitegemezi vya hiari vya kiolesura cha mtumiaji na uanzishe programu iliyojumuishwa:

pip install -e '.[ui]'
python gradio_app.py --model OpenMOSS-Team/MOSS-Image-Base

Fungua anwani ya ndani iliyoripotiwa na Gradio, ingiza kidokezo chanya, chagua vipimo vya picha, kisha uanze utengenezaji. Ili kujaribu checkpoint iliyoboreshwa, badilisha hoja ya modeli kuwa OpenMOSS-Team/MOSS-Image-SFT.

Mipangilio inayopendekezwa ya sampuli

  • Sampler: Flow-matching Euler
  • Hatua: 50
  • CFG: 3
  • Shift: 5
  • Kuruka tabaka: Kuruka tawi hasi kwenye tabaka la 22
  • Kidokezo hasi cha API ya Python: Tupu

Hizi ni mipangilio chaguomsingi iliyoandikwa ya mradi na zinatoa mwanzo wa kivitendo. Rejelea mwongozo wa mtumiaji kwa Kiingereza wa hazina kwa mapendekezo zaidi kuhusu vidokezo na sampuli.

Dhibiti muundo kwa kutumia mipangilio ya JSON

Vidokezo vya kawaida hueleza kile ambacho picha inapaswa kuwa nacho, lakini havibainishi kwa usahihi mahali kila kipengele kinapaswa kuwekwa. Badala yake, MOSS-Image inaweza kupokea mpangilio wa JSON unaoeleza mandhari yote, vipengele mahususi vya maandishi au vitu, pamoja na visanduku vyake vya mipaka.

Visanduku vya mipaka vya mpangilio kwa vipengele vya picha vilivyowekwa

Mpangilio ufuatao unaeleza bango dogo la kusafiri lenye ukubwa wa 1024 kwa 1024. Liweke kama layout.json ikiwa unataka kulipakia kutoka Python, au libandike moja kwa moja kwenye sehemu ya Prompt ya Gradio.

{
  "summary": {
    "meta": ["poster"],
    "canvas": "single",
    "caption": "Bango dogo la kusafiri lenye mandharinyuma ya rangi ya krimu, mchoro wa mlima wa buluu, na kichwa EXPLORE juu."
  },
  "items": [
    {
      "label": "text",
      "caption": "Kichwa kikubwa cha herufi kubwa za buluu iliyokolea, kilichowekwa katikati juu.",
      "text": "EXPLORE",
      "bbox": [-416, -384, -288, 384]
    },
    {
      "label": "object",
      "caption": "Mchoro bapa wa mlima wa buluu katika sehemu ya chini katikati.",
      "bbox": [-192, -288, 384, 288]
    }
  ],
  "bbox_coord_space": "abs_centralized",
  "bbox_format": "yxyx"
}

Jinsi umbizo la mpangilio linavyofanya kazi

  • summary.caption hueleza mandhari nzima na mtindo wake wa kuona.
  • items huwa na vipengele vya maandishi na vitu vilivyowekwa kivyake.
  • label hutambulisha kipengele kuwa maandishi au kitu.
  • caption hueleza mwonekano na jukumu la kipengele.
  • text huwa na maneno kamili ambayo kipengele cha maandishi kinapaswa kuonyesha.
  • bbox hufafanua nafasi na ukubwa wa kipengele.
  • bbox_format: "yxyx" inamaanisha kwamba kila kisanduku hupangwa kama [y_min, x_min, y_max, x_max].
  • bbox_coord_space: "abs_centralized" inamaanisha kwamba viwianishi hupimwa kutoka katikati ya turubai.

Kwenye turubai ya 1024 kwa 1024, mhimili wote huanzia -512 hadi +512. Kiwianishi cha x huongezeka kuelekea kulia, huku kiwianishi cha y kikiongezeka kuelekea chini. Ili kubadilisha viwianishi vya kawaida vya turubai, toa nusu ya upana wa turubai kutoka kwenye thamani za x na nusu ya urefu wa turubai kutoka kwenye thamani za y.

Tumia kila mara vipimo vya uundaji vinavyolingana na vipimo ambavyo mpangilio uliandaliwa kwa ajili yake. Kutolingana hubadilisha mfumo wa viwianishi na kunaweza kuhamisha vipengele kutoka kwenye nafasi vilizokusudiwa.

Wasilisha mpangilio kupitia Python

Pakia faili la JSON, libadilishe kuwa mfuatano, kisha upitishe mfuatano huo kama kidokezo cha pipeline:

import json
import torch

with open("layout.json", "r", encoding="utf-8") as file:
    layout = json.load(file)

layout_prompt = json.dumps(layout, ensure_ascii=False)

image = pipe(
    layout_prompt,
    height=1024,
    width=1024,
    num_inference_steps=50,
    guidance_scale=3.0,
    uncond_skip_layers=[22],
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]

image.save("travel_poster.png")

Unaweza kurekebisha muundo bila kuandika upya kidokezo kizima. Hariri maandishi, maelezo, au kisanduku cha mipaka cha kipengele kimoja, kisha tengeneza picha tena. README pia inaeleza kwamba mbinu hii iliyopangwa inaweza kusaidia uhariri unaodhibitiwa na zana rafiki za kupanga muundo.

Dhibiti kumbukumbu ya GPU

Kiolesura cha Gradio hutoa hali tatu za kumbukumbu chini ya mipangilio ya Advanced:

  • GPU resident: Huweka modeli nzima kwenye GPU kwa ufikiaji wa moja kwa moja.
  • Component: Huhamisha vipengele vya modeli kati ya CPU na GPU inapohitajika.
  • Sequential fallback: Hupunguza matumizi ya kumbukumbu kwa gharama ya uundaji wa polepole zaidi.

Ikiwa modeli haiwezi kutoshea kwenye kumbukumbu ya GPU inayopatikana, chagua hali ya Sequential au punguza ukubwa wa picha ya matokeo. Ukusanyaji wa DiT umezimwa kwa chaguomsingi na haupatikani katika hali ya Sequential.

Tumia MOSS-Image na ComfyUI

Hazina hii inajumuisha programu-jalizi asilia ya MOSS-Image kwa ComfyUI. Tafuta MOSS-Image katika ComfyUI Manager ili kuisakinisha. Mradi pia hutoa mtiririko wa mfano unaoweza kuagizwa kama mwanzo.

Mradi unaendelea kufanyia kazi ujumuishaji katika hazina rasmi ya ComfyUI. Hadi wakati huo, fuata maelekezo ya kusakinisha na kutumia ComfyUI ya hazina.

Uandishi wa vidokezo wa hali ya juu kwa Prompt Enhancer

Prompt Enhancer iliyojumuishwa ya MOSS-Image hubadilisha wazo la msingi la picha kuwa maelezo ya kina au kidokezo cha mpangilio wa anga. Imeundwa kwa mawakala wa familia ya GPT-6 walio na zana za faili za ndani na Python.

  1. Sakinisha folda ya skills/moss-image-prompt-enhancer kwenye saraka ya ujuzi ya wakala wako.
  2. Washa $moss-image-prompt-enhancer pamoja na wazo la picha.
  3. Eleza ikiwa unataka maelezo ya kina au matokeo ya Layout.
  4. Toa vipimo vya turubai vinavyokusudiwa unapounda mpangilio.
  5. Bandika matokeo yaliyokusanywa kwenye kidokezo chanya cha MOSS-Image.
  6. Kwa matokeo ya Layout, tengeneza picha kwa vipimo vilevile vya turubai vilivyotumika wakati wa ukusanyaji.

Skripti iliyojumuishwa hubadilisha michoro ya viwianishi vya pikseli kuwa JSON fupi kwa kutumia viwianishi kamili vilivyowekwa katikati. Hutayarisha vidokezo pekee na haiwasiliani na huduma ya kutengeneza picha.

Vidokezo vya vitendo

  • Anza na chaguo-msingi zilizoandikwa: Tumia hatua 50, CFG 3, shift 5, na kuruka tawi hasi kwenye safu ya 22 kabla ya kufanya majaribio.
  • Weka maandishi yanayoombwa wazi: Weka maneno kamili kwenye kidokezo au kwenye sehemu ya text ya kipengee.
  • Tumia miundo iliyopangwa kwa miundo changamano: Mabango, michoro, na mandhari yenye maandishi mengi hunufaika kutokana na vipengele vilivyoelezwa kando na visanduku vya mipaka.
  • Linganisha vipimo kwa uangalifu: Viwianishi vya mpangilio vinahusishwa na upana na urefu wa turubai iliyochaguliwa.
  • Funga seed unapofanya marekebisho: Kudumisha seed ileile hukusaidia kulinganisha mabadiliko ya kidokezo, modeli, na mpangilio.
  • Punguza ukubwa wa picha kumbukumbu inapokuwa ndogo: Hii ni mojawapo ya suluhisho zilizopendekezwa waziwazi na mradi.
  • Linganisha Base na SFT: Kipimo cha SFT kinaweza kufaa zaidi wakati upangaji ulio wazi na mpangilio wa maandishi uliopangwa vizuri ni vipaumbele.

Hitimisho

MOSS-Image inachanganya utengenezaji wa jumla wa picha kutoka kwenye maandishi na uonyeshaji bora wa maandishi pamoja na udhibiti wa utungaji uliopangwa. Unaweza kuanza na mchakato wa Python au kiolesura cha Gradio, kisha kuhamia kwenye mipangilio ya JSON wakati uwekaji sahihi ni muhimu. Muunganisho wa ComfyUI, hali za kumbukumbu, na ujuzi wa kuboresha vidokezo hutoa njia za ziada za kuingiza modeli kwenye mitiririko ya kazi ya kuona. Msimbo wa mchakato wa kujitegemea unapatikana chini ya Leseni ya Apache 2.0.