<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های عباس غفاری</title>
        <link>https://virgool.io/feed/@abbas_509</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 07:11:28</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1911736/avatar/xQHJml.png?height=120&amp;width=120</url>
            <title>عباس غفاری</title>
            <link>https://virgool.io/@abbas_509</link>
        </image>

                    <item>
                <title>نمونه‌برداری کاهشی (Downsampling ) و افزایشی (Upsampling) بر روی تصاویر</title>
                <link>https://virgool.io/@abbas_509/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B1%DB%8C-%DA%A9%D8%A7%D9%87%D8%B4%DB%8C-downsampling-%D9%88-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4%DB%8C-upsampling-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-oijwgq65x9fl</link>
                <description>پیشینهیک کامپیوتر چیزها را در قالب عددی بهتر می‌فهمد،‌ انجام محاسبات ریاضی، کار با چندرسانه، متن‌ها یا سیگنال‌ها همگی در کامپیوتر بصورت اعداد نشان داده می‌شوند. موضوع بحث در اینجا تغییر اندازه تصاویر است.به این فکر کنید که تصاویر چگونه در کامیوتر ذخیره‌سازی می‌شوند! یک تصویر به عناصر کوچکتر بنام پیکسل شکسته می‌شود، هر پیکسل بیانگر یک رنگ است، بنابرین، یک تصویر با رزولیشن (گسست) 1024 در 798 پیکسل 1024x798=817,152 پیکسل دارد. به این معنی ماتریسی از نقاط رنگی وجود دارد.نمونه‌برداری کاهشی (Downsampling)با خواندن نام این تکنیک به طور شهودی این ایده شکل می‌گیرد که به کاهش مقیاس تصویر مربوط است،‌ و خب این ایده درست است، بدلایل مختلفی می‌بایست مقیاس تصویر را کاهش دهیم:باعث می‌شود داده‌ها اندازه قابل مدیریتی بیشتری داشته باشندابعاد داده‌ها کاهش می‌یابد به همین دلیل پردازش سریعتر داده‌ها ممکن می‌شود (برای تصاویر)حجم ذخیره سازی داده‌ها کاهش می‌یابد.همچنین بسته به استفاده می‌توان کابردهای دیگری نیز برای این تکنیک بیان کرد. گاهی اوقات این تکنیک با فشرده‌سازی تصویر به اشتباه گرفته می‌شود که چیز متفاوتی است و کاربرد دیگری دارد. در اینجا ما فقط به کوچک شدن تصویر می‌پردازیم. خب این یعنی چه؟ اساس به معنای دور ریختن برخی از اطلاعات (غیر ضروری) است. پس به این نکته میرسیم که برخی از سطرها و/یا ستون‌ها را در تصویر نادیده بگیریم. ما باید برخی اطلاعات را تبدیل کنیم.الگوریتم‌های زیادی برای نمونه‌گیری کاهشی (downsampling) وجود دارند که از تکنیک‌های گوناگون استفاده می‌کنند:MipmapBox SamplingSincنمونه‌برداری افزایشی (Upsampling)در سمت دیگر نمونه‌گیری افزایشی چیزی نیست جر معکوس نمونه گیری کاهشی: افزایش تعداد سطرها  و/یا ستون‌های (ابعاد) یک تصویر.  این کار می‌تواند در چندین مورد استفاده شود برای مثال در شبکه‌های GAN (مولد-ممیز) استفاده شود که در آن هدف ساختن یک تصویر از بردار نمونه تصادفی با تقلید از توزیع تصاویر واقعی است. موارد دیگری همچون بهبود کیفیت یک تصویر هم وجود دارد. بگذارید کمی در این خصوص وارد جزئیات شویم.در هنگام نمونه‌برداری کاهشی کاری که می‌خواستیم انجام بدهیم نسبتا ساده و آشکار بود، اما در نمونه برداری افزیشی به این سادگی نیست. باید به نحوی ابعاد تصویر را افزایش دهیم و شکاف بین ستون‌ها و سطرها را پر کنیم.فرض کنید می‌خواهیم تصویر اصلی را با ضریب 3 نمونه‌گیری افزایشی دهیم (ابعاد تصویر را سه برابر کنیم) به این معنی باید ۲ سطر و ستون دیگر به ازای هر سطر و ستون با یک منطق یکسان به تصویر بیافزاییم. یکی از روش‌ها این است که صرفا هر سطر و ستون تصویر اصلی را تکرار کنیم.اگر بخواهیم این کار را به این روش انجام بدهیم، همانطور که در شکل بالا ملاحظه می‌کنید، تصویر اصلی و تصویر حاصل اگر یکسان نباشند، کاملا شبیه به یکدیگر هستند. برای درک موضوع، شما در تصویر حاصل هیچ داده جدیدی ایجاد نکرده‌اید. از آنجایی که تکرار سطرها و ستون‌‌ها کاملا زاید هستند، این روش بی‌فاید است و هیچ اطلاعات جدیدی ارائه نمی‌دهد.یک رویکرد معقول برای افزودن ستون‌های جدید، درون‌یابی داده‌های جدید بین سطرها و ستون‌ها خواهد بود، اینکار با استفاده از عملیات ریاضی پیشرفته انجام می‌شود و موجب ارائه یک مقدار واسط قابل قبول و دقیق می‌شود.برخی از این الگوریتم عبارتند از:Nearest Neighbour InterpolationBilinear InterpolationBicubic Spline InterpolationGeneralized Bicubic Interpolation </description>
                <category>عباس غفاری</category>
                <author>عباس غفاری</author>
                <pubDate>Sat, 06 Jul 2024 15:56:56 +0330</pubDate>
            </item>
                    <item>
                <title>شروع شبکه‌های GAN با استفاده از PyTorch</title>
                <link>https://virgool.io/@abbas_509/%D8%B4%D8%B1%D9%88%D8%B9-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-gan-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-pytorch-ifwppwsdzhwf</link>
                <description>در این مقاله ما توانایی شبکه GAN در تولید تصاویر جدید را خواهیم دید، در نگاه نخست این موضوع کمی جادویی به نظر می‌رسد.مقدمهیک شبکه مولد-ممیز (GAN) یک دسته از چارچوب‌های یادگیری ماشین هستند که در سال 2014 توسط آقای Ian Goodfellow و همکارانش طراحی شد. دو شبکه عصبی ( مولد و ممیز) مانند یک بازی با یکدیگر رقابت می‌کنند. در این تکنیک تولید داده جدید با استفاده از آمارهای یکسان انطور که در مجموعه آموزشی است،‌ یادگرفته می‌شود.در این پست، ما یک شبکه GAN را برای ایجاد تصاویر از صورت گربه‌ها آموزش می‌دهیم. ما از یک دیتاست تصاویر گربه‌ها استفاده خواهیم کرد که از بیش از 15700 تصویر گربه تشکیل شده است. از آنجایی که مدل‌سازی مولد یک روش یادگیری بدون نظارت است، به همین دلیل هیچگونه برچسبی بر روی تصاویر وجود ندارد. تصایر اصلی برای دیتاستدر گام نخست ما تمام کتابخانه‌های ضروری را وارد برنامه می‌کنیم.دیتاست برنامه شامل بیش از 15700 فایل تصویری با فرمت JPG است که درون پوشه cats قرار دارند. مکان پوشه این دیتاست را در متغیر DATA_DIR قرار می‌دهیم.حال دیتاست را با استفاده از کلاس ImageFolder از کتابخانه torchvision بارگذاری می کنیم. می توانیم اندازه تصاویر را به مقدار 64x64 پیکسل تغییر بدهیم و  مقادیر پیکسل‌ها را به میانگین و انحراف معیار 0.5  نرمالسازی کنیم  این کار به ما این اطمینان را می‌دهد که مقادیر پیکسل ها همواره بین 1 و 1- باقی بمانند که برای یادگیری discriminator راحتر است. همینطور ما برای بارگذاری داده ها درون batchها (بسته‌ها) از یک data loader  استفاده می‌کنیم.حال شبکه‌های عصبی Discriminator  و Generator  را می‌سازیم. Generator تصاویر را تولید می‌کند و Discriminator تشخیص می‌دهد که آیا تصویر داده دریافت شده واقعی است و یا جعلی است. هر دو آنها با هم رقابت خواهند کرد و هر دو در کار خود بهتر خواهند شد!شبکه عصبی مولد-ممیز GANمولد (Generator)ورودی مولد یک بردار یا ماتریس از اعداد تصادفی است که بعنوان خوراک برای تولید تصویر استفاده می‌شود. مولد می‌تواند یک شکل تانسور (128,1,1) را به یک تانسور تصویر (3,28,28) تبدیل کند.در اینجا برای مولد از تابع ConvTranspose2d بجای Conv2d استفاده شده است، از تابع ConvTranspose2d  معمولا برای گسترش یک تانسور به یک تانسور بزرگتر استفاده می‌شود. این کار برعکس یک لایه کانولوشنی عادی است که برای کاهش یک تانسور به تانسور کوچکتر استفاده می‌شود. تصویر زیر مولد را بصورت بصری نمایش می‌دهد.مولد (Generator)ممیز (Discriminator)ممیز یک تصویر را به عنوان ورودی خود می‌گیرد و سعی می‌کند آنرا با برچسب &quot;واقعی&quot;  یا &quot;ساختگی&quot; دسته‌بندی کند. در اینجا ممیز یک ورودی را به شکل تانسور (3x64x64) می‌گیرد و آنرا به یک تانسور (1x1x1) تبدیل می‌کند.نکته‌ای دیگر استفاده از تابع nn.Flatten است، این تابع روش داخلی pytorch برای مسطح سازی تانسورهاست. تصویر زیر ممیز را بصورت بصری نمایش می‌دهد.ممیز (Discriminator)تابع زیر پس از هر دور فراخوانی می‌شود تا تصویر تولید شده را ذخیر کند.آموزش (Training)گام بعدی ایجاد یک تابع آموزشی برای ممیز و مولد است. برای آموزش هر دو شبکه از تابع آموزش استفاده خواهد شد.تابع آموزش زیر برای ممیز است.تابع آموزش زیر برای مولد است.حال ما یک تابع آموزش می‌سازیم که ممیز و مولد را آموزش می‌دهد.اکنون آماده آموزش مدل هستیم، مقادیر نرخ یادگیری و تعداد دوره تکرار را مشخص می‌کنیم: lr=0.0002  ,  epoch=60نتایجپس از آموزش مدل برای 60 دور، می‌توانیم تصاویر تولید شده را مشاهده کنیم.همانطور که می بینیم تصاویر تولید شده از مدل، مشابه تصاویر واقعی هستند.کد کامل را می‌توانید در آدرس زیر بیابید:https://github.com/shubham7169/Projects/blob/master/CAT-dcgan.ipynb</description>
                <category>عباس غفاری</category>
                <author>عباس غفاری</author>
                <pubDate>Wed, 03 Jul 2024 11:24:44 +0330</pubDate>
            </item>
            </channel>
</rss>