تطابق جریان در پایتورچ
این مخزن شامل یک پیادهسازی ساده از مقاله تطابق جریان برای مدلسازی مولد با استفاده از پایتورچ است.
مثال تطابق جریان دوبعدی
تصویر متحرک زیر نگاشت یک توزیع گاوسی منفرد به یک توزیع شطرنجی را نشان میدهد که میدان بردار به صورت تصویری نمایش داده شده است.
و این یک مثال دیگر از دیتاست moons است.
شروع به کار
مخزن را کلون کنید و محیط پایتون را راهاندازی کنید.
git clone https://github.com/keishihara/flow-matching.git
cd flow-matchingاطمینان حاصل کنید که Python 3.12+ نصب شده باشد.
uv را نصب کنید:
curl -LsSf https://astral.sh/uv/install.sh | sh
سپس، محیط را راهاندازی کنید:uv syncتطبیق جریان شرطی [Lipman+ 2023]
این پیادهسازی اصلی مقاله CFM است [1]. برخی اجزای کد از [2] و [3] اقتباس شدهاند.
دادهستهای مصنوعی دو بعدی
میتوانید مدلهای CFM را روی دادهستهای مصنوعی دو بعدی مانند checkerboard و moons آموزش دهید. نام دادهست را با گزینه --dataset مشخص کنید. پارامترهای آموزش از پیش در اسکریپت تعیین شدهاند و تصویرسازی نتایج آموزش در پوشه outputs/ ذخیره میشود. نقاط بازیابی مدل (checkpoints) گنجانده نشدهاند چرا که با تنظیمات پیشفرض به راحتی قابل بازتولید هستند.
uv run scripts/train_flow_matching_2d.py --dataset checkerboardبردارهای میدان و نمونههای تولیدشده، مانند آنهایی که به صورت GIF در بالای این README نمایش داده شدهاند، اکنون در مسیر outputs/cfm/ قابل دسترسی هستند.
دیتاستهای تصویری
شما همچنین میتوانید مدلهای CFM شرطی بر کلاس را بر روی دیتاستهای محبوب طبقهبندی تصویر آموزش دهید. هم نمونههای تولیدشده و هم نقاط بررسی مدل در مسیر outputs/cfm ذخیره خواهند شد. برای مشاهده فهرست دقیقی از پارامترهای آموزش، دستور uv run scripts/train_flow_matching_on_image.py --help را اجرا کنید.
برای آموزش یک CFM شرطی بر کلاس روی دیتاست MNIST، دستور زیر را اجرا کنید:
uv run scripts/train_flow_matching_on_image.py --do_train --dataset mnist
پس از آموزش، اکنون میتوانید نمونهها را با استفاده از موارد زیر تولید کنید:uv run scripts/train_flow_matching_on_image.py --do_sample --dataset mnist
اکنون باید بتوانید نمونههای تولید شده را در مسیر outputs/cfm/mnist/ مشاهده کنید.
جریان تصحیحشده [Liu+ 2023]
این یک پیادهسازی از مدل Reflow (به طور خاص 2-Rectified Flow) از مقاله جریان تصحیحشده [2] است.
دادههای مصنوعی دوبعدی
ما Reflow را بر روی مجموعه دادههای مصنوعی دوبعدی پیادهسازی کردهایم، همانند CFM. برای آموزش reflow، باید نقاط بازیابیشده CFM را مشخص کنید، چرا که reflow یک مدل تقطیری است.
برای مثال، برای آموزش روی مجموعه داده checkerboard با یک نقطه بازیابیشده CFM:
uv run scripts/train_reflow_2d.py --dataset checkerboard
نتایج آموزش، شامل تصویریسازی میدان برداری و نمونههای تولید شده، در پوشه outputs/reflow/ ذخیره میشوند.مقایسه فرآیند نمونهگیری بین CFM و Reflow
برای مقایسه CFM و Reflow روی دادههای دوبعدی، اجرا کنید:
uv run scripts/plot_comparison_2d.py --dataset checkerboardتصاویر GIF حاصل را میتوانید در پوشهی outputs/comparisons/ پیدا کنید. در زیر یک نمونه مقایسه از دو روش در مجموعه دادهی checkerboard آمده است:
منابع
- [1] لیپمن، یارون و همکاران. "تطابق جریان برای مدلسازی مولد." arXiv:2210.02747
- [2] لیو، زینگچائو و همکاران. "جریان مستقیم و سریع: یادگیری تولید و انتقال داده با جریان اصلاحشده." arXiv:2209.03003
- [3] facebookresearch/flow_matching
- [4] atong01/conditional-flow-matching