<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های h_r 71</title>
        <link>https://virgool.io/feed/@hayyan71</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 10:03:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/240964/avatar/avatar.png?height=120&amp;width=120</url>
            <title>h_r 71</title>
            <link>https://virgool.io/@hayyan71</link>
        </image>

                    <item>
                <title>ریزه‌کاری‌های Stable Diffusion - نکات Samplerها و Sampling Steps</title>
                <link>https://virgool.io/@hayyan71/%D8%B1%DB%8C%D8%B2%D9%87-%DA%A9%D8%A7%D8%B1%DB%8C-%D9%87%D8%A7%DB%8C-stable-diffusion-%D9%86%DA%A9%D8%A7%D8%AA-sampler%D9%87%D8%A7-%D9%88-sampling-steps-dpjtpl1iw0kj</link>
                <description>خوب یک سری از پست‌هارو اختصاص میدم به یه سری نکات کوچیک و کلیدی در تولید تصاویر با Stable diffusion. توی این قسمت در مورد Sampler ها صحبت میکنیم و میبینم که تغییر در Sampling steps چقدر در خروجی نهایی تاثیر داره.اگر در هنگام اجرای برنامه به مراحل تولید تصویر دقت کرده باشید، متوجه خواهید شد که برنامه ابتدا یک تصویر با نویز زیاد رو تولید میکنه و سپس در مراحل بعدی سعی میکنه نویز تصویر رو کم کنه تا خروجی نهایی تولید بشه. کار sampler ها در واقع محاسبه‌ی مراحل بین تولید هر تصویر با تصویر بعدی هستش و حساب میکنند در هر قدم (step) چقدر این نویزها باید کم بشه. هر چه چه تعداد step ها بیشتر باشه، قدم‌های کاهش نویز کوچکتر خواهند شد و در هر مرحله جزییات بیشتری به عکس اضافه خواهد شد. هر sampler یک الگوریتم ریاضی هستش که برای محاسبه‌ی این قدم‌ها و کاهش نویز تا تولید تصویر نهایی به شیوه‌ی خودشون برنامه‌ریزی شدند. برخی از این الگوریتم‌ها مناسب این هستند که در قدم‌های کمتر، نتیجه‌ی بهتری بدن.به این مثال دقت کنید. من سعی میکنم با euler ( دقت کنه euler A نه) تصویر یک گربه رو از خروجی بگیرم. تصویر خروجی نهایی رو با توجه به sampling steps های مختلف گذاشتم:a ginger cat, animal, best quality, ultra-detailed, masterpieceNegative prompt: blurry, artist nameSteps: , Sampler: Euler, CFG scale: 7, Seed: 2514770730, Size: 512x512, Model hash: d8722b4a4d, Model: neverendingDreamNED_bakedVaeخروجی:خوب همونطور که دارید میبینید، در مقادیر بسیار پایین نویز تصویر بسیار بالاست. بعد از ۳ عکس گربه تقریبا شکل گرفته اما جزییات نداره. تقریبا از 20 به بعد عکس‌ها کیفیت خوبی گرفتند. میزان Sampling steps رو به اعداد بزرگتر تغییر میدم و عکس‌های بزرگتری میزارم تا جزییات رو ببینید. (از این لینک برای دیدن عکس زیر با سایز بزرگتر استفاده کنید)آیا انتخاب یک عدد بزرگ برای sampling steps الزاما همیشه بهترین نتیجه رو میده؟ خیر. اگر به همین مثال دقت کنید، breakpoint یا همون نقطه‌ی شکست این مثالها عدد ۵۰ هستش. از ۵۰ به بعد گوش‌های گربه بزرگتر شده  و رنگ غیرواقعی تر شده. در حالی که جزییات بیشتری به عکس اضافه شده اما به نظر من گذشتن از این جزییات اضافه در step های بالاتر ارزش وقتشو داره.البته این یک مثال بود. شاید در مثال‌های دیگه، بالا قرار دادن میزان sampling steps نتیجه‌ی دیگه‌ای بده. شاید شما طراحی یک چهره انسان رو بخواین و هر چه sampling steps رو بالاتر بزارین، برنامه جزییات بهتری به عکس اضافه کنه. اما همیشه چنین نیست. ضمنا همونطور که گفتم، برخی الگوریتم‌ها برای این برنامه ریزی شدند که بهترین نتیجه رو با تعداد step کم بدند لذا این الگوریتمها ممکنه برای گرفتن حداکثر جزییات برنامه ریزی نشده باشند. به عنوان مثال برای sampling steps با مقدار ۲۰ این نتایج رو با Euler و DPM2 میگیرم.به نظر DPM2 در این تعداد sampling step پایین نتیجه‌ی خیلی بهتری داد.بزارید چند تا از sampler هارو با هم در همین مثال در sampling steps با مقدار ۵۰ مقایسه کنیم. (لینک عکس بزرگتر) از بین نتایج برای این مثال، من همچنان Euler رو ترجیح میدم. ضمنا DPM++ 2M karras هم چشم‌های گربه رو خوب و نزدیک به Euler طراحی کرده. همونطور که گفتم، بسته به مثال و شرایط، هرکدوم از sampler ها ممکنه نتایج متفاوتی بدن و الزاما یکی بهتر از دیگری در همه‌ی شرایط نیست.چرا محدودیت ۱۵۰ رو برای sampling steps داریم؟ این محدودیت رو رابط وب گذاشته. شما میتونید با تغییر پارامتر &quot;txt2img/Sampling steps/maximum&quot;:در فایل ui-config.json میزان این عدد رو کم و زیاد کنید. البته همونطور که میدونید sampling steps بالاتر باعث میش زمان بیشتری صرف تولید عکس بشه. آیا همیشه میصرفه؟ این بستگی به شما داره. به مثال بعدی دقت کنید. چون کارت گرافیک من قوی هستش، برای این مثال sampling steps رو برای euler روی ۷۰۰ گذاشتم و در نهایت با چند نمونه‌ی دیگه مقایسه کردم (لینک عکس)اگر به تفاوت دو عکس در Euler نگاه کنید، تفاوت فاحش هستش. چشم‌های گربه تغییر کرده، موهای دور گوش بهتر شدند و دم هم کیفیت بهتری پیدا کرده. اما تفاوت بین Euler و DPM2++ 2M Karras در این مثال بسیار ناچیز هستش با توجه به اینکه عکس سوم با ۱۵۰ قدم تولید شده. تفاوت زمان؟ تولید عکس دوم برای من ۷۰ ثانیه زمان برد و عکس سوم ۱۵ ثانیه. این تفاوت زمانی بیشتر زمانی فاحش میشه که تعداد prompt های عکستون زیاد باشه و بخواین به صورت دسته‌ای چندین عکس تولید کنید.ضمنا تا الان من با هرچی در این مثال کار کردم، sampler های غیر موروثی ( non-Ancestral ) بوده.پس Ancestral ها چی هستند؟دقت کردید که برخی از sampler ها در لیست یک کلمه‌ی a در کنارشون هستش؟ مانند Euler a یا DPM 2 a. برای مثال Euler a همون الگوریتم Euler هستش که به روش Ancestral عکس‌هارو تولید میکنه. البته همین جا نیاز هستش ذکر کنم که الزاما نباید حرف a کنارش باشه تا بفهمیم sampler به صورت Ancestral هستش یا خیر. برخی از الگوریتم ها خودشون به صورت Ancestral طراحی شدند، مانند DPM++ SDE. خوب حالا فرق Ancestral و non-Ancestral چی هستش؟ در non-Ancestral ها در هر قدم، لایه‌ای از نویز کم میشه تا در قدم آخر به خروجی نهایی برسیم. در Ancestral ها، در هر نسل، یک لایه نویز به نسل قبلی اضافه میشه. لذا Ancestral تصاویر متفاوتی رو در sampling step های متفاوت ارائه میدن. برای همین مثال گربه با Euler a ( دقت کنید این بار حرف A رو کنار Euler داریم). برای عکس بزرگتر روی این لینک کلیک کنید.اگر دقت کنید با قدم‌های بیشتر، عکس داره کلا تفاوت میکنه. به عنوان مثال قاب عکسی که در عکس تولیدی با ۲۰ قدم بود، در مثال با ۲۲ قدم حذف شده. ظاهر گربه، محیط و نحوه نشستن سوژه کاملا تغییر کرده. همچنین، با افزایش step ها، کیفیت به نظر خیلی بهتر نشده و کیفیت متوسطی رو در طول کل عکس‌ها داریم. (دقت کنید تمامی ورودی‌ها در این مثال ثابت و همون چیزی بوده که در اول پست نوشتم و فقط sampler و sampling steps رو تغییر دادم)پس به چه دردی میخوره؟ همونطور که گفتم Ancestral ها کارشون اینه که در هر نسل یک لایه نویز به تصویر اضافه کنند. این به معنای اینه که هر بار که sampling step رو تغییر میدید، عکس جدیدی میگیرید. لذا با تغییر sampling step در الگوریتم‌های Ancestral، برنامه این امکان رو داره جزییات بیشتری به عکس اضافه کنه. دقت کنید من برای این مثال prompt های خیلی محدودی اضافه کرده بودم. فرض کنیم جزییات عکس من زیاد بود و prompt های زیادی وارد کرده بودم. با Ancestral ها این امکان به من داده میشه که احتمالا برخی جزییات عکس و prompt هایی که در تصویر جا مونده بودند به عکس اضافه بشه. در حالی که اگر از non-Ancestral استفاده میکردم، شاید برخی از prompt ها نادیده گرفته میشن و جزییات محیط فدای کیفیت عکس خروجی بشه.به صورت کلی، Ancestral ها برای تولید عکس ثابت مناسب نیستند. اما برای تولید عکس‌های خلاقانه با جزییات مختلف در محیط عالی هستند. اگر میخواید یک عکس رو از روی متن تولید کنید، احتمالا الگوریتم‌های Ancestral بیشتر به کارتون بیاد. در واقع Euler a پر استفاده ترین الگوریتم در stable diffusion هستش. البته این مسائل بیشتر سلیقه‌ای هستش و کمی هم بستگی به شانس داره. اگر میخواید یک عکس رو از روی متن تولید کنید، شاید بهتر باشد ابتدا اون عکس رو با Euler a و یا یک سمپلر Ancestral تولید کنید، سپس وقتی تصویر اولیه مناسبی گرفتید، کیفیت عکس رو با یک سمپلر non-Ancestral بهبود ببخشید.</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Sat, 01 Apr 2023 14:59:37 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۴ - استفاده از inpaint و sketch</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-inpaint-%D9%88-sketch-epooejmjzajf</link>
                <description>خوب در این قسمت با inpaint و sketch و سعی میکنیم تغییراتی در عکس‌ها بدیم. در مثال اول سعی میکنم کلیات sketch رو نمایش بدم و در قسمت بعد با inpaint برخی موارد ناخواسته رو در تصویر تغییر بدیم.خوب ابتدا از sketch شروع میکنیم. شما میتونید هر چیزی که خواستید بکشید و در کادر prompt اطلاعات مربوط به عکس رو بدید و و از ابزار بخواید عکسهایی رو تولید کنه. خوب ابزار یک رابط بسیار ساده برای کشیدن میده لذا توصیه میشه طرح ابتداییتون رو با یک نرم افزار دیگه بکشید.به عنوان مثال من این نقاشی رو با paint کشیدم:اون رو در قسمت sketch وارد کردم. سپس ورودی‌های مربوطه رو دادم (مقدار denoising رو بالا بدید):a ginger cat is looking at an tree, tree, nature, outdoors, jungle, cat, smiling, animal, sitting cat, masterpiece, best quality, realistic, no_human, hdr, 8k, ultra quality, extremely detailed, leaves, spring, (one cat), 1animal, (ginger cat), anime style, anime, grass, river, lake, water
Negative prompt: blurry, bad image, worst quality
Steps: 20, Sampler: DPM++ SDE, CFG scale: 11, Seed: 2967828005, Size: 512x512, Model hash: 6e430eb514, Model: anything-v4.5-pruned, Denoising strength: 0.75, Mask blur: 4میبینید که تصویر نسبتا خوبی تولید شده البته با ورودی محدود:خروجی:کنار دریاچه یک المان اضافه هستش. چطور اون رو درست کنیم؟ از inpaint استفاده میکنیم. خوب شما بر روی گزینه‌ی send to inpaint کلیک میکنید. قسمت مورد نظر برای اصلاح رو ماسک گذاری میکنیم. مثل این عکس:سپس در prompt ها این مقادیر رو وارد کردم:lake, water, body of waterسپس خروجی گرفتمخوب برای شروع بد نبود. آیا میتونیم یکم قضیه رو پیچیده تر کنیم؟ این بار از sketch + inpaint استفاده میکنیم. عکس گربه‌ی پست قبل رو یادتونه؟ من عکس گربه‌ی قبلی رو گرفتم و بهش یک گلوله‌ی کاموایی اضافه کردم. عکس‌هارو مقایسه کنید متوجه تفاوت خواهید شد.در واقع با inpaint sketch بخشی از عکس رو که ماسک گذاری شده بود (رنگ قهوه‌ای) رو گرفتیم و با کمی نقاشی، اون رو تبدیل به یک کاموا برای گربه کردیم (البته با prompt مناسب)اگر حوصله دارید، میتونید این مطلب که در reddit به زبان انگلیسی منتشر شده رو مطالعه کنید تا یک ایده‌ی کلی بگیرید که این ابزار چقدر قوی هستش. در قسمت بعد سعی میکنیم با استفاده از lora یک تصویر ایجاد کنیم.</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Sat, 25 Mar 2023 17:59:43 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۳ - استفاده از img2img</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B3-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-img2img-jbcvnvnjhayn</link>
                <description>خوب توی این قسمت، تب img2img رو بررسی میکنیم و با دو تا مثال مختلف، دو عکس رو به همراه چندین کلمه به ابزارمون به عنوان ورودی میدیم و تصاویر مورد نظر رو به عنوان خروجی میگیریم.بریم سراغ بررسی ظاهر این تب.در کنار کادرهای prompts، شما دو گزینه میبینید:‌ interrogate clip و interrogateDeepBooru. اینها چی هستند؟ به صورت خلاصه این گزینه‌ها، از روی عکس شما ورودی‌های متنی تولید میکنند. یعنی اگر شما عکس ورودی رو داده باشید و روی یکی از این گزینه‌ها کلیک کنید، با توجه به جزییات عکس، ابزار سعی میکنه لیستی از کلمات رو در کادر ورودی ایجاد کنه. البته اگر برای بار اول کلیک کنید، چندین فایل دریافت میکنه. فرق این دو گزینه چی هستش؟ گزینه‌ی دوم سعی میکنه با توجه به دیتابیس Danbooru که یک بورد مربوط به سایتهای انیمه‌ای هستش، ورودی متنی تولید کنه.قسمت بعدی که احتمالا براتون جدید هستش اینه:‌این بخش چندین تب مختلف داره که فعلا با تب img2img کار داریم (قاطی نکنید!) در این قسمت شما میتونید تصویر مورد نظرتون رو drag and drop و یا آپلود کنید. اگر روی click to upload کلیک کنید، از شما مسیر فایل تصویرتون روی رایانه‌ی شخصیتون رو می‌خواد.گزینه‌ی resize mode تصویر رو با توجه به رزولوشن داده شده تغییر میده. اگر روی just resize باشه، فقط عکس با توجه به رزولوشن داده شده تغییر سایز میده. گزینه‌ی crop and resize عکس رو با توجه به رزولوشن داده شده crop میکنه. گزینه‌ی resize and feel عکس رو با توجه به رزولوشن داده شده تغییر سایز میده بخش‌های خالی رو با رنگ پر میکنه.از اونجا که اکثر این بخش‌ها مشابه قسمت txt2img هستش، مجددا این گزینه‌ها رو توضیح نمیدیم. اما دو گزینه‌ی مهم اینجا وجود داره:گزینه‌ی restore faces: سعی میکنه تا حد امکان صورت‌های تشخیص داده شده در عکس رو بازسازی کنهگزینه‌ی Denoising strength: این گزینه در واقع تعیین میکنه که چقدر ابزار، از تصویر داده شده به عنوان ورودی الهام بگیره. اگر این عدد بر روی ۰ باشه، خروجی نهایی همون تصویر ورودی خواهد بود و چیزی تغییر نخواهد کرد. اگر این عدد بر روی ۱ باشه، تصویر خروجی کاملا بی‌ربط به تصویر ورودی خواهد بود. بسته به میزان تغییری که قراره روی عکس داده بشه این عدد رو تغییر میدیم. معمولا تغییر بین بازه‌ی ۰.۴ تا ۰.۶ برای شروع کار خوب هستش و برای گرفتن خروجی نهایی معمولا من این عدد رو روی ۰.۲ میزارم.خوب برای مثال اول ما این گربه رو به ورودی میدیم.و این پارامترها رو به ورودی دادم: ( بله! به ابزار گفتم به جای گربه، سگ بکشه)model: anything v4.5 pruned
positive prompts: animal, animal_focus,, brown_background, dog, looking_at_viewer, no_humans, photorealistic, realistic, shiba_inu, anime, cartoonist, oil painting, drawing
negative prompts: blurry, jpeg artifacts, bad quality, watermark, artist name
Sampling steps: 40, Sampling method: Euler a, CFG Scale: 9, Denoising strength: 0.45, batch size: 4, Seed: 940449343خروجی به صورت عکس‌های در کنار هم: البته امیدوارم گربه بنده خدا از دستمون ناراحت نشده باشه. واسه اینکه ناراحت نشه یه عکس گربه هم تولید میکنیم. این بار denoising رو کمتر میکنیم تا ببینیم چقدر شبیه به عکس اصلی میشهmodel: anything v4.5 pruned
animal, animal_focus,, brown_background, cat, looking_at_viewer, no_humans, photorealistic, realistic, shiba_inu, anime, cartoonist, oil painting, drawing, ginger kitten, smiling
Negative prompt: blurry, jpeg artifacts, bad quality, watermark, artist name
Steps: 40, Sampler: DPM++ SDE, CFG scale: 9, Seed: 3371033236, Size: 512x512,  Model: anything-v4.5-pruned, Denoising strength: 0.25, Mask blur: 4, batch size: 5خروجی:مثل اینکه داره لبخند میزنه! مثال بعدی یکم قضیه رو پیچیده تر میکنیم. در این مثال تصویر یک فرد رو میگیریم، سپس خروجی رو مجددا به عنوان ورودی میدیدم و پس از چند مرحله خروجی گرفتن، تصویر اصلی رو تا با سایز بزرگ به عنوان خروجی میگیریم.عکس ورودی (لینک):1girl, blurry, coat, depth_of_field, hood, lips, long_hair, looking_at_viewer, motion_blur, mountain, outdoors, photo_\(medium\), snow, snowing, solo, tree, winter, smiling
Negative prompt: blurry, bad image, worst quality
Steps: 20, Sampler: DPM++ SDE, CFG scale: 7, Seed: 2450034904, Size: 512x512, Model hash: 6e430eb514, Model: anything-v4.5-pruned, Denoising strength: 0.5, Mask blur: 4خروجی با denoising strength 0.5: تصویر اول رو میگیرم:خود ابزار یک گزینه داره که مستقیما عکس تولید شده رو بفرستیم به img2img:ببه صورت اتوماتیک عکس باید در این قسمت بارگزاری شده باشه:مقدار seed رو به 2450034904 تغییر میدم. همچنین مدل رو به Waifu diffusion تغییر میدم. sampling steps رو روی 60 میزارم و denoising رو روی 0.2. چند تا prompt هم به عنوان ورودی میدیم.چیزی که مد نظر من هستش اینه که رنگ لباس کمرنگ تر بشه. (خیلی پررنگ هستش و بیشتر شبیه به تکنیک‌های عکاسی شده تا نقاشی)1girl, blurry, coat, depth_of_field, hood, lips, long_hair, looking_at_viewer, motion_blur, mountain, outdoors, photo_\(medium\), snow, snowing, solo, tree, winter, smiling, oil painting
Negative prompt: blurry, bad image, worst quality
Steps: 60, Sampler: DPM++ SDE, CFG scale: 7, Seed: 2450034906, Size: 512x512, Model hash: 6e430eb514, Model: anything-v4.5-pruned, Denoising strength: 0.2, Mask blur: 4خروجی:عکس سوم به نظر خوب میاد. این عکس رو به عنوان ورودی به img2img میدیم (روی عکس سوم کلیک میکنم و گزینه‌ی send to img2img رو میزنم)سوال: تا اینجا همه‌ی عکس‌ها با رزولوشن 512x512 بودن. چطور این عکس رو با سایز بالاتر دریافت کنیم؟برای اینکار از گزینه‌ی script و SD upscale استفاده میکنیم.روی این گزینه کلیک میکنید و گزینه‌ی sd upscale رو انتخاب میکنید.گزینه‌ی scale factor رو روی ۳ میزارم تا اندازه‌ها ۳ برابر بشن. ضمنا upscaler رو روی R-ESRGAN 4x+ Anime6B میزارم. بسته به الگوریتم و مدل، ممکنه نتایج متفاوتی رو بگیرید. برخی از مدلها صرفا از upscaler خاصی پشتیبانی میکنند لذا در هنگام دریافت فایل چک پوینت حتما به توضیحات اون دقت کنید.در نهایت میزان denoising رو روی 0.1 میزارم. batch count رو روی ۱ میزارم. این بار تولید تصویر بیشتر زمان خواهد برد. (نکته: همیشه ابتدا عکس سایز کوچیک بگیرید و سپس نتیجه‌ی دلخواهتون رو بزرگ کنید. هرگز از ابتدا گزینه‌ی upscaler رو فعال نکنید، مخصوصا وقتی که چندین عکس همزمان تولید میکنید. و الا کلی وقتتون گرفته خواهد شد)در نهایت خروجی نهایی این خواهد بود (سایز بزرگ)در قسمت ۴ در مورد inpainting و scetch صحبت خواهیم کرد و در قسمت ۵ که کوتاه خواهد بود، از یک مدل LoRA برای تولید تصویر از یک مدل کوچکتر استفاده میکنیم.</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Sat, 25 Mar 2023 16:35:11 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۲ - استفاده از txt2img</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-txt2img-kmlgznbedumx</link>
                <description>خوب پس از اینکه ابزارهارو نصب و راه‌اندازی و آزمایش اولیه کردیم، بهتره که یکم راجع به آپشن‌ها توضیح بدیم. برای اینکه عکس‌های این مطلب واضح‌تر باشند، من تم Web UI رو دارک انتخاب کردم. صفحه‌ی کلی که شما باید ببینید به این شکل هستش:در کادر stable diffusion checkpoint شما چک پوینت (همان فایل مدل دریافتی) رو انتخاب میکنید. اگر چند مدل همزمان نصب کرده باشید،‌ اینجا چند تا آپشن مختلف خواهید داشت.قسمت بعدی تب‌ها هستند. هر tab برای کار خاصی هستش که در این پست ما به بخش txt2img میپردازیم. این بخش همونطور که حدس زدید، متن رو برای شما تبدیل به عکس میکنه.در بالا شما دو کادر بزرگ مشاهده می‌کنید: prompts و negative promptsدر کادر prompts ما جزییاتی که میخوایم رو بهش اضافه میکنیم. نمونه‌ی قبلی رو یادتون هست؟ من این کلمات رو به عنوان prompts دادم.portrait of a boy sitting on bench in park, brown hair, sportswear, smiling, outdoors, highly detailed, digital painting, high resolution, artstation, concept art, smooth, (((masterpiece))), (((best quality))), ((ultra-detailed)), (cinematic lighting), (illustration), (beautiful detailed eyes), (1boy), upper body, looking at viewer, depth of fieldاحتمالا برخی عبارات برای شما مفهوم هستند. برخی از عبارات مسقیما اشاره به محتوای عکس دارند (مثل رنگ مو و اینکه پسربچه باشه) برخی دیگر جزییات عکس رو توصیف میکنند. (مانند illustration یا looking at viewer  یا غیره). چرا برخی از عبارات داخل پرانتز هستند؟ داخل پرانتز بودن یعنی به ابزار میفهمانیم که به این کلمات توجه بیشتری بدهد. تعداد پرانتز‌ها تعیین میکند که کدام موضوع اهمیت بیشتری دارد. به عنوان مثال به ابزار گفتم که به عبارت masterpiece اهمیت بیشتری بدهد ( اگر از عباراتی مانند masterpiece گیج شدید باید بگم که در هنگام آموزش مدل، از اینجور عبارات مختلف برای شناسایی تصویر با کیفیت از بد و مناسب از غیر مناسب زیاد استفاده شده. بعضا در تصاویری که به خورد مدل بیچاره! داده شده، تگ‌هایی مانند زاویه دید و یا مدل دوربین هم دیده میشود. اگر به کتابخانه‌های آنلاین سر بزنید، احتمالا ایده‌ی کلی خواهید گرفت که چه تگ‌هایی برای کار شما مناسب هستند و چه چیزی را باید استفاده کنید). تعداد تگ‌هایی که میتوانید استفاده کنید محدود هستش لذا هر چیزی رو اینجا کپی پیست نکنید!قسمت بعدی negative prompts یعنی جزییاتی که نمیخواهید در عکس باشند. در مثال قبلی:bad anatomy, bad hands, text, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameمن به ابزار گفتم که کیفیت پایین و یا blurry نباشد و یا واترمارک نداشته باشد.شما همچنین پنج تا دکمه‌ی مختلف در عکسی که دادم میبینید و یک کادر styles. اگر بخواهید prompts های قبلی رو بازگردونید (فرض کنید شما صفحه‌ی مرورگر رو بستید و دوباره باز کردید) بر روی گزینه‌ی اول کلیک میکنید. سطل زباله هر دو کادر prompts رو پاک میکنه. همچنین شما میتونید prompts های خودتون رو در قالب یک style ذخیره کنید که اگر دفعات بعدی خواستید عکسی با همین prompt ها تولید کنید، مستقیما بتونید با یک کلیک همه‌ی کلمات رو بارگذاری کنید.این قسمت گزینه‌های مختلفی داره.اولین گزینه sampling method هستش. اینکه کدام عکس بهتری تولید میکنه، بستگی به شرایط داره. برخی از الگوریتم ها با تعداد مراحل کمتری عکس های بهتری تولید میکنند و برخی با تعداد مراحل بالاتر کیفیت بهتری خواهند داشت. برخی از اونها عکسهای واقعی تر و برخی طرحهای هنرمندانه و نزدیکتر به نقاشی تولید میکنند. در این ویدیو به صورت خلاصه میتونید تفاوت اونها رو ببینید. من بیشتر گزینه‌ی Euler A  و یا DPM++ 2M Karras رو استفاده میکنم. البته بستگی به خودتون و حوصله‌ی خودتون داره. ممکنه با تغییر sampler نتیجه‌ی بهتری بگیرید یا اصلا تغییری احساس نکنید.گزینه‌ی Sampling steps: اعداد پایینتر کیفیت عکس ضعیفتری رو باعث میشن و اعداد بالاتر باعث میشن که کیفیت عکس بالا بره اما زمان تولید بیشتر بشه. اگر تک عکس تولید میکنید این عدد رو بین ۵۰ تا ۷۰ بزارید.گزینه‌های restore faces, tiling و hires fix: معمولا به این گزینه‌ها کار نداریم. گزینه‌ی restore faces در صورتیکه عکس با کیفیت پایین تولید شده باشه، سعی میکنه با استفاده از ابزارهای خودش تصویر صورت رو بازسازی کنه. گزینه‌ی tiling باعث میشه تصویری تولید کنه که بشه ادامش داد، حالت کاشی مانند، یه چیز تو مایه‌های این تصویر:گزینه‌ی width و height: که عرض و ارتفاع تصویر رو تعیین میکنه. هرگز این اعداد رو بیشتر از 512x512 نکنید! چرا؟ چون مدلهای Stable Diffusion با عکس‌هایی با این رزولوشن آموزش داده شده اند. زیادتر کردن این عدد باعث میشه عکس‌هاتون تکرار بشن (مثلا ببینید شخصیتتون ۳ تا سر و ۷ تا دست داره!) نگران رزولوشن نباشید! webui ابزار بزرگ کردن عکس رو با حفظ و بهبود کیفیت رو هم داره. البته به عنوان نکته باید بگم نسخه‌های جدید تا ۷۶۸ در ۷۶۸ نیز پشتیبانی میکنند. اما این موضوع بحث نیست. شما همیشه خروجی کوچیک بگیرید بعد upscale کنید.گزینه ی batch count و batch size: گزینه‌ی batch size در واقع میگه که همزمان چند تصویر با هم تولید بشن. اینکه چند تا تصویر با هم تولید بشن، مستقیما با میزان VRAM شما ارتباط داره. حال اگر تعداد تصاویر تولید شده با هم رو یک batch در نظر بگیریم، گزینه‌ی batch count میگه که چند دسته تصویر تولید کنه. این گزینه روی میزان VRAM تاثیر نداره. اگر گیج شدید یک بار دیگه توضیح میدم. فرض کنید شما batch count رو بزارید روی ۳ و batch size رو بزارید روی ۵. ابزار برای شما ابتدا ۵ تا تصویر همزمان تولید میکنه،‌ سپس ۵ تای دیگه و در آخر ۵ تا عکس دیگه با هم.معمولا ما چندین تصویر تصادفی با هم تولید میکنیم که بعدا بین اونها چیزی به مد نظرمون باشه رو انتخاب کنیم. من در اغلب مثال‌ها این عدد رو ۴ قرار میدمگزینه‌ی CFG scale: به شما میگه که ابزار چقدر به ورودی‌ها توجه کنه. هرچه این عدد کمتر باشه، عکس بی ربط تر به ورودی میشه. هرچی عدد بیشتر باشه، بیشتر ورودی‌های شما رو مد نظر قرار میده و میزان خلاقیتش رو کمتر میکنه، اما ممکنه که در اعداد بالا کلا ارتباطی بین ورودی‌های داده شده در عکس پیدا نکنید (مثلا ورودی داده باشید چشم و گوش و بینی،‌ یه دونه چشم و یه دونه گوش و یه دونه بینی کشیده باشه بدون اینکه صورتی در کار باشه). اونو روی ۷ به حال خودش رها کنید. در برخی موارد ممکنه تا ۹ در برخی مثال‌ها اون عدد رو تغییر بدم.گزینه‌ی Seed: بر اساس عدد تصادفی تولید شده یک تصویر تولید میشه. اگر پارامترهای ورودی و عدد seed یکسان باشند،‌ همیشه یک عکس تولید میشه. از این قسمت برای کم و زیاد کردن تعداد پارامترها در حالیکه روی یک عکس تقریبا یکسان کار میشه،‌ استفاده میکنیم. عدد -۱ میگه که عدد seed رو تصادفی تولید کن. بهتره در حالت random ولش کنید. گزینه‌ی سبز عدد seed که در تولید قبلی ایجاد شده رو بر میگردونه و تاس هم سید تصادفی ایجاد میکنه.چند مثال: من در این مثالها خروجی نهایی رو به صورت عکس‌های ۴ تایی میفرستم. توجه کنید که بسته به ورودی‌ها ممکنه عکس‌های بی‌ربطی دریافت کنیم. تولید تصویر نهایی کمی حوصله می‌خواد.مثال ۱:sampling method:euler a, sampling steps: 40, batch size: 4, CFG scale: 7, seed 1801069101:positive prompts: an anime boy in school uniform, highly detailed, high resolution, artstation, 1boy, formal dressnegative prompts: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameنمونه‌ی ۲:sampling method:DPM2, sampling steps: 40, batch size: 4, CFG scale: 7, seed 1801069101:positive prompts: an anime boy in school uniform, highly detailed, high resolution, artstation, 1boy, formal dressnegative prompts: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameنمونه‌ی ۳:یک سری پارامتر‌های بیشتر به نمونه‌ی یک اضافه میکنم و سید رو هم رندم میزارم.sampling method:DPM2, sampling steps: 40, batch size: 4, CFG scale: 7, seed -1:positive prompts: an anime boy in school uniform, sitting in library, pen, chair, table, studying, highly detailed, high resolution, artstation, 1boy, formal dressnegative prompts: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameدر عکس اول یک پای پسر وجود نداره. عکس چهارم،‌ هم پا دارای ایراد هستش و هم انگشتان، نحوه‌ی گرفتن خودکار. عکس سوم،‌انگشتان ایراد دارند. عکس دومی از همه بهتر در اومدهنمونه‌ی ۴:sampling method:‌َ Euler a, sampling steps: 40, batch size: 4, CFG scale: 7, seed 1801069103:positive prompts: an anime boy in school uniform, sitting in library, chair, table, studying, highly detailed, high resolution, artstation, 1boy, formal dress, gray hair, perfect handsnegative prompts: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameایراد دست‌ها در تمامی عکس‌ها واضح هستش.نمونه‌ی ۵:sampling method:‌َ Euler a, sampling steps: 40, batch size: 4, CFG scale: 7, seed 1801069101:positive prompts: an anime boy in school uniform, sitting in library, chair, table, studying, highly detailed, high resolution, artstation, 1boy, formal dress, gray hair, perfect hands, dramatic lighting, (((masterpiece))), (((best quality))), ((ultra-detailed))negative prompts: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameدقت کردید توی برخی عکس‌ها یک سری المان‌های اضافه وجود داره؟ مانند بخشی از لباسهای اضافه (به آرم روی سینه‌ي عکس پسر سومی دقت کنید. همچنین یک کتاب اضافه روی پاش وجود داره.) دست‌ها در اکثر تصاویر ایراد دارند. ( سر این موضوع باید اساسی برای شما روضه بخونم) سعی میکنم در قسمت چهارم به شما آموزش بدم که چطور با inpaint و scetch برخی از این موارد رو درست کنید. اما قبلش باید قسمت سوم یعنی img2img رو مطالعه کنید!فعلا در حد بیست دقیقه کار کردن، کمی عکس سوم رو اصلاح کردم. البته قرار نبود از یک عکس داغون،‌ شاهکار تولید کنیم. اما احتمالا به شما ایده‌ی کلی رو میده که چه تغییراتی در بخش inpainting قراره ایجاد بشه</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Tue, 21 Mar 2023 02:53:00 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۱ - نصب و راه‌اندازی و تست سریع</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D9%88-%D8%AA%D8%B3%D8%AA-%D8%B3%D8%B1%DB%8C%D8%B9-dkad0gleuphu</link>
                <description>خوب رسیدیم قسمت ۱. در این قسمت میخوایم Stable Diffusion Webui رو نصب کنیم و یک خروجی سریع هم بگیریم که ببینیم چطور کار میکنه.این پست شامل سه قسمت هستش:راه اندازی روی سیستم شخصیراه اندازی روی سرویس‌های آنلاین (در اینجا Colab)تست اولیه و تولید اولین تصویرمنابع تهیه‌ی مدلها    خود Stable Diffusion رابط کاربری نداره. شما برای استفاده از اون یا مجبورید از رابط متنی استفاده کنید (که نمیخوایم!) یا از رابط تحت وب نوشته شده برای این ابزار استفاده کنید. دو رابط تحت وب منتشر شده،‌ یکی Easy Diffusion هست و دیگری Stable Diffusion Web ui که برای راحتی بیشتر ما از دومی استفاده می‌کنیم.برای راه‌اندازیش هم میتونید هم به صورت لوکال (روی سیستم خودتون) راه‌اندازیش کنید و یا از سرویس‌های آنلاین استفاده کنید.    برای راه‌اندازی روی سیستم خودتون: اینکه دقیقا چه سیستمی مورد نیاز هستش،‌ هر منبع یک توضیحات متفاوتی رو داده. برخی افراد روی کارت گرافیک با 4GB vram هم این ابزارها رو اجرا میکنند اما به این معنا نیست که شما تجربه‌ی مطلوبی برای استفاده از این ابزار با چنین کارت گرافیکی خواهید داشت.چیزی که برای یک تجربه مناسب و کم دردسر نیاز خواهید داشت، یک کارت گرافیک با حداقل 8 گیگابایت VRAM و حداقل 16 گیگابایت حافظه‌ی رم بر روی سیستم هستش. زیر این میزان هیچ تضمینی نیست که ابزارها در هنگام خروجی گرفتن کرش نکنه. البته این میزان بدون احتساب استفاده از Lora یا Dreambooth. اگر میخواید مدلهای Lora رو هم به مدل اصلیتون آموزش بدید،‌ نیازمند حداقل 12 گیگابایت VRAM هستید. (فعلا نیازی نیست نگران این عبارات باشید. بعدا به صورت مروری از این قسمت رد خواهیم شد.)با فرض داشتن سیستم مناسب، برای نصب ابزارها ابتدا باید پایتون (طبق گفته سایت،‌ پایتون 3.10.6) رو باید نصب کنید و در هنگام نصب حتما توجه کنید که گزینه‌‌ی Add to path رو علامت‌دار کنید. (اگر اونو بر روی ویندوز نصب میکنید) ضمنا شما نیاز به نصب Git هم دارید.پس از نصب پایتون و گیت، کد زیر رو اجرا کنید:git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.gitپس از اتمام دریافت فایل،‌ در صورتی که کاربر ویندوز هستید، فایل webui-user.bat و اگر کاربر لینوکسی هستید، فایل webui-user.sh رو در مسیر مربوطه اجرا میکنید. برنامه شروع به دریافت فایلهای مربوطه میکنه. این کار کمی زمانبر هستش. (حجم فایلها بسیار زیاد هستش) ضمنا چون برخی فایلها در سرورهای تحریمی قرار گرفته، در حالت عادی با اینترنت ایران دریافت همه‌ی فایلها میسر نیست و خطا دریافت میکنید :) اما اگر اینترنت با سرعت مناسبی دارید و به مشکل تحریم برخورد نکردید، نرم افزار پس از دریافت اتوماتیک فایلها اجرا میشه. سپس میتونید به مسیر stable-diffusion-webui/models/Stable-diffusion/برید و مدل‌های خودتون رو در این مسیر بریزید.ما از مدل Anything v4.5 استفاده خواهیم کرد. (اگر گیج شدید که کدام نسخه رو دریافت کنید، این فایل رو دریافت کنید)پس pruned چی هستش و چرا حجمش کمتر هستش؟ بحث طولانی هستش. اگر نیاز به حداکثر کیفیت ممکن برای نتیجه رو ندارید، نسخه کم حجم تر pruned رو دریافت کنید.در نهایت مدل(های) دریافتی رو در مسیری که در بالا گفتم میریزید و تمام! برای راه‌اندازی با استفاده از سرویس‌های آنلایناین روش مناسب دوستانی هستش که سیستم قوی ندارند و یا مشکل اینترنت دارند (مانند اکثر ما). صرفا برای تجربه کردن ابزارها، کاربردی هستش و حجم اینترنتتونم خورده نمیشه. البته ابزارهای آنلاین محدودیت دارند لذا این مساله رو مد نظر داشته باشید. شما میتونید از Colab استفاده کنید. البته مد نظر داشته باشید گوگل درایو محدودیت 15 گیگابایت حجم رو داره. همچنین ممکنه پس از چندین بار تلاش در روز، شما رو در استفاده از GPU محدود میکنهروش پیشنهادی: استفاده از فایلهای ارائه شده توسط:‌ camenduru. از این لینک برای دریافت فایلهایی با فرمت ipynb میتوانید استفاده کنید. این ریپو مناسب این هستش که مدلهای مختلف رو تست کنید بدون اینکه مجبور باشید حجم بالایی از فایل رو روی گوگل درایو خودتون ذخیره کنید. کافی هستش که فایل ipynb ( در اینجا به عنوان مثال anything_4_webui_colab.ipynb) رو دریافت کرده،‌ سپس اون رو در گوگل درایو خودتون آپلود کنید، روی فایل کلیک کرده و بر روی دکمه‌ی اجرا کلیک کنید. در نهایت یک لینک با دامنه‌ی gradio.drive به شما داده خواهد شد که اگر روی اون کلیک کنید، رابط وب برای شما باز خواهد شد.روی دکمه‌ی Play کلیک کنید تا کدها اجرا بشن!روش دوم: استفاده از ریپوی thelastben. این روش مشابه بالا هستش با این تفاوت که لینک مدل رو ما خودمون به کد داده و کد فایلهارو دریافت میکنه. خوبیش اینه که میتونید مدلهای دلخواه خودتون رو بریزید. بدیش اینه که فایلها روی گوگل درایو ذخیره میشن که به سرعت به محدودیت حجم برخورد میکنید.این فایل رو از این مسیر کپی کرده و در درایو خودتون آپلود کنید. سپس خط‌ها رو به ترتیب یکی یکی اجرا کنید تا به این قسمت برسید:در قسمت model_link آدرس فایل مدل مورد نظر رو وارد کنید (فایل CKPT) اگر فرمت فایل safetensors هستش این گزینه رو فعال کنید. سپس ادامه خطوط رو اجرا کنید. در نهایت به شما یک لینک وب با دامنه gradio.live میده که اگر روی اون کلیک کنید، رابط وب برای شما باز خواهد شد.اگر کد به درستی اجرا بشه،‌باید لینک‌هایی مشابه زیر بگیرید. پس از نصباگر مراحل نصب رو با موفقیت گذروندید،‌ با صفحه‌ای مشابه صفحه‌ی روبرو مواجه میشید (به صورت پیشفرض تم روشن خواهد بود. برای اینکه عکس خوب در بیاد تم رو دارک کردم)مطمئن باشید که تب txt2img انتخاب شده. خوب حالا ما اولین عکس رو برای آزمایش تولید میکنیم! برای این مثال من میخوام یک عکس پسربچه با موهای قهوه‌ای که توی پارک روی نیمکت نشسته رو میخوام تولید کنم. در قسمت prompts اینهارو میزنم:portrait of a boy sitting on bench in park, brown hair, sportswear, smiling, outdoors, highly detailed, digital painting, high resolution, artstation, concept art, smooth, (((masterpiece))), (((best quality))), ((ultra-detailed)), (cinematic lighting), (illustration), (beautiful detailed eyes), (1boy), upper body, looking at viewer, depth of fieldو در قسمت negative prompts:bad anatomy, bad hands, text, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist nameقسمت‌های دیگه رو به حال خودشون رها کنید. مخصوصا قسمت height و width رو هرگز بیشتر از ۵۱۲ در ۵۱۲ نکنید. قسمت seed رو روی -۱ بزارید تا تصویر تصادفی تولید بشه (منفی یک به معنای تصادفی هستش). در نهایت گزینه‌ی generate رو بزنید. خروجی برای بنده:   مدلها رو از کجا دریافت کنیم؟مدل‌ها، فایلهای آموزش دیده‌ای هستند که تصاویر رو برای شما تولید میکنند. معمولا روال به این صورت هستش که تعداد بسیار زیادی عکس به صورت تگ شده (توضیحات راجع به جزییات عکس به صورت متنی) به ابزار داده میشه و ابزار پس از تحلیل حجم بسیاری از داده، یاد میگیره که سوژه ای رو که بهش میدید، چی هست. به عنوان مثال تعداد زیادی عکس از چهره افراد میدید و به عکس تگ صورت،‌چشم، بینی و ... رو میدید. ابزار با استفاده از تحلیل عکس‌ها و مقایسه‌، دید کلی پیدا میکنه که این عکس حاوی بینی و چشم و ... هستش و این قسمت‌هارو یاد میگیره. فرآیند یادگیری زمانبر هستش لذا ما مدلی که قبلا آموزش داده شده رو دریافت میکنیم.مدل‌ها رو میتونید از سایت huggingface.co و یا civitai.com جستجو و دریافت کنید. معمولا فایل مدلها فرمت CKPT و یا safetensors دارند.نکته: بهتر هستش که فایلهایی که دریافت میکنید فرمت safetensors داشته باشند. فایلهای CKPT میتوانند کدهای مورد نظرشون رو روی سیستم شما اجرا کنند. لذا ممکن هستش این فایلها حاوی کدهای مخرب باشند. کلا اگر فایل ckpt دریافت میکنید، حواستون به این قضیه باشه. برخی مدلها هر دو نسخه رو ارائه میدند. چند تا از مدلهای معروف:Stable diffuion (مدل اصلی استیبل دیفیوژن برای تولید عکس‌های عمومی)Realistic visionOpenjourneyالبته این مدلهای بالا بیشتر مناسب تولید عکس‌های با موضوع عمومی هستند (درخت، جنگل،‌ ساختمون، آدم) برای انیمه:anything V3Anything v4.5waifu diffusioncounterfait 2.5abyss orange mixنکته‌ی بسیار مهم: حواستون باشه برخی مدلها ممکن هستش عکس‌هایی تولید کنند که NSFW باشند. اگر برای شرایط کارتون نیاز هستش که عکس‌های SFW تولید کنید،‌ حتما مدلی رو دریافت کنید که با عکس‌های SFW آموزش داده شده باشه. در قسمت ۲ در مورد txt2img صحبت میکنیم و در قسمت ۳ در مورد img2img.</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Mon, 20 Mar 2023 22:51:31 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۰.۵</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B0%DB%B5-bg2zrmvppy5v</link>
                <description>توجه: این قسمت شامل توضیحات کاملا به درد نخور هستش. اگر قصد نصب و راه‌اندازی Stable Diffusion را دارید،‌ حتما به قسمت ۱ مراجعه کنید. در اکثر موارد خواندن این قسمت ( قسمت ۰.۵) اتلاف وقت هستش.    البته این پست نیاز هستش تا دوستان طرفدار نرم‌افزار آزاد کله‌ی بنده رو از تن جدا نکنند! بسیاری از کدها و مدلهایی که در حال استفاده هستند، تحت مجوز Creative ML OpenRAIL-M انتشار پیدا کرده اند. مجوزی که استفاده از مدلها رو برای اهداف آزاد ارائه میدند. البته دارای محدودیت هایی نیز هستش (به عنوان مثال مدلهای استفاده شده نباید در جهت تولید محتوا برای صدمه زدن به اقلیت‌ها و یا دیگران استفاده بشه و یا قوانین محلی-کشوری رو نقض کنه) ضمنا مسئولیت انتشار محتوا و حق نشر هم بر عهده شماست.    نکته‌ای هم که باید بدونید اینه که برخی مدلهای آموزش داده شده،‌ توسط عکس‌هایی آموزش داده شده اند که سازنده الزاما دسترسی و مجوز برای استفاده از اون اثر رو در جهت آموزش مدلهای هوش مصنوعی نداده. به عنوان مثال، خود مدل اصلی که Stable Diffusion استفاده میکنه، از تصاویر laion-5b استفاده میکنه. LAION-5B شامل ۵ میلیارد تصاویر جمع‌آوری شده از سطح اینترنت هستش که جهت یادگیری هوش مصنوعی تگ گذاری شده‌اند. بسیاری از این تصاویر دارای مجوزهای مختلف هستند، و برخی از سازندگان این تصاویر گفتند که رضایت نداشتند که از محتوای تولید شده‌ی اونها در یادگیری ماشین استفاده بشه. در حال نوشتن این مطلب، همچنان یک دادگاه بین برخی از هنرمندان معترض!‌ با این شرکتها در حال پیگیری هستش. صرفه نظر از نتیجه‌ی دادگاه، شما بهتره که بدونید در مدل آموزش دیده‌ی شما ممکنه تصاویری استفاده شده باشه که طراح اون اثر اصلا رضایت استفاده از اون اثر برای استفاده در مدلها نداشته باشه. همواره در بروزرسانی مدلهای مختلف، مخصوصا مدل اصلی SD،‌ برخی داده‌ها (تصاویر اصلی داده شده به هوش مصنوعی جهت یادگیری)‌ بنا به درخواست هنرمند حذف میشوند. لذا در نتیجه‌ی نهایی در نسخه‌های مختلف ممکن هستش که نتایج متفاوتی رو بگیرید.    نکته بعدی در مورد مدل مورد استفاده‌ی ما هستش. در اکثر موارد،‌ مگر اینکه ذکر بشه،‌ از Anything AI استفاده خواهد شد. به عنوان نکته بگم که من به عنوان تفریح این محتواها رو تولید میکنم و نه به عنوان فعالیت جدی. لذا برای مصارف آموزشی،‌ مخصوصا این مجموعه مقاله‌ها، نیاز بود از یک مدل کم دردسر برای تولید استفاده بشه. اگر میخواستم برم سمت تولید عکس‌های realistic، قطعا عکس‌ها دارای ایرادات و مشکلات زیادی میشدند که نیاز به ریزه‌کاری‌های زیادی بود تا خروجی خوب بگیریم. با تولید عکس‌های انیمه‌ای، ایرادات کمتر در عکس مشاهده میشن (به عنوان مثال عکس بالا ایرادات بسیار واضحی در قسمت دست‌ها و نحوه گرفتن قلم، و همچنین قرارگیری چشم‌ها داره که اصلا ولش میکنیم :) چون این عکس صرفا جهت خالی نبودن این مطلب تولید شده و دقت ۱۰۰٪‌ ای برای تولیدش گذاشته نشده)    ضمنا در مورد Anything AI و سایر مدلهای معروفی که در huggingface و یا civitAI میبینید: هرچند این مدلها مجوز Creative ML OpenRAIL-M دارند، اما مدل‌ها از روی مدلی که بعد از هک شدن سایت NovelAI نشت پیدا کرده بود، شده بود تولید شده‌اند! لذا اگر بخواید پیگیر مجوز بازی!‌ این مدلها بشید، داستان اساسی خواهید داشت. ممکنه یک روز داستان اتفاقات Anything AI و اینکه چرا منتشر کننده‌ی اون بروزرسانی دیگه‌ای نمیده رو در یک پست جداگونه بنویسم. اما چون برخی از مخاطبین این پست روی موضوع نرم‌افزار آزاد ممکنه حساس باشند، باید بدونن که ممکنه برخی مدل‌های هوش مصنوعی با برخی اصول اخلاقی خودشون جور در نیاد. رعایت اصول اخلاقی ارتباطی به قانونی بودن یا نبودن موضوع نداره. همچنین دوست ندارم وقت خودمو صرف کنم برای جر و بحث با دوستانی که دنبال ایراد گرفتن الکی هستند که جنجال راه بندازند. مدلهایی که بنده دارم استفاده میکنم، دارای مجوز CreativeML Open RAIL++-M License هستند.در نهایت اگر حوصله‌ی سردرد گرفتن دارید، میتونید برید سراغ خوندن license ها و با افراد بیکار! بشینید ساعت‌ها بحث کنید! من که حوصله‌ی این چیزها رو ندارم. (همچنین مدلها توسط بنده تولید نشده اند که بخوام نگران موضوعی باشم. قطعا RTX 3070 بنده کشش آموزش مدل رو نداره)</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Mon, 20 Mar 2023 19:03:48 +0330</pubDate>
            </item>
                    <item>
                <title>تولید تصاویر انیمه با Stable Diffusion - قسمت ۰</title>
                <link>https://virgool.io/@hayyan71/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D9%86%DB%8C%D9%85%D9%87-%D8%A8%D8%A7-stable-diffusion-%D9%82%D8%B3%D9%85%D8%AA-%DB%B0-lccoqfdk8ja2</link>
                <description>    اگر در چند ماه گذشته حداقل یک بار تلفن همراه یا رایانه خودتونو به اینترنت متصل کرده باشید، حتما اخبار جنجالی هوش مصنوعی به چشمتون خورده. اخباری که انگار تمومی ندارند. از چت جی پی تی تا ابزارهایی که موسیقی تولید میکنند. هر روز اخبار در این زمینه بیشتر منتشر میشن و هر روز کنجکاوی مارو بیشتر تحریک میکنند.    برخی از ما ممکنه بنا به کنجکاوی و سرگرمی از این ابزارها استفاده کنیم. برخی شاید جهت حرفه یا شغل یا نیاز روزمره. نکته بد ماجرا اینجاست که تا یه چیزی ترند میشه، برخی افراد، مخصوصا تولید کنندگان محتوا در پلتفرم های ویدیویی مانند یوتیوب میان سریع یه ویدیوی بی‌ربط در رابطه با اون موضوع میزارن که بیشتر مارو سردرگم میکنه. شاید برخی افراد دوست داشته باشند که در اون زمینه یک فعالیتی داشته باشند اما فلان ویدیوی کاملا بی‌ربط فلان یوتیوبر که میگه &quot;چطور از هوش مصنوعی کسب درآمد میلیاردی داشته باشیم&quot; (اشاره مستقیمی به هیچ کس خاصی ندارم :) ) کاملا گیج و سردرگمشون کرده باشه و کلا بیخیال موضوع شده باشند. البته قرار نیست این مطلب راجع به انتقاد از این رفتار برخی تولید کنندگان محتوا باشه. این وسط کار ممکنه شما محتوای سازنده‌ای هم پیدا کنید که شما رو به موضوع دلخواهتون راهنمایی کنه. این پست‌های سریالی هم قراره در همین موضوع باشه: پیدا کردن یک سرنخ برای شروع!    در زمینه‌ی تولید عکس با هوش مصنوعی، ابزارها و سرویس‌های مختلفی در دسترس هستند. برخی از این ابزارها کاملا رایگان و آزاد منتشر شده‌اند، برخی دیگر نیز به صورت غیررایگان و اشتراکی. اگر این مطلب رو دارید میخونید، احتمالا با ابزار Midjourney نیز آشنایی دارید. میدجورنی رایگان نیست، پس از تولید تعداد عکس محدود حساب Trial شما تمام میشه و باید اشتراک تهیه کنید. سایر ابزارهای آنلاین هم ظاهرا سردرگم کننده هستند. تصمیم گرفتم که با استفاده از یک ابزار به نام Stable Diffusion مدتی کار کنم. نتایج به نظر من بسیار عالی بود که در نهایت تصمیم گرفتم یک دنباله‌ای از پست‌ها در موردش بنویسم که اگر دوستان دیگه هم خواستند سمت این موضوع بیان، ایده کلی داشته باشند.   قبل از اینکه استارت بزنیم، باید بگم که Stable Diffusion صرفا برای تولید تصاویر انیمه نیست. شما میتونید عکسهایی با موضوعات متناسب با سلیقتون تولید کنید. این بستگی به حوصله و وقت شما داره. صرفا بنا به دلایلی ترجیح دادم در این آموزش از عکس‌های تولید شده با موضوع انیمه استفاده کنم (از شدت تنبلی!).در پست بعدی ( شماره ۰.۵) یک سری توضیحات کاملا بی‌ربط که خوندنش برای افراد عادی توصیه نمیشه، نوشته خواهد شد و در شماره ۱ آموزش نصب و کانفیگ Stable Diffusion Webui آموزش داده میشه.فعلا این پست رو با یک عکس انیمه که با هوش مصنوعی تولید شده تموم میکنیم:</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Mon, 20 Mar 2023 16:32:09 +0330</pubDate>
            </item>
                    <item>
                <title>مهاجرت از Fedora به openSUSE - قسمت دوم</title>
                <link>https://virgool.io/@hayyan71/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-fedora-%D8%A8%D9%87-opensuse-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-tajndosvmigj</link>
                <description>قسمت اول‌ :‌ https://vrgl.ir/X0Zh4در نوشته‌ی قبلی به چند تا از دلایلی که باعث شد تصمیم بگیرم به فدورا مهاجرت کنم رو توضیح دادم. برخی از این دلایل نیز همان دلایلی هستند که کاربران از openSUSE مهاجرت می‌کنند. در این پست سعی می‌کنم که توضیح بدم چرا فدورا رو انتخاب کردم، و پس از تغییر توزیع، درگیر چه چالش‌هایی برای نصب و پیکربندی بودم.مهاجرت از یک توزیع به توزیع دیگر همیشه آسان نیست. هر چقدر هم با توزیع‌های مختلف کار کرده باشی، باز هم تغییر توزیع پیش‌فرض رایانه‌ی شخصی ممکنه دردسر ساز باشه. گاها شرایط تحمیل می‌کنه که سمت توزیع‌های خاصی نری یا برخی توزیع‌هارو توی اولویت قرار بدی.به هر حال، در نوشته‌ی قبلی، در بخشی از مقاله‌ام اشاره کردم که openSUSE بر روی سیستم بنده بسیار خوب کار می‌کرد. شاید این مساله مهم‌ترین دلیل برای نگه‌داری یک توزیع باشه. برخی کاربران صرفا با به برخورد به یک مشکل ساده تصمیم به تغییر توزیع می‌گیرند. به عنوان مثال به نظر آنها مصرف باتری توزیع خاصی کمتر از بقیه هستش، و یا فلان بسته در فلان توزیع موجود نیست، و یا گاها در جستجو برای کشف توزیع مینیمال! و بسیاری دلایل که بعضا جالب هستند. اما برای بنده هیچکدام از اینها نبود. قابلیت شخصی‌سازی مناسب در هنگام مراحل installation در openSUSE به بنده این اختیار رو داده بود که بتونم در مدت زمان کوتاهی، یک سیستم قابل استفاده و پیکربندی شده رو ایجاد کنم. بسته‌هایی رو که میخواستم در هنگام مراحل نصب به راحتی انتخاب می‌کردم، پیکربندی‌های گراب ۲ و فایروال و سایر مراحل نیز در همان مراحل نصب قابل دسترسی بودند و نیاز نبود حتما ابتدا توزیع نصب شده باشه تا بشه بعدا پیکربندیش کرد. بسیاری از برنامه‌های کاربردی که من با اونا کار میکردم در مخازن موجود بودند و به جز چند استثنا، نیازی نبود سایر بسته‌ها از مخازن غیر رسمی نصب بشن. ضمنا هر روز به سرم نمیزد که بشینم یک بسته‌ی جدید رو نصب و امتحان کنم! در واقع بیشتر استفاده‌ی من از مدیر بسته، فقط برای دستور بروزرسانی سیستم بود. کلا با یک سیستم تقریبا بدون تغییر روبرو بودم که مرتبا بروزرسانی دریافت می‌کرد. لذا بسیار راحت می‌تونستم بشینم و سالهای بعد نیز از openSUSE بدون نگرانی بسیار خاصی بر روی رایانه‌ی خودم لذت ببرم.اما برنامه‌ها و فایل‌ها بخشی از یک سیستم‌عامل هستند. بخش دیگر،‌ کاربر و جامعه‌ی کاربری هستش که با توضیحات پست قبل، احتمالا متوجه شدید که بسیاری از افراد مانند من، به دلیل برخی تصمیمات غلط مدیران، دلزده شده‌اند. اصلا تصمیم راحتی نبود که برای جدا شدن از جامعه‌ی کاربری در حال سقوط، تصمیم به تغییر توزیع بگیرم. چند هفته در حال فکر به این موضوع بودم و در واقع جدا شدن از جامعه‌ی کاربری openSUSE بهانه‌ای شد که این توزیع رو پاک کنم. در واقع هدف من این بود که جامعه‌ی کاربری openSUSE رو با حذف این توزیع به آرامی به فراموشی بسپارم. حال باید توزیع جدیدی انتخاب میکردم. اما توزیع جدید باید چه شرایطی میداشت؟مراحل نصب در عین حال که باید کوتاه و ساده می‌بود، در عین حال باید چالش‌هایی هم میداشت. همه چیز نباید با دو کلیک نصب می‌شد. همچنین نباید ساعت‌ها و روزها وقتمو برای مراحل نصب تلف می‌کردم (با پوزش از دوستانی‌که علاقه دارند روزها و هفته‌ها توزیع خودشون رو کامپایل کنند به این امید که با ساختار داخلی لینوکس آشنا بشن.) با این حساب آرچ به راحتی از لیست خط خورداوبونتو گزینه‌ی مناسبی بود. اما APT و DPKG خیر! ( و خدابیامرزر apt-get که کلا خیر!)نحوه‌ی عملکرد توزیع باید طوری می‌بود که مرا به سمت تشویق به فعالیت در جامعه‌ی کاربری و گروه‌های اجتماعی اون توزیع میکرد. با این حساب، مینت نیز خط خورد.صحبت از Toxic بودن شد و اینجا یکی از توزیع‌های معروف بدون اینکه نامی ازش برده بشه خودش اتوماتیک خط خورد، شما اسمشو حدس بزنید!بسته‌های قدیمی رو فراموش کنید. به قول یکی از فعالان حوزه‌ی نرم افزار آزاد، فلان نسخه‌ی LTS فلان توزیع رو به دشمنتونم سفارش نکنید!زمان برای تست دستی هر بسته کوتاه است. لطفا به فکر جایگزینی با روش‌های اتوماتیک سازی فرآیند تست و بررسی بسته‌ها باشید.مورد بالا به این معنی نیست که کلا تست نکنید!با این شرایط و با توجه به اینکه فدورا ۳۳ تصمیم گرفته بود BTRFS رو فایل‌سیستم پیش‌فرض برای نصب قرار بده، تصمیم به جابه‌جایی به این توزیع گرفتم و تقریبا بعد از ۲ هفته تفکر و جمع‌بندی نهایی، بلاخره openSUSE Tumbleweed رو از روی سیستم خودم پاک کردم و با فدورا ۳۳ بتا جایگزین کردم. اما همیشه نصب توزیع جدید خالی از دردسر نیست...مراحل نصب و پیکره‌بندی در فدورا بسیار ساده و کوتاه هستش و کاربران با چند بار تمرین احتمالا در نصب حرفه‌ای میشن. من همیشه یک نسخه از فدورا با میزکار Gnome رو برای شرایط مختلف و بعضا آزمون برخی امکانات در ماشین مجازی در سیستمم داشتم. اما این بار قضیه فرق میکرد. من نمیخواستم به Gnome مهاجرت کنم. ابزارهای KDE برای بنده بسیار کاربردی بودند و اصلا به فکر جایگزینی اونها نبودم. اما آیا اسپین KDE در فدورا به خوبی نسخه‌ی Gnome پیکر بندی شده؟ به عنوان کاربری که در openSUSE با بنده به عنوان یک شهروند top-class در میزکار KDE برخورد میشد، پیکره‌بندی و نرم‌افزارهای پیش‌فرض در Fedora KDE Spin اصلا جالب نیستند! اگر میخواین به فرد دیگری از دوستانتون میزکار Plasma رو پیشنهاد بدید، به نظر من فدورا رو از لیست پیشنهادهاتون خارج کنید! برادر بنده از Kubuntu استفاده می‌کنه و KDE Plasma در این توزیع بسیار بهتر کار شده و برای یک کاربر دسکتاپ بسیار ساده‌تر از فدورا با میزکار KDE هست. در Fedora، در میزکار KDE انگار خود توسعه‌دهنگانش اصلا از این میزکار استفاده نمیکنند و صرفا یک نمایشگاه محصولات KDE هستش! یعنی بسیاری از ابزارها اصلا شاید کاربردی ندارند و صرفا برای نمایش قرار داده شدند (پشت ویترین گذاشتند و نوشتند &quot;لطفا دست نزنید&quot;). چرا همزمان هم فایرفاکس و هم مرورگر تقریبا قدیمی فالکون نصب هستش (کسی از فالکون استفاده می‌کنه؟) ابزارهای زیرخاکی Kget و Ktorrent که از ۲۰۱۲ به بعد به صورت فعال بروزرسانی نشده‌اند، در نصب پیش‌فرض فدورا چه میکنند؟ اصلا چرا libreoffice رو با calligra که احتمالا کاربری نداره جایگزین کرده اند؟ چرا برخی ابزارها با اینکه بسته‌ی KF5 دارند همچنان از نسخه‌ی GTK برای نمایش استفاده می‌کنند؟ اگر بخوام یک لیست از این چرا‌ها تهیه کنم،‌ احتمالا حوصله‌ی شما سر میره و به این نتیجه می‌رسید که اسپین KDE‌ی فدورا تا حد زیادی bloated شده، و اگر به عنوان کاربر KDE تصمیم به مهاجرت به فدورا بگیرید، احتمالا باید کمی سختی بکشید. برخی از تغییراتی که من انجام دادم تا فدورا با میزکار KDE Plasma رو &quot;قابل استفاده&quot; کنم رو اوردم. البته لیست همه رو ننوشتم چون برخی از اونها یادم رفته، اما مراحل بروزرسانی، نصب بسته‌های جدید و حذف بسته‌های زائد،‌ با اینترنت 3 مگابیت بر ثانیه، حدودا ۵ ساعت زمان برد. ( نکته: اگر کاربر جدید فدورا هستید، حتما قبلش این پست رو بخونید).حذف بسته‌های Calligra, K3b, Dragon Player, Fedora Media Writer , Ktorrent, Kget، بسته‌ی Virtualbox-guest-additions ( به صورت عجیبی این بسته به صورت پیش‌فرض در سیستم‌های واقعی هم نصب میشه. از دوستان فدوراییم که پرسیدم، اصلا تعجب نکردند!) فالکون، و تعداد دیگری از بسته‌های نصب شده در زیرشاخه‌ی Internetنصب لیبره آفیس، و همچنین نصب بسته‌ی libreoffice-kf5 (انگار این بسته توسط مدیر بسته پیشنهاد نمیشه و باعث میشه libreoffice در فدورا از GTK استفاده کنه.نصب برخی ابزارهای کاربردی KDE Plasma که ظاهرا بنا به دلایل نامعلومی به صورت پیش‌فرض موجود نیستند. مانند Kate!( واقعا هدف از قرار ندادن Kate و قرار دادن بسته‌های بلااستفاده مانند contact theme editor در فدورا چی هستش؟)، بسته‌ی Kompare (من به جای diff استفاده می‌کنم). همچنین تلاش نافرجام برای اینکه بدونم چرا نسخه‌های جدید Chromium در فدورا رابط گرافیکی قدیمی رو حفظ کردند.حذف فونت کوفی به صورت دستی! نصب برخی فونت‌ها مانند bitstream-vera،‌ Roboto و Adobe Source pro (همه‌ی اینها در مخازن هستند. البته برخی فونت‌های فارسی مانند وزیر و صمیم به صورت دستی نصب شدند)، و در نهایت، پیکربندی میزکار برای استفاده از فونت‌های جدید.برخی کانفیگ‌ها در فایل گراب ۲. تنظیم ماونت پوینت‌ها. برخی تنظیمات عجیب و غریب دیگه که اصلا یادم نمیاد. به عنوان مثال مجبور بودم نوار آدرس رو در دلفین فعالش کنم چون ظاهر عجیبی داشت!فحش دادن (ته دلم) به نگه دارندگان بسته‌های کی دی ای پلاسما در مخازن فدورا. انگار جدا خودشون هیچوقت این چیزا رو تست نمی‌کنند. همه چیز از رابط GTK در میزکار کی‌ دی ای در فدورا استفاده میکنه. یک مثال لیبره‌آفیس بود، یک مثال دیگه فایرفاکس، یا virt-manager. یا بسته‌ی smplayer با اینکه تم Qt داره اما به صورت پیش‌فرض با رابط GTK نمایش داده میشه. در openSUSE به شدت بر روی نحوه‌ی نمایش، کار شده بود.و در نهایت،‌ نصب برخی بسته‌هایی که برای بنده مصرف شخصی داشتند، مانند Lokalizeِ، Vscode, Gimp،‌ پرسپولیسپس از چندین ساعت تلاش، در نهایت ظاهرا نسخه‌ی فدورای تازه نصب شده‌ی خودم رو تبدیل کردم به چیزی که تا حدی در دسک‌تاپ openSUSE خودم می‌گرفتم. حال تفاوت زیادی بین دسک‌تاپ قبلی و دسک‌تاپ فعلی برای بنده وجود نداره. همه‌ی ابزار‌ها تقریبا سر جای خودشون هستند.میزکار فعلی بنده با سیستم‌عامل فدورا. به Mr linea  و نحوه‌ی جهت گیری دوستمون دقت نکنید! اما این همه دردسر فقط برای به دست اوردن چیزی که قبلا مشابهش بوده؟ جواب خیر هستش!در واقع بعد از چند ساعت وقت گذاشتن برای نصب و پیکره‌بندی فدورا، بسیار خوشحال شدم که به این توزیع مهاجرت کردم. یک سیستم فقط چهار تا فایل و دو تا نرم‌افزار نیست. بخشی از این سیستم‌عامل، ما کاربرا هستیم، و شاید هم بخش بسیار مهمی از سیستم‌عامل، ما کاربران هستیم. اگر توزیعی، بخشی از سرمایه‌ی مهم خودش یعنی کاربراشو از دست بده، احتمالا جبران کردن اون ضرر و زیان به راحتی امکان‌پذیر نخواهد بود، و این اتفاقی هستش که در حال حاظر در openSUSE داره میفته. هرچند وابستگی شدید به SUSE باعث کندی پیشرفت openSUSE شده، اما انداختن همه‌ی تقصیرها بر گردن SUSE به نحوی شانه خالی کردن از اشتباهات خود فرد هست. بی‌مسئولیتی برخی توسعه‌دهندگان باعث شده که کاربران علاقه‌ی کمتری به ایجاد تغییرات و مشارکت در پروژه داشته باشند و شاید افراد دیگری مثل من امیدشون رو از ایجاد تغییرات مثبت در این پروژه از دست دادند.به هر حال من دوستانی در گروه‌های مختلف فدورایی دارم. دیشب که در گروه دیسکورد فدورا فعال بودم (البته بیش از یک سال هستش که اونجام)، با حوصله و مهربانی با بنده برخورد می‌کردند، یعنی دقیقا چیزی‌که  در بسیاری از گروه‌های لینوکس یا از بین رفته، یا در حال از بین رفتن هستش.</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Thu, 22 Oct 2020 22:44:51 +0330</pubDate>
            </item>
                    <item>
                <title>مهاجرت از openSUSE به فدورا- قسمت اول</title>
                <link>https://virgool.io/@hayyan71/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-opensuse-%D8%A8%D9%87-%D9%81%D8%AF%D9%88%D8%B1%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-quhvczvpqw50</link>
                <description>بلاخره بعد از مدتها تصمیم گرفتم از openSUSE به فدورا جابه‌جا بشم! البته این تصمیم، یک تصمیمی نبود که در چند ثانیه بهش رسیده باشم، و یا اعصابم از کار نکردن چیزی خورد باشه و بگم &quot; ولش کن یه توزیع دیگه نصب میکنم.&quot; تا حدی قضایا برعکس بود، البته تا حدی...به علت طولانی بودن مطلب اونو در دو پست جداگونه خواهم نوشت...-------------------------------------------------------------------------------------------------------------------البته در گذر زمان توزیع‌های مختلفی رو استفاده کرده بودم، و این بار سومی هستش که از فدورا به عنوان توزیع اصلی لینوکسی رایانه‌ام استفاده میکنم. البته من مانند خیلی از دوستان لینوکس رو با اوبونتو شروع کردم. اما بار اول استفاده از فدورا برای من، سال ۲۰۰۹ بود که حدود ۳ ماه از فدورا به عنوان توزیع اصلی لینوکسی‌ام استفاده کردم. بار دوم در حدود سال ۲۰۱۵ بود که به مدت تقریبی ۹ ماه از فدورا استفاده کردم. البته تا اون زمان همیشه میزکار من Gnome بود. بعد از اینکه به openSUSE مهاجرت کردم، متوجه شدم که بسیاری از برنامه‌های میزکار Gnome در openSUSE در اون برهه از زمان، تجربه‌ی مطلوبی به کاربر نمیدن. برنامه‌ها در میزکار Gnome یا بسیار قدیمی بودند، یا بیش از حد bloated شده بودند. مخصوصا Leap 42.1 رو اگر دوستان استفاده کرده باشند، زمانیکه حتی CentOS هم به Gnome 3.20 سویچ کرده بود، openSUSE همچنان روی نسخه‌ی 3.16 بود! به معنای کلمه، تجربه‌ی کاربری میزکار Gnome در Leap 42.1 بسیار افتضاح بود. نرم‌افزارهای بسیار قدیمی، نصب پیش‌فرض به شدت bloated تا حدی که اصلا هرگز نمیدونستی بسیاری از نرم‌افزار‌هایی که پیش‌فرض نصب شده‌اند اصلا برای چی هستند!نمایی از منوی نرم‌افزار‌ها در Leap 42.1 با میزکار Gnome.البته عکس بسیارخوب افتاده است! به ۳ صفحه‌ای بودن تعداد نرم‌افزار‌ها دقت کنید!اما در طرف دیگر، وضعیت در KDE Plasma انگار بد نبود. در واقع به نظر خوب می‌آمد. تیم توسعه‌ی openSUSE و KDE رابطه‌ی خوبی داشتند، تا حدی که به عنوان مثال انتشار KDE Plasma 5.8 رو جلو انداختند تا openSUSE بتونه KDE Plasma 5.8 که یک نسخه‌ی LTS بود رو در مخازن اصلیش قرار بده. البته بسیاری از کاربران حتما تعریف‌های زیادی از تجربه‌ی کاربری میزکار KDE Plasma در توزیع openSUSE شنیده‌اند،‌ و واقعیت این است که توسعه‌دهندگان openSUSE زمان زیادی رو برای هماهنگ‌سازی و کاربردی سازی KDE Plasma در openSUSE میکنند. در واقع زمانیکه میزکار KDE Plasma رو در توزیع‌های دیگه امتحان میکردید،‌ ناهماهنگی‌های زیادی،‌ مخصوصا در قسمت‌های visual می‌دیدید. به هر حال KDE Plasma اینقدر در openSUSE بسیار خوب کار شده بود (و هنوز هم میشه!) که بلاخره تصمیم گرفتم از Gnome به KDE Plasma مهاجرت کنم.سری ۴۲ مخصوصا ۴۲.۱ بازخورد مناسبی برای بسیاری از کاربران نداشت. بعضا در IRC ی openSUSE میشنیدم که سایر توسعه‌دهنگان و نگه‌دارندگان بسته ها از سری ۴۲ به شوخی به عنوان یک نمونه Engineering failure یاد میکردند.البته اوضاع به همون صورت بد نموند. تیم توسعه‌ی Gnome در openSUSE بلاخره یه مرور کلی نسبت به وضعیت اسف‌بار Gnome در openSUSE کردند. بسیاری از بسته‌های زائد از میزکار Gnome، و حتی سایر میزکار‌ها در حالت نصب پیش‌فرض openSUSE حذف شدند،‌ و پس از مدت‌ها بلاخره با سر رسیدن 42.2 و استفاده از Gnome 3.20 این میزکار در openSUSE قابل استفاده شد! البته تعجبی نداشت چون بسیاری از توسعه‌دهندگان و نگه‌دارندگان بسته‌ها در openSUSE خودشون هم کاربر Gnome بودند و مشکلات رو درک می‌کردند، مخصوصا در زمانی‌که Rbrown رئیس بورد بود. (خود Rbrown کاربر Gnome هستش و کارمند شرکت SUSE. همونطور هم که میدونید KDE Plasma در مخازن SLE نیست و میزکار پیش‌فرض Gnome هستش، و با توجه به اینکه openSUSE فیدر SLE هستش، بسیار بد بود که یک محصول تجاری با میزکار پیش‌فرض با کلی مشکلات ارائه بشه.)البته هرچند برخی مشکلات مربوط به میزکار حل شدند، اما برخی مشکلات پایه‌ای در openSUSE وجود داشتند، و در گذر زمان اینقدر این مشکلات پررنگ شدند که باعث شدند حتی برخی کاربران ثابت و فعال openSUSE نیز به نشانه‌ی اعتراض به سایر توزیع‌ها مهاجرت کنند. برخی از این مشکلات رو در زیر اوردم که چند تا از اونها هم دلایلی بودند که پس از چند هفته فکر تصمیم گرفتم از openSUSE مهاجرت کنم:وابستگی شدید openSUSE به شرکت SUSE. هرچند openSUSE مدعی هستش که توزیع جامعه‌-محور هستش، اما برخی تصمیم‌گیری‌ها شدیدا تحت تاثیر سیاست‌های شرکت هستش و بعضا بر خلاف نظر &quot;جامعه‌ی کاربری&quot; هستش. البته نمی‌تونم بگم &quot;اکثر جامعه‌ی کاربری&quot;. اما مد نظر داشته باشید بسیاری از Member های openSUSE خودشون کارمند SUSE هستند و حتی اگر شما تصمیم به یه سری تغییرات بگیرید،‌ به صورت مستقیم به تصمیمات شرکت ربط داره. به عنوان مثال، سال قبل نظرسنجی ایجاد شده بود که ببینن آیا کاربران موافق تغییر نام پروژه از openSUSE به نام دیگری هستند؟ با اختلاف قاطع اکثرا رای دادند خیر و بهتره نام openSUSE بمونه. برای جداسازی openSUSE و استقلال اون از SUSE راه‌حلی پیشنهاد شد که مانند فدورا، بیان Foundation راه بندازن که بسیاری از مسائل مانند تامین هزینه‌های مالی، برندینگ، فروشگاه و خیلی چیزهای دیگه رو فاندیشن حل کنه. هرچند این طرح طرفداران بسیار زیادی داره، اما بسیار حلزونی داره پیش میره،‌ البته اگر نگیم کلا پیشرفتی نداشته!مشکل برندینگ. بسیاری از کاربران SUSE و openSUSE رو یکی میدونن و حتی به اشتباه اونها رو به جای هم خطاب میکنند. چیزی که هستش اینه که SUSE یک شرکت هستش و نه یه سیستم‌عامل، و این مساله بسیار دردسرساز هستش.  فرض کنید ردهت اومده بود به جای پروژه‌ی فدورا، اسم اون رو اوپن ردهت گذاشته بود. حال فرض کند بعد از تقریبا ۲ دهه چقدر سخت میشد که به کاربران بفهمونیم &quot;اوپن ردهت&quot; و &quot;شرکت ردهت&quot; و &quot;توزیع RHEL&quot; یکی نیستند. حال فرض کنید به جای سنت‌او‌اس هم مینوشتن &quot;فری‌ردهت&quot;، اونوقت چه اوضاع افتضاحی میشد. ردهت بسیار هوشمندانه در اون زمان عمل کرد، اما اوضاع برای openSUSE چنین نبود و هر مرحله اوضاع رو بدتر کردند... openSUSE &gt; openSUSE Tumbleweed &gt; opneSUSE Leap و غیره... اوپن سوزا حتی لوگوی مستقل هم نداره! تا آوریل ۲۰۲۰ لوگوی شرکت SUSE، سیستم‌عامل‌های SLE و openSUSE یکسان بود که همه رو گیج میکرد. بلاخره در ۱ آوریل ۲۰۲۰، در حالی‌که برخی کاربران openSUSE از شباهت لوگو شاکی بودند، SUSE تصمیم گرفت تغییرات اندکی در لوگوی خودش بده. گیکو، آفتاب پرست لوگوی SUSE کمی سبزتر شد و تغییرات ظاهری بیشتری نیز داشت. اما انگار قرار نیست بعد از ۱۵ سال همچنان لوگوی openSUSE به روز و مدرن بشهلوگوی قبلی شرکت SUSEلوگوی ۲۰۲۰ شرکتمشکلات مستندات. نوشتن ویکی و مستندات یک بحث هستش،‌ نگه‌داری و بروزرسانی اونا بحثی دیگر. بسیاری از صفحات ویکی openSUSE سالیان سال هستش که بروزرسانی نشده اند. صفحات کاربردی مانند نصب درایور غیر‌آزاد و گراب ۲ و  سایر مسائل مرتب بروزرسانی میشن. اما ویکی openSUSE حاوی مطالب بسیار قدیمی هستش و متاسفانه تعداد داوطلبان برای بروزرسانی اونا کم هستش.ابزار‌های YaST و Zypper! کسی فکرش رو نمیکرد که امکانات پرچمدار openSUSE روزی به نقاط ضعف اون تبدیل بشن. زمانی‌که این ابزار‌ها نوشته شدند، بسیار پیشرفته و قدرت‌مند بودند. اما مانند ویکی، نوشتن و نگه‌داری دو بحث متفاوت هستند. بسیاری از پلاگین‌های نوشته شده برای Zypper ناقص هستند و کد این مدیربسته را شلوغ و شلخته کرده‌اند متاسفانه کسی نیست که چرخ رو از اول اختراع کنه و کد‌ها و پلاگین‌های Zypper که کدهای زیادی دارند رو بازنویسی کنه. در حال حاظر تقریبا تصمیم گرفته شده که Zypper بازنشسته بشه و به مدیر بسته‌ی DNF مهاجرت بشه. dnf مراحل پایانی هماهنگی با openSUSE رو داره میگذرونه و احتمالا در زمانی نه چندان دور zypper به تاریخ خواهد پیوست! البته باید صد رحمت بگین به zypper چون اوضاع ِYaST از اون هم بدتره. این ابزار مدیریت سیستم چندین بار مجدد از اول نوشته شده و دلیل اینکه هنوز زندست به این دلیل هستش که توسعه‌دهنگان اون در شرکت SUSE بنا به دلایلی به نگه‌داری اون پافشاری می‌کنند و openSUSE هم باید به پای این تصمیم ظاهرا تا اطلاع ثانوی بسوزه. بسیاری از پلاگین‌های YaST دیگر نگه‌داری نمیشوند و به عنوان یک کاربر دسک‌تاپ اصلا مشخص نیست چرا باید این ابزار رو روی نصب پیش‌فرضمون داشته باشیم. ممکنه مدیر بسته‌ی گرافیکی YaST کاربرد داشته باشه، اما واقعا سوال هستش که چرا یک کاربر دسک‌تاپ باید پلاگین کانفیگ سرور ایمیل و یا سرور http یا تنظیمات پیشرفته ی NFS رو به صورت پیش‌فرض نصب داشته باشه. البته openSUSE میتونه بدون YaST نصب بشه و کار کنه، اما این SUSE ول کن این ابزار زیرخاکی نیست.و اما مهم‌ترین برای بنده، ضعیف شدن جامعه‌ی کاربری این توزیع به دلیل تصمیمات غلط هستش. البته ضعیف شدن به معنای toxic شدن نیست. خیلی سخت هستش که در دنیای لینوکس جامعه‌ی کاربری سالم و دوستانه‌ای مانند جامعه‌ی کاربری  openSUSE پیدا کنید. مثال از جامعه‌ی کاربری toxic دنیای لینوکس زیاد هستش که ترجیح میدم نام نبرم! اما در openSUSE رفتارها دوستانه هستش و کسی به شما بنا به دلایلی مانند کاربر مبتدی بودن، یا استفاده از کالی، توهین نمیکنه. بسیاری از کاربرانی که در گروه‌های اجتماعی مانند سرور دیسکورد openSUSE عضو هستند، شاید خیلی وقت هستش به سایر توزیع‌ها سویچ کردند اما به علت جو دوستانه‌ی openSUSE در این گروه‌ها موندند. اما اون دسته کاربران هم کم‌کم شروع به ترک جامعه‌ی openSUSE کرده‌اند. چرا؟ صرفا حضور در جامعه‌ی کاربری مهم نیست. فعالیت هم مساله‌ی بسیار مهمی هستش. یادمه پارسال در طول برگزاری osc2019  بسیاری از صحبت‌ها در مورد گروه دیسکورد openSUSE بوده و اکثرا به دلیل مدیریت قوی اون گروه دیسکورد، تعریف و تمجید‌های زیادی از اون گروه شده بود و به نحوی به نماد قدرت openSUSE در حال تبدیل شدن بود. حتی ۴ از ۶ نفر از اعضای بورد نیز در دیسکورد حضور فعال داشتند (ما حتی گاها با rbrown و سایر اعضای بورد گیم میزدیم!) اما کم‌کم فعالیت مدیران و ناظران کم شد. تا جایی که از بین 8-9 نفر مدیر و ناظر، فقط یک نفر مدیر فعالیت مستمر داشت و بقیه نیز AFK بودند! این مساله صدای بسیاری از کاربران رو در اورده بود و حتی چند نفر به دلیل AFK بودن مدیران و ناظران، به نشانه‌ی اعتراض کلا گروه رو ترک کردند. شما وقتی وارد گروه دیسکورد openSUSE میشید با این ساختار مواجه میشید: -  ۱ مدیر آنلاین/ ۱ مدیر همیشه AFK و یک مدیر آفلاین که اگر هم در ماه چند دقیقه آنلاین بشه، پیغام نمیده. مجموعا ۱ نفر آنلاین از ۳ نفر مدیر -  ۶ ناظر که حداکثر ۴ ناظر همزمان با هم AFK هستند. هرگز اونا رو آنلاین نمیبینید (البته هرگز اونا رو آنلاین نمیبینید دروغ واضحی هستش!) -  گروه Member ها که اعضای تایید شده‌ی openSUSE هستند. این افراد هم جز ۳ نفر (منم که گروه رو ترک کردم شدند ۲ نفر) بقیه فعالیت نمیکنند. به عنوان مثال شاید ۹ نفر از حدود ۲۰ نفر ممبر، AFK باشند، یک نفر دائم Busy هستش،‌ بقیه آفلاین. از این ۲۰ نفر هم ۵ نفر یا بیشتر کاربر فدورا هستند.  وقتی شما چنین لیستی رو میبینید، حس می‌کنید وارد گروه مردگان شدید و انگیزتون رو برای فعالیت از دست میدید. در واقع من جزو انگشت‌شمار کاربران فعال دیسکورد گروه openSUSE بودم، که سعی داشتند منو همچنان نگه دارند. اما من به تنهایی نمیتونم به جای هزاران کاربر فعالیت داشته باشم و مهمتر از اون، ضعف مدیریتی رو پوشش بدم. بعضا حتی با مدیران لج کرده بودند و در حالی که در سایر گروه‌ها فعالیت می‌کردند. اصلا فعالیتی در گروه openSUSE نداشتند و ناراحتی خودشون رو از دست مدیران اعلام کرده بودند. قطعا در توانایی بنده نبود که این مسائل رو پوشش بدم. از اون طرف مهم‌ترین مساله‌ای که باعث شده بود من همچنان به openSUSE وابسته باشم، همون جامعه‌ی کاربری و افراد دوست داشتی باقیمانده از اون گروه بود.به هر حال ۲ روز پیش بلاخره تصمیم بسیار سخت زندگی خودم رو گرفتم. تصمیم گرفتم از جامعه‌ی کاربری openSUSE جدا بشم، تا شاید به خودشون بیان و فکری به حال وضعیت دیسکورد openSUSE بکنن. البته سایرین از این مساله خوشحال نبودند و حتی دو نفر در پیغام خصوصی به بنده گفتند که &quot;تنها کاربر فعال گروه نیز (یعنی من) از گروه جدا شد.&quot; من هم براشون توضیح دادم که دلیل فعالیت کم کاربران چی هستش. اما صرفا نگاه کردن به محیط دسک‌تاپ دوست‌داشتنی openSUSE منو تحریک میکرد که مجدد به گروه برگردم... در واقع همه چیز در دسک‌تاپ من به شدت درست کار میکرد و مشکلی نداشتم، و همین نداشتن مشکل باعث شد که به فدورا سویچ کنم! در واقع ایده‌ی من این بود که با حذف openSUSE و بر خوردن به مشکلات و چالش‌های جدید، سعی کنم در جامعه‌ی کاربری جدیدی فعالیت کنم، سوالات خودم رو بپرسم، و دوستان جدیدی پیدا کنم، و در نهایت جامعه‌ی کاربری قبلی رو فراموش کنم.ادامه در نوشته‌ی بعدی...</description>
                <category>h_r 71</category>
                <author>h_r 71</author>
                <pubDate>Thu, 22 Oct 2020 15:04:13 +0330</pubDate>
            </item>
            </channel>
</rss>