پرش به محتوا
← همهٔ یادداشت‌ها

آپ‌اسکیل و بازسازی تصویر در Forge روی GPU ابری

·۸ دقیقه مطالعه·تیم جی‌پی‌یو

درِ سفالی شکستهٔ یک قوری ژاپنی که ترک‌هایش با لاک طلایی به روش کینتسوگی پر و بازسازی شده، روی پس‌زمینهٔ سفید.

آپ‌اسکیل و بازسازی تصویر در Forge کارِ یک کارت گرافیک اجاره‌ای است، نه یک لپ‌تاپ معمولی. در این آموزش یک ماشین GPU ابری ساعتی می‌گیریم، قالب SD WebUI Forge را بالا می‌آوریم و دو کار را یاد می‌گیریم: بزرگ کردن تصویر با حفظ جزئیات (Upscale) و عوض کردن بخشی از تصویر بدون دست زدن به بقیه‌اش (Inpaint).

کل کار حدود بیست دقیقه طول می‌کشد و روی ارزان‌ترین کارت دوازده گیگابایتی، در زمان نوشتن این مطلب، حدود پنج هزار تومان درمی‌آید. فرض ما این است که با رابط Forge کمی آشنایید؛ اگر نه، اول پست Stable Diffusion فارسی: اولین تصویر با Forge در ۱۵ دقیقه را بخوانید.

پیش‌نیازها

  • حساب کاربری جی‌پی‌یو — اگر ندارید، از صفحهٔ ثبت‌نام شروع کنید.
  • کلید SSH ثبت‌شده در /account. ورود به ماشین فقط با کلید انجام می‌شود و رمز عبوری در کار نیست.
  • موجودی کیف پول به اندازهٔ دست‌کم یک ساعت از نرخ همان ماشین. شارژ با کارت‌به‌کارت و از پنجاه هزار تومان به بالا انجام می‌شود.
  • یک تصویر برای تمرین: یک عکس قدیمی کم‌کیفیت برای آپ‌اسکیل، و یک تصویر که چیز اضافه‌ای در آن هست برای Inpaint.

انتخاب ماشین مناسب برای آپ‌اسکیل

این دو کار مصرف VRAM متفاوتی دارند. Inpaint ارزان است: فقط یک ناحیهٔ کوچک دوباره تولید می‌شود، پس دوازده گیگابایت VRAM برای SDXL کافی است. آپ‌اسکیل گران است: تصویر ۱۰۲۴×۱۰۲۴ با ضریب چهار به ۴۰۹۶×۴۰۹۶ می‌رسد و اگر مرحلهٔ دیفیوژن هم بزنید، حافظه سریع پر می‌شود.

قیمت ارزان‌ترین ماشین هر کارت، در زمان نوشتن این مطلب:

  • RTX 3060 (۱۲ گیگ) — از حدود ۱۴ هزار تومان در ساعت؛ برای Inpaint و آپ‌اسکیل تا ضریب دو کاملاً کافی است.
  • RTX A4000 (۱۶ گیگ) — از حدود ۲۱ هزار تومان در ساعت؛ حد وسط منطقی.
  • RTX 3090 (۲۴ گیگ) — از حدود ۲۹ هزار تومان در ساعت؛ پیشنهاد ما اگر می‌خواهید تصاویر چندین‌مگاپیکسلی بسازید.
  • RTX 4090 (۲۴ گیگ) — از حدود ۱۰۵ هزار تومان در ساعت؛ وقتی سرعت مهم‌تر از هزینه است.

قیمت‌ها و موجودی لحظه‌ای عوض می‌شوند؛ فهرست به‌روز را در بازار GPU با فیلتر حافظه ببینید. نرخ ساعتی در لحظهٔ اجاره قفل می‌شود و بعد از آن تغییری نمی‌کند.

اجاره و راه‌اندازی

در بازار ماشین را انتخاب کنید و از فهرست قالب‌ها SD WebUI Forge را بردارید. بعد از زدن دکمهٔ اجاره، ماشین چند دقیقه آماده می‌شود. وقتی به «در حال اجرا» رسید، صفحهٔ ماشین این‌ها را یک‌کلیک در اختیارتان می‌گذارد: دستور SSH، لینک مستقیم Jupyter و توکنش، دستور «تونل امن»، دکمهٔ «پنل ماشین» و فهرست پورت‌های منتشرشده.

ساده‌ترین راه، زدن دکمهٔ «پنل ماشین» است. اگر ترجیح می‌دهید رابط از داخل SSH عبور کند، دستور تونل را از همان صفحه کپی کنید:

ssh -N -L 7860:localhost:7860 -p <PORT> root@<HOST>

بعد در مرورگر خودتان http://localhost:7860 را باز کنید.

دانلود مدل‌های آپ‌اسکیل روی ماشین

Forge چند آپ‌اسکیلر داخلی دارد (R-ESRGAN 4x+، SwinIR 4x، Lanczos) که برای شروع کافی‌اند. ولی دو مدل جامعه‌محور کیفیت را محسوس بالا می‌برند: 4x-UltraSharp برای تصاویر تیز و پرجزئیات، و 4x_foolhardy_Remacri برای عکس‌های طبیعی.

با SSH وارد ماشین شوید و اول مسیر پوشهٔ models را پیدا کنید:

export MODELS=$(dirname $(find / -maxdepth 6 -type d -name "Stable-diffusion" 2>/dev/null | head -n 1))
echo $MODELS

حالا پوشهٔ آپ‌اسکیلرها را بسازید و هر دو مدل را دانلود کنید. هرکدام حدود ۶۷ مگابایت است و چون ماشین‌های جی‌پی‌یو خارج از ایران‌اند، دانلود چند ثانیه بیشتر طول نمی‌کشد:

mkdir -p "$MODELS/ESRGAN"
cd "$MODELS/ESRGAN"
wget -c https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/4x-UltraSharp.pth
wget -c https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/4x_foolhardy_Remacri.pth
ls -lh

اگر هنوز چک‌پوینتی روی ماشین ندارید، مدل پایهٔ SDXL را هم بگیرید (حدود ۶٫۹ گیگابایت):

cd "$MODELS/Stable-diffusion"
wget -c https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

بعد در رابط Forge دکمهٔ تازه‌سازی کنار فهرست Checkpoint را بزنید. آپ‌اسکیلرهای تازه فقط با ری‌استارت کامل Forge در فهرست ظاهر می‌شوند؛ اگر دیده نشدند، از منوی Settings گزینهٔ Reload UI را بزنید یا ماشین را ری‌استارت کنید.

آپ‌اسکیل ساده در تب Extras

تب Extras برای وقتی است که فقط می‌خواهید تصویر بزرگ‌تر و تمیزتر شود. سریع است و تقریباً هیچ VRAM نمی‌خواهد.

۱. به تب Extras بروید و در زیرتب Single Image تصویرتان را رها کنید. ۲. حالت Scale by را انتخاب و Resize را روی ۲ بگذارید. برای عکس‌های خیلی کوچک تا ۴ هم بروید. ۳. در Upscaler 1 مدل 4x-UltraSharp را انتخاب کنید. ۴. اگر خروجی بیش از حد تیز و مصنوعی شد، در Upscaler 2 مدل R-ESRGAN 4x+ را بگذارید و Upscaler 2 visibility را روی ۰٫۵ بیاورید تا دو نتیجه ترکیب شوند. ۵. دکمهٔ Generate را بزنید.

یک تصویر ۵۱۲×۵۱۲ با ضریب ۴ روی RTX 3060 در چند ثانیه آماده می‌شود. نکته این است که این مسیر هیچ جزئیات تازه‌ای نمی‌سازد؛ فقط همان چیزی که هست را تمیز و بزرگ می‌کند.

آپ‌اسکیل با بازسازی جزئیات (Hires fix و img2img)

اگر می‌خواهید مدل واقعاً جزئیات تازه بسازد — تار موها، بافت پارچه، درزهای سنگ — باید مرحلهٔ دیفیوژن هم اجرا شود.

راه اول، موقع ساخت تصویر: در تب txt2img بخش Hires. fix را باز کنید، Upscaler را روی 4x-UltraSharp، Upscale by را ۱٫۵ تا ۲ و Denoising strength را بین ۰٫۳ تا ۰٫۴۵ بگذارید. زیر ۰٫۳ اثر کمی دارد و بالای ۰٫۵ تصویر شروع می‌کند به عوض شدن.

راه دوم، روی یک تصویر موجود: تصویر را در تب img2img بارگذاری کنید، پرامپتی که تصویر را توصیف می‌کند بنویسید، ابعاد را دو برابر بگذارید و Denoising strength را روی ۰٫۳ تنظیم کنید. اگر تصویر یک‌جا در VRAM جا نمی‌شود، از فهرست Script در پایین صفحه گزینهٔ SD upscale را بردارید؛ تصویر را کاشی‌کاشی بازسازی و دوباره به هم وصل می‌کند. Tile overlap را روی ۶۴ بگذارید تا خط درز دیده نشود.

Inpaint: عوض کردن فقط یک بخش از تصویر

Inpaint یعنی شما یک ناحیه را با قلم می‌پوشانید و مدل فقط همان ناحیه را از نو می‌سازد. کاربرد رایجش پاک کردن یک شیء اضافه، عوض کردن پس‌زمینه، و درست کردن دست‌های خراب است. مسیر کار در Forge این است:

۱. به img2img بروید و زیرتب Inpaint را انتخاب کنید. تصویر را بارگذاری کنید. ۲. با قلم روی ناحیه‌ای که می‌خواهید عوض شود بکشید. اندازهٔ قلم را با نوار بالای تصویر تنظیم کنید. ۳. Mask blur را روی ۴ تا ۸ بگذارید. این عدد لبهٔ ماسک را نرم می‌کند تا ناحیهٔ جدید به بقیهٔ تصویر بچسبد؛ صفر گذاشتنش همیشه یک حاشیهٔ تیز و مصنوعی می‌سازد. ۴. Mask mode را روی Inpaint masked بگذارید (اگر می‌خواهید همه‌چیز جز ناحیهٔ ماسک‌شده عوض شود، Inpaint not masked). ۵. Masked content تعیین می‌کند مدل از چه چیزی شروع کند: original برای اصلاح همان شیء، fill برای حذف کامل چیزی، و latent noise برای آوردن چیزی کاملاً تازه. ۶. Inpaint area مهم‌ترین تنظیم است. Whole picture کل تصویر را می‌بیند ولی ناحیهٔ کوچک را با رزولوشن پایین بازسازی می‌کند. Only masked فقط همان ناحیه را می‌گیرد، به ابعاد کامل بزرگش می‌کند، بازسازی می‌کند و برمی‌گرداند — نتیجه بسیار باکیفیت‌تر است. ۷. با Only masked padding, pixels (پیش‌فرض ۳۲) تعیین می‌کنید چقدر از اطراف ماسک هم به مدل نشان داده شود. اگر خروجی با محیطش جور درنمی‌آید، این عدد را به ۶۴ یا ۱۲۸ ببرید. ۸. پرامپت را فقط برای همان ناحیه بنویسید، نه کل تصویر. برای حذف یک شیء، پس‌زمینه را توصیف کنید. ۹. Denoising strength برای اصلاح جزئی ۰٫۴ تا ۰٫۶ و برای جایگزینی کامل ۰٫۸ تا ۱٫۰.

معمولاً بار اول نتیجهٔ دلخواه را نمی‌گیرید. Seed را روی ۱- بگذارید و سه چهار بار Generate بزنید؛ سریع‌تر از ور رفتن با تنظیمات است.

اگر به مشکل خوردید

  • CUDA out of memory موقع آپ‌اسکیل — ضریب را کم کنید یا در img2img اسکریپت SD upscale را بزنید. مقدار GPU Weights در بالای صفحهٔ Forge را هم چند هزار مگابایت پایین بیاورید.
  • آپ‌اسکیلر تازه در فهرست نیست — فایل باید مستقیم داخل models/ESRGAN باشد، نه در زیرپوشه. پسوند .pth یا .safetensors باشد و بعدش Reload UI بزنید.
  • لبهٔ ناحیهٔ Inpaint مثل وصله دیده می‌شود — Mask blur را بالا ببرید و Only masked padding را بیشتر کنید.
  • Inpaint چیز بی‌ربط می‌سازد — با Only masked، مدل بقیهٔ تصویر را نمی‌بیند. پرامپت را دقیق‌تر بنویسید یا موقتاً به Whole picture سوئیچ کنید.
  • دانلود نیمه‌کاره ماند — همان دستور wget -c را دوباره بزنید؛ از همان‌جا ادامه می‌دهد.

هزینه و صرفه‌جویی

یک جلسهٔ واقع‌بینانه — راه‌اندازی، دانلود مدل‌ها، ده‌پانزده بار Inpaint و چند آپ‌اسکیل — حدود یک ساعت طول می‌کشد؛ روی RTX 3060 در زمان نوشتن این مطلب حدود ۱۴ هزار تومان.

هزینه دقیقه‌ای حساب می‌شود، پس ماشین متوقف‌شده خرجی ندارد؛ تا کارتان تمام شد متوقفش کنید. و مهم‌تر، دیسک ماشین با حذف ماشین پاک می‌شود — فضای ذخیره‌سازی دائمی وجود ندارد. قبل از حذف، خروجی‌ها را برگردانید:

scp -P <PORT> -r root@<HOST>:/path/to/outputs ./

قدم بعدی

اگر می‌خواهید سبک ثابتی به تصاویرتان بدهید، سراغ LoRA بروید؛ و اگر تازه وارد این دنیا شده‌اید، پست آموزش ComfyUI روی GPU ابری: اولین تصویر با SDXL رابط دیگری را نشان می‌دهد که همین کارها را با گره‌های قابل چیدن انجام می‌دهد.

پرسش‌های متداول

آیا برای آپ‌اسکیل تصویر به کارت گرافیک نیاز است؟

برای مدل‌های ESRGAN می‌شود روی CPU هم اجرا کرد، ولی هر تصویر چند دقیقه طول می‌کشد و برای آپ‌اسکیل با بازسازی جزئیات عملاً غیرممکن است. با یک GPU ابری اجاره‌ای همان کار چند ثانیه‌ای می‌شود و لازم نیست سخت‌افزار بخرید.

فرق Inpaint با پاک کردن در فتوشاپ چیست؟

ابزارهای کلاسیک، پیکسل‌های اطراف را کپی می‌کنند. Inpaint در Stable Diffusion محتوای تازه می‌سازد که با بقیهٔ تصویر هم‌خوان باشد، پس برای نواحی بزرگ یا پس‌زمینه‌های پیچیده نتیجهٔ به‌مراتب طبیعی‌تری می‌دهد.

چقدر VRAM برای آپ‌اسکیل چهار برابری لازم است؟

در تب Extras با آپ‌اسکیلرهای ESRGAN، هشت گیگابایت هم کافی است. اگر مرحلهٔ دیفیوژن هم بخواهید (Hires fix یا img2img)، دوازده گیگ حداقل معقول و بیست‌وچهار گیگ راحت است.

آیا Inpaint به چک‌پوینت مخصوص نیاز دارد؟

نه. Forge با هر چک‌پوینت معمولی هم Inpaint می‌کند. مدل‌های مخصوص inpainting در Denoising strength نزدیک ۱ نتیجهٔ تمیزتری می‌دهند، ولی برای اصلاح‌های معمول تفاوت محسوسی نمی‌بینید.

تصویر کاور: «Kintsugi on broken Kyūsu lid-top oblique PNr°1258» اثر D-Kuru، از ویکی‌مدیا کامنز، لایسنس CC BY-SA 4.0.