{"id":31756647,"url":"https://github.com/ahmz1833/ai-project","last_synced_at":"2026-05-17T00:08:29.954Z","repository":{"id":314700971,"uuid":"1056305272","full_name":"ahmz1833/AI-Project","owner":"ahmz1833","description":"AI Course Project 14032 - Dr. TanGhatari","archived":false,"fork":false,"pushed_at":"2025-09-14T06:52:29.000Z","size":3959,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-14T08:29:37.648Z","etag":null,"topics":["attention-mechanism","pytorch","q-learning","reinforcement-learning","sac","skip-connections","softmax","unet-image-segmentation"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahmz1833.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T20:04:26.000Z","updated_at":"2025-09-14T06:52:32.000Z","dependencies_parsed_at":"2025-09-14T08:29:39.538Z","dependency_job_id":"695edcb1-6109-4a61-bcbb-88547e71b60c","html_url":"https://github.com/ahmz1833/AI-Project","commit_stats":null,"previous_names":["ahmz1833/ai-project"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ahmz1833/AI-Project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmz1833%2FAI-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmz1833%2FAI-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmz1833%2FAI-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmz1833%2FAI-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahmz1833","download_url":"https://codeload.github.com/ahmz1833/AI-Project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmz1833%2FAI-Project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001981,"owners_count":26083243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attention-mechanism","pytorch","q-learning","reinforcement-learning","sac","skip-connections","softmax","unet-image-segmentation"],"created_at":"2025-10-09T19:19:35.751Z","updated_at":"2025-10-09T19:19:45.631Z","avatar_url":"https://github.com/ahmz1833.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# پروژه درس هوش مصنوعی\n\nاین مخزن برای پروژه درس هوش مصنوعی ساخته شده است که شامل دو زیر مخزن فاز یک (سگمنت‌کردن تصاویر هوایی و ساخت Mask جاده‌ها) و فاز دو (یادگیری تقویتی با الگوریتم Soft Actor Critic و راه‌رفتن یک سگ) می‌باشد.\n\n## اطلاعات پروژه\n\n### اعضای گروه\n\n- [امیرمهدی طهماسبی](https://github.com/ta-tahmasebi) (۴۰۲۱۰۶۱۷۸)\n- [امیرحسین محمدزاده](https://github.com/ahmz1833) (۴۰۲۱۰۶۴۳۴)\n- [محمدنوید آتشین‌بار](https://github.com/NavidATB) (۴۰۲۱۰۵۵۸۱)\n\n### ترم تحصیلی و مدرس\n\nاین پروژه برای ترم تحصیلی بهار ۱۴۰۴ (۱۴۰۳۲) و در تابستان ۱۴۰۴ انجام شده است.\n\n#### **مدرس: دکتر تن‌قطاری**\n\n## فاز اول پروژه\n\n### هدف\n\nدر این فاز، هدف بخش‌بندی معنایی (Semantic Segmentation) تصاویر هوایی برای استخراج ماسک دقیق جاده‌ها بود. این کار یکی از مسائل اساسی در زمینه پردازش تصاویر ماهواره‌ای و سیستم‌های نقشه‌برداری خودکار است. برای این منظور، از معماری قدرتمند **UNet** استفاده کردیم.\n\n| نمونه خروجی‌های مدل | |\n| :---: | :---: |\n| \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/loss_plot.png\" width=\"100%\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/i5.png\" width=\"100%\"/\u003e |\n| \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/i1.png\" width=\"100%\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/i2.png\" width=\"100%\"/\u003e |\n| \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/i3.png\" width=\"100%\"/\u003e | \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/RoadNet/refs/heads/main/images/i4.png\" width=\"100%\"/\u003e |\n\n\n### رویکرد\n\nسه نسخه مختلف از این معماری پیاده‌سازی و نتایج آن‌ها با یکدیگر مقایسه شد:\n\n\u003cdiv dir=\"rtl\"\u003e\n\u003col dir=\"rtl\"\u003e\n  \u003cli\u003e\n    \u003cb\u003eUNet معمولی (Vanilla UNet):\u003c/b\u003e پیاده‌سازی پایه‌ی معماری UNet.\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eAttention UNet:\u003c/b\u003e افزودن مکانیزم توجه (Attention Gates) برای تمرکز شبکه روی نواحی مهم‌تر تصویر.\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eResidual UNet:\u003c/b\u003e در این نسخه، بلوک‌های کانولوشنی استاندارد با \u003cb\u003eبلوک‌های باقی‌مانده (Residual Blocks)\u003c/b\u003e جایگزین شدند؛ که شامل Skip Connection هستند. این کار به بهبود جریان گرادیان در طول شبکه کمک کرده و امکان آموزش مدل‌های عمیق‌تر بدون مشکل محو شدگی گرادیان (Vanishing Gradient) را فراهم می‌کند.\n  \u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n\n### ویدئوی ارائه\n\nدر ویدیوی زیر، توضیحات کلی معماری UNet، تابع زیان استفاده شده، کاربردهای دیگر آن و نقش Skip-Connection ها به طور کامل توضیح داده شده و کد پروژه مرور می‌شود:\n\n[لینک به گوگل درایو](https://drive.google.com/drive/folders/1O-__YnY3zfOrR-QeRyhTsEkUzPzxL8RA?usp=sharing)\n\n## فاز دوم پروژه\n\n### هدف\n\nفاز دوم پروژه به یادگیری تقویتی (Reinforcement Learning) اختصاص دارد. در این فاز، الگوریتم **Soft Actor-Critic (SAC)** برای آموزش راه رفتن به یک ایجنت **HalfCheetah** در محیط شبیه‌سازی شده `Gymnasium` با موتور فیزیک `MuJoCo` به کار گرفته شد.\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/SAC-RL/refs/heads/main/images/3.png\" alt=\"Learn\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/SAC-RL/refs/heads/main/images/1.png\" alt=\"Score\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/ta-tahmasebi/SAC-RL/refs/heads/main/images/2.png\" alt=\"Score\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/85caa14a-83f8-47e9-b707-d59fff0da897\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/61f68d6d-ee64-4026-9fcf-f4ea1a711224\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/2f9e1a6e-e378-488b-91ed-e87c68370ae2\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/18e72682-ea92-4fbe-a492-1074723e9436\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/4b0875d2-6b8c-44b8-99d1-0657f1d5f086\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\"\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/0ab9726b-de3a-4879-8417-f89a6c8e176a\" width=\"100%\" controls\u003e\u003c/video\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### رویکرد\n\nالگوریتم SAC به عنوان یک الگوریتم **Off-Policy** و مبتنی بر **Maximum Entropy**، برای وظایف کنترلی با فضای عمل پیوسته (Continuous Action Space) بسیار مناسب است. هدف ایجنت، یادگیری سیاستی (Policy) است که هم پاداش تجمعی را ماکزیمم کند و هم انتروپی (تصادفی بودن) رفتار خود را، که منجر به کاوش بهتر و پایداری بیشتر می‌شود.\n\n**معماری شبکه‌ها:**\n\n\u003cdiv dir=\"rtl\"\u003e\n\u003cul dir=\"rtl\"\u003e\n  \u003cli\u003e\n    \u003cb\u003eActor (Policy Network):\u003c/b\u003e یک شبکه عصبی پیشخور (MLP) که وضعیت (State) را به عنوان ورودی دریافت کرده و پارامترهای یک توزیع گوسی (میانگین و انحراف معیار) را برای فضای عمل خروجی می‌دهد.\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eCritic (Q-Networks):\u003c/b\u003e از تکنیک \u003cb\u003eClipped Double Q-Learning\u003c/b\u003e با دو شبکه Q مجزا برای کاهش بیش‌تخمینی (Overestimation) مقادیر Q استفاده شد. هر دو شبکه نیز MLP هستند.\n  \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\n\n**فرآیند آموزش:**\n\n\u003cdiv dir=\"rtl\"\u003e\n\u003cul dir=\"rtl\"\u003e\n  \u003cli\u003e\n    \u003cb\u003eReplay Buffer:\u003c/b\u003e تجربیات ایجنت در یک حافظه ذخیره شده و در هر مرحله از آموزش، یک بچ (Batch) تصادفی از آن برای به‌روزرسانی شبکه‌ها نمونه‌گیری می‌شود.\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eبه‌روزرسانی پارامترها:\u003c/b\u003e شبکه‌های Actor، Critic و پارامتر دمای انتروپی (α) به صورت متناوب با استفاده از بهینه‌ساز Adam آپدیت می‌شوند.\n  \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\n\n### ویدئوی ارائه\n\nدر این ویدیو، الگوریتم SAC، نقش انتروپی در تابع هدف، مفهوم اپراتور بلمن soft و جزئیات پیاده‌سازی پالیسی و توابع Q به طور کامل شرح داده شده است.\n\n[لینک به گوگل درایو](https://drive.google.com/drive/folders/1YTZiOaZV2pDgBDafB7sCj0g5Lixa63-a?usp=sharing)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmz1833%2Fai-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmz1833%2Fai-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmz1833%2Fai-project/lists"}