# این مقاله با بررسی عمیق معماریهای ترنسفورمر و کاربردهای آنها فراتر از متن، به قدرت تحولآفرین ترنسفورمرها در حوزه تولید و پردازش عکس و ویدئو میپردازد.
مورفئوس: "آیا تا به حال خوابی دیدهای، نئو، که مطمئن بودی واقعی است؟ اگر نتوانی از آن خواب بیدار شوی چه؟ چگونه تفاوت بین دنیای خواب و دنیای واقعی را تشخیص میدهی؟"
فیلم ماتریکس 1991
قطعا یکی از موضوعات مهمی که مخصوصا در حال حاظر ذهن ها را به خود مشغول کرده و روز به روز در حال پویایی و بهبود است موضوع تولید عکس و فیلم و Text با هوش مصنوعی است. LLM ها نشان دادند برای تولید متن چقدر می توانند عالی عمل کنند. بسیاری از مشکلات آن ها برای تولید متن حل شده اند. مشکل بزرگ LLM ها این است که گاهی در پاسخ هایی که ارائه می دهند دچار توهم می شوند. البته با ظهور مدل های جدید مثل LLM های چند وجهی این مشکلات کم و بیش در حال بهبود هستند. در زمان نوشتن این مقاله مدل جدید GPT-4o معرفی شد که من را بسیار شگفت زده کرد. قطعا OpenAI در حال تغییر بازی است. همچنین مدل قدرتمند Google یعنی Gemini 1.5 Pro هم بسیاری از تصورات ما را تغییر داد. در نتیجه می توانیم ببینیم که مدل ها در حال بهبود هستند. در واقع چرخ اختراع شده است و حال باید برای بهبود آن تلاش کرد. LLM ها اولین بار برای ترجمه توسعه پیدا کردند حال می بینیم که انواع تسک ها را انجام می دهد و بازی به سوی مدل های چند وجهی چرخیده است. همه اینها با معماری بسیار قوی و مهم Transformer ها میسر شده است. در مقاله قبلی من با عنوان “Transformer Is All You Need ” معماری Transformer ها را برای Text به صورت کامل و عمیق بررسی کردیم. یکی دیگر از تسک هایی که Transformer می توانند انجام دهند تولید عکس است که در محصولاتی مثل DALL-E و میدجرنی یا ideogram می توانیم ببینیم. این مدل ها از ما Prampt به صورت Text می گیرند و تصویر تولید می کنند. در مدل LlaMa 3 که اخیرا منتشر شد. مدل در حال نوشتن Prampt تصویر را تولید می کند و با تغییر نوشته های ما تصویر تغییر می کند. اما شگفت انگیز تر از اینها تولید ویدئو با Text است. چند ماه پیش کمپانی OpenAI محصولی به نام Sora را معرفی کرد. بسیار خیره کننده و مبهوت کنند است. تولید تصویر با کیفیت بالا و بسیار طبیعی. تولید جهان های دیگر. با دیدن آن اولین چیزی که در ذهن من تداعی شد فیلم ماتریکس بود. در این مقاله می خواهیم از آغاز نگاهی به ایده تولید تصویر و سپس ویدئو با Text بیاندازیم و سیر تکامل آن را ببینیم. تولید عکس را بفهمیمیم و بعد تولید ویدئو و بفهمیم که از چه معماری برای آن استفاده می شود . آیا باز هم رد پای Transformer ها را پیدا می کنیم؟ بیاید با هم سطح را خراش دهیم با من همراه باشید.
تولید اولین فیلم های تاریخ به سالهای 1880 باز می گردد. اولین فیلم های تاریخ که همه را شگفت زده می کرد. قطعا کسی تصورش را هم نمی کرد که در آینده به صنعتی بسیار قوی و همه گیر تبدیل شود. وقتی به تاریخچه هوش مصنوعی نگاه می کنیم برای یافتن ایده تولید فیلم با هوش مصنوعی باید به اوایل قرن بیستم سفر کنیم.
با ظهور کامپیوترها، ایده تولید فیلم با هوش مصنوعی جان تازهای گرفت. John Whitney، پیشگام انیمیشن کامپیوتری، در سال 1960، Motion Graphics Incorporated را تأسیس کرد که از رایانه آنالوگ مکانیکی اختراع خود برای ایجاد سکانسهای فیلم و عنوان تلویزیونی و تبلیغات استفاده میکرد. سال بعد، او رکوردی از جلوه های بصری که با استفاده از دستگاه خود به کمال رسانده بود، به نام کاتالوگ جمع آوری کرد. در سال 1966، IBM به John Whitney پدر اولین موقعیت هنرمند خود را اعطا کرد. بعد از آن در طول سالهای بعد مقالاتی برای تولید فیلم یا انیمیشن با کامپیوتر منتشر شد. استفاده از هوش مصنوعی در تولید فیلم و هنرهای نمایشی، به ویژه به شکلی که امروز وجود دارد، عمدتاً محصول پیشرفتهای اخیر در دهههای 2000 و 2010 است. این فناوریها شامل استفاده از الگوریتمهای یادگیری عمیق، شبکههای عصبی مولد (GAN)، و دیگر تکنیکهای پیشرفته هوش مصنوعی برای ایجاد و ویرایش تصاویر، ویدیوها و سایر محتوای دیجیتال هستند. در قسمت بعد می خواهیم راجع به تولید عکس با معماری Transformer ها یاد بگیریم و ببینیم که چطور کار میکند و آیا واقعا امکان پذیر است ؟
شبکههای عصبی مولد خصمانه (GANs) قبل از معرفی Transformer ها برای پردازش تصویر و سایر وظایف مطرح شدند. GANها توسط Ian Goodfellow و همکارانش در سال 2014 در مقاله ای با همین نام معرفی شدند.
ایده اولیه GAN که قبل از Transformer ها معرفی شدند شامل دو شبکه عصبی عمیق بود که با یکدیگر در یک بازی با مجموع صفر رقابت میکردند. اولی Generator است که سعی میکند نمونههای مصنوعی تولید کند و دومی Discriminator که سعی میکند نمونههای واقعی را از مصنوعی تشخیص دهد. در واقع هدف Generator تولید نمونههایی است که Discriminator را فریب دهد تا نتواند تفاوت بین نمونههای واقعی و مصنوعی را تشخیص دهد. ترکیب Transformerها با GANها (TransGAN) نشان میدهد که Transformer ها میتوانند به عنوان Generator و Discriminator در GANها استفاده شوند. این مدلها از مزایای Transformer ها در مدلسازی ویژگیهای پیچیده دادهها بهرهمند میشوند. این معماری در مقاله ای با همین نام در سال 2021 توسط Yifan Jiang, Shiyu Chang, Zhangyang Wang ارائه شد.
شبکه TransGAN مخفف Transformer Generative Adversarial Networks است. این مدل یک نوع شبکه عصبی GAN است که از معماری Transformer برای Generator و Discriminator استفاده میکند.
شبکه TransGAN از یک ساختار Transformer بدون استفاده از CNN برای هر دو بخش Generator و Discriminator استفاده میکند. در یک TransGAN، Generator از معماری Transformer استفاده میکند تا توالیهایی از دادهها را تولید کند. Generator با یک ورودی نویز تصادفی شروع میکند. این ورودی معمولاً یک بردار با مقادیر تصادفی از یک توزیع گاوسی (نرمال) است. این ورودی نویز به یک فضای ویژگی با ابعاد بالاتر تبدیل میشود. این مرحله شامل چندین لایه Feed-Forward و MHA است. مولد Transformer ، توالیهای دادهای را مرحله به مرحله تولید میکند. در هر مرحله، Generator قسمتی از داده (مثلاً یک پیکسل از تصویر) را تولید میکند و سپس از این خروجی به عنوان ورودی برای تولید مرحله بعدی استفاده میکند. مکانیزم attention به Generator کمک میکند تا وابستگیهای طولانیمدت و پیچیدگیهای موجود در دادهها را مدل کند. پس از تولید کامل توالی دادهها، این توالیها به یک نمونه کامل تبدیل میشوند (مثلاً یک تصویر کامل). این تبدیل شامل بازسازی ویژگیهای پیچیده و جزئیات نهایی است.
متمایز کننده (Discriminator) در TransGAN واقعی یا مصنوعی بودن نمونههای تولید شده توسط Generator را تشخیص می دهد و از معماری Transformer استفاده میکند تا توالی داده های تولید شده را تحلیل کند. در وحله اول Discriminator ، نمونههایی که میتوانند تصاویر واقعی یا مصنوعی باشند را دریافت میکند. این نمونهها به صورت توالیهایی از پچهای تصویری (Patch Sequences) به مدل وارد میشوند. هر Patch میتواند یک بخش کوچک از تصویر (مثلاً یک بلوک 16x16 پیکسلی) باشد. هر Patch تصویری ابتدا به یک نمایش برداری تبدیل میشود. این نمایش برداری معمولاً از طریق یک Embedding Layer به دست میآید که هر Patch را به یک بردار با ابعاد مشخص تبدیل میکند. این بردارها سپس با Position Embeddings ترکیب میشوند تا اطلاعات مکانی هر Patch حفظ شود. توالی Patch های رمزگذاری شده به چندین لایه MHA وارد میشود. این لایهها به Discriminator اجازه میدهند تا وابستگیهای بلندمدت و ارتباطات بین Patch های مختلف تصویر را مدل کند. MHA کمک میکند تا مدل بتواند به ویژگیهای مختلف تصویر به طور همزمان attention کند. خروجی لایههای attention وارد چندین لایه Feed-Forward میشود. این لایهها ویژگیهای ترکیبی را استخراج و پردازش میکنند و نمایی پیچیدهتر و غنیتر از تصویر به دست میآورند. خروجیهای نهایی از لایههای Feed-Forward به یک لایه تجمع (Aggregation Layer) وارد میشوند. این لایه تمامی ویژگیهای استخراج شده را به یک نمای کلی تبدیل میکند. سپس این نمای کلی به یک لایه نهایی (مانند یک لایه Dense) متصل میشود که تصمیم نهایی را در مورد واقعی یا مصنوعی بودن تصویر میگیرد.
استفاده از Transformer در GANها نتایج خوبی را نشان داده است. با این حال، کارایی TransGAN در مقایسه با روشهای دیگر ممکن است به وابستگی به منابع محاسباتی بیشتر و نیاز به دادههای آموزشی بزرگتر محدود شود. به عبارت دیگر، TransGAN ممکن است در محیط هایی که منابع محاسباتی کافی وجود دارد و دادههای آموزشی زیادی در دسترس است، کارایی بالایی داشته باشد.
مدل ViTGAN یک مدل یادگیری عمیق جدید برای تولید تصویر هست که توسط Kwonjoon Lee و همکارانش در سال 2022 در مقاله ای معرفی شد.
این مدل ترکیبی از مدلهای Transformer و شبکههای مولد مقابلهای (GANs) هست و میتونه تصاویر واقعی و باکیفیتی تولید کنه. مدل ViTGAN از یک مدل Transformer به عنوان Encoder استفاده میکنه. این مدل توالی توکنهای ورودی رو پردازش میکنه و یک بردار پنهان تولید میکنه که اطلاعات مربوط به محتوای تصویر رو در خودش ذخیره میکنه. ViTGAN از یک شبکه GAN استفاده می کند. Generator بردار پنهان رو به یک تصویر تبدیل میکنه، در حالی که Discriminator سعی میکنه تشخیص بده که تصویر واقعی هست یا جعلی. این دو شبکه به طور همزمان آموزش داده میشن تا Generator بتونه تصاویر واقعیتری تولید کنه و Discriminator بتونه تصاویر جعلی رو بهتر تشخیص بده. از جمله مزایای ViTGAN این هست که میتونه تصاویر باکیفیتی تولید کنه که با تصاویر واقعی قابل مقایسه هستن. همچنین برای تولید انواع مختلف تصاویر، از جمله تصاویر چهره، منظره و اشیا، استفاده بشه در نتیجه برای تولید تصاویر Deepfake مناسب هست. ViTGAN به کاربران اجازه میده تا تصاویر رو با تنظیم پارامترهای مختلف مدل، کنترل کنن.
البته هر مدلی معایبی هم داره اولین اونها پیچیدگی هست. ViTGAN یک مدل پیچیده هست که آموزش و استفاده از اون میتونه دشوار باشه و برای آموزش به حجم زیادی از داده نیاز داره. ViTGAN میتونه کند باشه، به خصوص زمانی که برای تولید تصاویر با وضوح بالا استفاده میشه. از جمله مهم ترین کاربردهای اون ایجاد محتوای بصری برای وبسایتها، شبکههای اجتماعی و سایر پلتفرمها استفاده بشه و همچنین بهبود کیفیت تصاویر موجود، مثل افزایش وضوح یا حذف نویز، استفاده بشه. برای ایجاد فرمتهای تصویری جدید، مثل تصاویر 360 درجه یا تصاویر تعاملی، هم میتونه استفاده بشه. ViTGAN یک مدل جدید برای تولید تصویر هست که میتونه نحوه تولید تصاویر رو به طور کامل تغییر بده. با این حال، قبل از اینکه به طور گسترده مورد استفاده قرار بگیره، باید برخی از چالشهای مربوط به پیچیدگی، نیاز به داده و سرعت رو حل کرد.
پیش از معرفی معماری Vision Transformer (ViT)، بسیاری از وظایف مرتبط با پردازش تصویر مانند پیدا کردن شیء در تصویر، توصیف تصویر، و تولید تصویر با استفاده از مدلهای مثل Convolutional Neural Networks(CNNs) یا و مدلهای مولد Generative Adversarial Networks(GAN) و VAEs (Variational Autoencoders) قابل پیاده سازی بود.
به طور مثال برای پیدا کردن شیء در تصویر از CNNs استفاده میشد. بعضی از معروف ترین های آنها YOLO (You Only Look Once) یک معماری CNN که به طور مستقیم بر روی کل تصویر به عنوان یک ورودی عمل میکند و اشیاء را به سرعت و با دقت بالا شناسایی میکند. و یا معماری بعدیR-CNN (Region-based Convolutional Neural Networks) و نسخههای بعدی آن مانند Fast R-CNN و Faster R-CNN این مدلها با شناسایی مناطق جالب در تصویر و سپس اعمال CNN برای تشخیص اشیاء در این مناطق، عملکرد خوبی در شناسایی شیء داشتند. برای image captioning، معمولاً از ترکیبی از CNN و RNN به این صورت که ابتدا از یک CNN برای استخراج ویژگیهای تصویر استفاده میشد. سپس این ویژگیها به یک شبکه RNN یا LSTM (Long Short-Term Memory) داده میشدند تا متن توصیفی تولید شود. برای تولید تصویر هم از مدلهای مولد مانند (GAN (Generative Adversarial Network ها که این مدل شامل دو شبکه (مولد و متمایزکننده) است که با هم رقابت میکنند. مولد تصاویر جدید تولید میکند و متمایزکننده سعی میکند تصاویر تولید شده را از تصاویر واقعی تمیز دهد. همچنین VAE (Variational Autoencoder) یک نوع دیگر از شبکههای مولد که برای تولید دادههای جدید با یادگیری توزیع دادههای ورودی استفاده میشود.
مدل های، ViTGAN و TransGAN هر دو از مفاهیم شبکههای GAN و معماری Transformer ها بهره میبرند. تفاوت های اصلی با هم دارند. در ViTGAN، از مدل Vision Transformer به عنوان بخش اصلی Generator استفاده میشود و ممکن است همچنان در Discriminator از CNNها استفاده کند. این معماری به دلیل استفاده از Self-Attention میتواند به طور موثر جزئیات تصویر را مدلسازی کند. هدف اصلی ViTGAN بهبود کیفیت تولید تصاویر با استفاده از مزایای Transformer ها در مدلسازی روابط بلندمدت بین پیکسلها است. در حالیکه TransGAN از ابتدا تا انتها بدون نیاز به CNNها و فقط از معماری Transformer ها استفاده میکند. این یک تفاوت کلیدی است زیرا اکثر مدلهای GAN به نوعی از CNN استفاده میکنند. در معماری TransGAN از بلاکهای Transformer در هر دو بخش Generator و Discriminator استفاده می شود. این مدل سعی دارد تا مشکلات مربوط به یادگیری و پایداری که معمولاً در GANها وجود دارد را با استفاده از Self-Attention در Transformer ها بهبود بخشد.
بعد از ارائه مقاله "Attention is All You Need"، که توسعه معماری Transformer را معرفی کرد، بسیاری از مقالات و تحقیقات در زمینه استفاده از این معماری برای تولید ویدئو و تصاویر ارائه شد. در سال 2018 Niki Parmar و دیگران ایده استفاده از معماری Transformer برای تولید تصاویر را در مقاله ای با عنوان "Image Transformer" ارائه کردند.
در معماری Transformer به جای استفاده از توالیهای خطی برای پردازش متن، از مکانیزم attention برای یادگیری روابط بین کلمات در یک جمله استفاده میکرد. مقاله "Image Transformer" نشان می دهد که میتوان از معماری Transformer برای تولید تصاویر نیز استفاده کرد. آنها این کار را با جایگزینی کلمات با پیکسلها و استفاده از مکانیزم attention برای یادگیری روابط بین پیکسلها در یک تصویر انجام دادند. این امر به Image Transformer اجازه میداد تا الگوهای موجود در تصاویر را درک کند و تصاویر جدیدی با سبک و محتوای مشابه تصاویر ورودی تولید کند. این مقاله الهامبخش تحقیقات زیادی در این زمینه شد و به توسعه روشهای جدید و پیشرفتهتر برای تولید تصاویر با هوش مصنوعی مانند GANs (Generative Adversarial Networks) و Diffusion Models کمک کرد.
معماری Image Transformer در مقایسه با روشهای قبلی تولید تصاویر، مزایای متعددی داشت از جمله اینکه کیفیت تصویر بالاتر و جزئیات بیشتر بود. همچنین به کاربران امکان میداد تا با استفاده از پارامترهای مختلف، کنترل بیشتری بر محتوای تصاویر تولیدی داشته باشند. از همه مهم تر از نظر محاسباتی کارآمدتر بود و میتوانست تصاویر را سریعتر تولید کند. کاربردهای Image Transformer را در حال حاضر در طیف گستردهای از تسک ها می بینیم. برای تولید تصاویر هنری، تصاویر فانتزی و تصاویر انتزاعی، ویرایش تصاویر، مانند تغییر رنگ، اضافه کردن جزئیات و حذف اشیاء. تولید گرافیکهای واقعگرایانه در بازیهای ویدئویی تولید تصاویر و ویدئوهای واقعگرایانه برای استفاده در واقعیت مجازی و افزوده و خیلی کاربردهای دیگر که روز به روز در حال آپدیت شدن و بهتر شدن است.
در Image Transformer نیز از لایههای Embedding استفاده میشود، اما تفاوت هایی با Embedding مدلهای Transformer برای پردازش متن دارد. در واقع برای Embedding در Image Transformer ، باید پیکسلها و اطلاعات تصویری را به فضای برداری مناسب تبدیل کرد. به عبارت دیگر، نیاز به یک روش تبدیل تصویر به بردارهایی دارد که مدل Transformer بتواند با آنها کار کند. معمولاً توسط لایههای CNN اولیه انجام میشود که با استفاده از آنها ویژگیهای مهم تصویر را در لایههای عمیق تر استخراج میشود. لایههای CNN به عنوان بخش اولیه ورودی در معماری Image Transformer وجود دارند و پس از آن لایه Embedding برای تبدیل ویژگیهای تصویر به فضای برداری به کار میرود. پس از استخراج ویژگیهای تصویر توسط لایههای CNN، لایه Embedding به عنوان بخش بعدی از مدل وارد عمل میشود. لایه Embedding تابعی است که ویژگیهای استخراج شده را به فضای برداری تبدیل میکند که قابلیت استفاده در شبکههای Transformer را داشته باشد. فرمول خاصی برای Embedding تصاویر وجود ندارد، اما این Embedding معمولاً با استفاده از وزنهای شبکههای کانولوشنی و لایههای Embedding ایجاد میشود که به طور خاص به ساختار مدل و نوع مسئله پردازش تصویر بستگی دارد.
مراحل بعد از Embedding در Image Transformer مشابه با Transformerهای متن است مرحله اول مکانیابی خود می باشد که با استفاده از تکنیکهایی مانند Positional Encoding به مدل کمک میکند تا موقعیت نسبی هر پچ در تصویر را درک کند. بعد با مکانیزم Attention به مدل کمک میکند تا بر روی بخشهای مهم تصویر تمرکز کند. سپس مرحله Feed-Forward که به مدل کمک میکند تا اطلاعات را از لایههای قبلی به لایههای بعدی منتقل کند. مرحله نهایی، که با استفاده از یک لایه خروجی مناسب برای وظیفه مورد نظر انجام میشود، مانند طبقهبندی تصویر یا تشخیص اشیاء. این مراحل در Encoder انجام می شود.
در معماری Image Transformer، Encoder مسئول تبدیل ورودی (در اینجا تصاویر) به فضای ویژگیهاست، در حالی که Decoder مسئول تبدیل فضای ویژگیها به تصویر خروجی است. در Encoder Image Transformer از یک معماری Transformer استاندارد با تعدادی تعدیل برای پردازش تصاویر استفاده میکند. این تعدیلها شامل تغییراتی در لایهها یا افزودن لایههای جدید برای متناسب ساختن معماری با ویژگیهای تصاویر است. به عنوان مثال، در استفاده از معماری Transformer برای پردازش تصاویر، معمولاً از لایههای CNN یا لایههای Multi-head Attention (MHA) به جای self-attention در معماری Transformer متنی استفاده میشود. همچنین، معماری و اندازه شبکه نیز ممکن است برای متناسب ساختن با حجم و پیچیدگی تصاویر تغییر کند.
در Decoder Image Transformer هم مانند Encoder از معماری Transformer استاندارد با تعدادی تعدیل برای تولید تصاویر استفاده میکند. Decoder Transformer های تولید متن از معماری Transformer استاندارد یا معماریهای اصلاحشده مانند Transformer با تولید خودکار (autoregressive) استفاده میکنند. فرض کنید میخواهیم از Image Transformer برای تولید تصویر گربه بر اساس یک جمله توصیفی استفاده کنیم. Encoder جمله توصیفی را پردازش میکند و اطلاعاتی در مورد ویژگیهای مختلف گربه مانند شکل، رنگ و اندازه را استخراج میکند. Attention مکانی به Encoder کمک میکند تا بر بخشهای مهم جمله مانند کلماتی که به رنگ، شکل و اندازه گربه اشاره میکنند، تمرکز کند. Decoder از اطلاعات استخراج شده توسط Encoder برای تولید یک تصویر از یک گربه با ویژگیهای توصیف شده در جمله استفاده میکند.
اگر بخواهیم از Transformer تولید متن برای توصیف تصویر با متن استفاده کنیم. مدل باید بتواند اطلاعات مهم از تصویر را شناسایی کرده و آنها را به صورت متنی ارائه دهد. در این تسک بلوک Encoder تصویر را پردازش میکند و اطلاعاتی در مورد اشیاء، رنگها و بافتهای مختلف موجود در تصویر را استخراج میکند. Attention مبتنی بر توالی به Encoder کمک میکند تا بر بخشهای مهم تصویر مانند اشیاء و جزئیات کلیدی تمرکز کند. Decoder از اطلاعات استخراج شده توسط Encoder برای تولید یک جمله که تصویر را توصیف میکند استفاده میکند.
به عنوان مثال، فرض کنید تصویری از یک سگ در حیاط را دارید. مدل باید بتواند اطلاعاتی مانند نوع سگ، رنگ، مو، اندازه، موقعیت در تصویر، و احتمالاً فعالیتی که سگ انجام میدهد (مثلاً خوابیدن یا بازی کردن) را استخراج کرده و به صورت جملهای منطبق بر این اطلاعات توصیف کند. به عنوان مثال، جملهای ممکن است به این شکل باشد: "یک سگ سفید با موهای بلند در حیاط بازی میکند." در این جمله، اطلاعات مهمی از تصویر (رنگ سگ، بافت مو، موقعیت در تصویر، و فعالیت) به صورت متنی توصیف شدهاند. در قسمت بعد میخواهیم موارد استفاده و نحوه کارکرد Transformer را برای تولید یا نفسیر ویدئو بررسی کنیم. با من همراه باشید.
این دو معماری شباهت ها و تفاوت هایی با هم دارند. در واقع هم Image Transformer و هم Transformer های تولید متن از مکانیزم attention برای تمرکز بر بخشهای خاصی از دادههای ورودی هنگام پردازش و تولید خروجی استفاده میکنند. هر دو معماری از ساختار Encoder-Decoder استفاده میکنند. Encoder دادههای ورودی را پردازش میکند و Decoder از اطلاعات استخراج شده توسط Encoder برای تولید خروجی استفاده میکند. هر دو معماری از شبکههای عصبی عمیق با لایه های متعدد برای یادگیری روابط پیچیده بین دادههااستفاده میکنند. اما تفاوت هایی که این دو معماری با هم دارند باعث تمایز آنها می شود از جمله اینکه تسک Image Transformer برای پردازش و تولید تصاویر است در حالیکه Transformer ها برای پردازش و تولید متن بودند بنابراین نوع داده های آنها با هم متفاوت است.
از جمله مهم ترین تفاوت های آن ها این است که در معماری Image Transformer، از توجه مکانی (Spatial Attention) برای تمرکز بر بخشهای مختلف یک تصویر هنگام پردازش و تولید آن استفاده میشود. Spatial Attention از دو مرحله اصلی تشکیل شده است. مرحله اول محاسبه مقادیر Attention است که مدل برای هر پیکسل در تصویر یک مقدار Attentionمحاسبه میکند. این مقدار نشان میدهد که مدل تا چه حد به آن پیکسل Attention دارد. محاسبه مقادیر Attention میتواند با استفاده از شبکههای عصبی کوچک برای هر پیکسل در تصویر یک مقدار Attention پیشبینی کند یا از توابعی مانند تابع گاوسی برای محاسبه مقادیر Attention بر اساس فاصله بین پیکسل و مرکز تصویر استفاده میشود.
بعد از محاسبه توجه باید اعمال مقادیر توجه برای تنظیم وزن اطلاعات مربوط به هر پیکسل استفاده میشود. به این معنی که پیکسلهایی که مقادیر Attention بالاتری دارند، تاثیر بیشتری بر خروجی مدل خواهند داشت. اعمال مقادیر Attention میتواند به روشهای مختلفی انجام شود، می تواند مقدار Attention هر پیکسل در وزن مربوط به آن پیکسل ضرب میشود یا میانگین وزنی از اطلاعات مربوط به تمام پیکسلها محاسبه میشود. از جمله مزایای متعددی استفاده از Spatial Attention اینکه به مدل کمک میکند تا بر بخشهای مهم تصویر تمرکز کند و از آنها برای تولید خروجی دقیقتر استفاده کند. همچمنین از نویز و اطلاعات غیرمرتبط در تصویر چشمپوشی کند و از آنها برای تولید خروجی استفاده نکند و جزئیات دقیقتر و ظریفتر را در تصویر تشخیص دهد و آنها را در خروجی نهایی حفظ کند. در حالی که Transformer های تولید متن از Attention مبتنی بر توالی (sequential attention) برای تمرکز بر کلمات مختلف در یک جمله استفاده میکنند.
سوالی که در اینجا مطرح می شود اینکه چرا مدلهای Transformer پیش از این برای تصاویر استفاده نمیشدند؟ دلایل اصلی که می توان برای اون بررسی کرد این است که پیچیدگی محاسباتی ای که برای پردازش تصاویر با Transformers به مقدار زیادی از حافظه و محاسبات نیاز دارد که با توجه به ابعاد بزرگ تصاویر، چالش برانگیز بود. دلیل بعدی اینکه دادههای تصویر کمتر ساختار یافته بودند یعنی تصاویر برخلاف زبان که دارای توالی زمانی است، ساختار متفاوتی دارند که نیاز به تطبیق و تنظیم مدلها دارد و همچنین می دانیم که مدلهای Transformer نیازمند به دادههای بسیار زیاد هستند تا به درستی آموزش ببینند و قبل از دسترسی به دادههای کافی و برچسبگذاری شده، آموزش چنین مدلهایی مشکل بود. در قسمت بعد میخواهیم معماری شبکههای Transformer ویدئو (VTNs) را برای تولید ویدئو با استفاده از Transformer ها بررسی کنیم با من همراه باشید!
در سال 2021 یک مقاله تحقیقاتی که توسط Daniel Neimark, Omri Bar, Maya Zohar, Dotan Asselmann منتشر شد. شبکههای Transformer ویدئو (VTNs) و به توسعه معماری Transformer برای تولید ویدئو میپردازد. این مقاله تلاش میکند تا معماری Transformer را برای تولید ویدئو توسعه دهد.
تا زمان انتشار این مقاله، بیشتر استفادههای Transformer در پردازش زبان طبیعی و تولید متن مورد توجه بودند. اما "Video Transformer Networks" با ارائه یک معماری Transformer ویژه برای تولید ویدئو، که میتواند توالیهای تصاویر را به عنوان ورودی دریافت کرده و ویدئوهایی جدید را تولید کند. این مدل از قابلیتهای خودآموزی برای یادگیری الگوهای زمانی و دیدگاههای چندرسانهای بهره میبرد، تا توانایی تولید ویدئوهای واقعیتر و با کیفیتتر را داشته باشد. در ادامه می خواهیم ببینیم که این معماری چطور کار می کند. در معماری VTNها مشابه مدلهای Transformer سنتی ساختار Encoder-Decoder برای پردازش و تولید دنبالهها استفاده میکنند. Encoder وظیفه استخراج ویژگیهای مختلف از فریمهای ویدئو ورودی بر عهده دارد ، در حالی که Decoder مسئول تولید دنبالههای جدید ویدئو است.
در VTN هم از Embedding در Encoder و Decoder استفاده میشود. Embedding در واقع وظیفه تبدیل ورودیهای متنی یا تصویری به فضایی با ابعاد کمتر است که مدل بتواند به آنها دسترسی داشته باشد. این کار باعث میشود که اطلاعات مورد نیاز برای پردازش توسط مدل کاهش یابد و در عین حال، اطلاعات مهم حفظ شود. در Encoder، Embedding وظیفه تبدیل ویژگیهای تصویر یا ویدئو به فضای Embedding را دارد تا اطلاعات مهم استخراج شود. در Decoder نیز، Embedding برای تبدیل خروجیهای قبلی (مانند کلمات در مدلهای متنی یا فریمها در مدلهای ویدئویی) به فضای Embedding استفاده میشود تا مدل بتواند اطلاعات مناسب را برای تولید خروجی بعدی فهمیده و استفاده کند. همچنین VTNها به طور گسترده از مکانیسمهای self-attention برای ضبط وابستگیهای برد بلند در داخل و بین فریمهای ویدئو استفاده میکنند. این به چه معناست ؟ این وابستگیها به مدل اجازه میدهند که روابط زمانی و معنایی بین فریمها برای تولید ویدئوهای منسجم و واقعگرایانه را بشناسد و درک کند. این امر مدل را قادر میسازد تا روابط زمانی پیچیده را یاد بگیرد و دنبالههای ویدئویی منسجمی را تولید کند.
در VTNها برای هر فریم در دنباله ویدئو، ماتریس توجهی را محاسبه میکنند. و سپس بر اساس ماتریس توجه، VTNها به هر فریم در دنباله وزنی اختصاص میدهند. این وزنها ناندهنده اهمیت هر فریم در تولید فریم فعلی است. این ماتریس نشان میدهد که هر فریم چقدر به سایر فریمها در دنباله مرتبط است و از اطلاعات تمام فریمها در دنباله ویدئو، با توجه به وزنهای محاسبه شده، برای تولید فریم فعلی استفاده میکنند. در نتیجه می تواند روابط زمانی پیچیده بین فریمها را در نظر بگیرد و ویدئویی منسجم تولید کند.
از جمله کاربردهای مهم آن تولید تصویر به ویدئو است که VTNها میتوانند ویدئوهایی واقعگرایانه تولید کنند که به نظر میرسد از لحاظ زمانی و مکانی منسجم و واقعگرایانه باشند. این قابلیت به ویژه در کاربردهایی مانند تولید محتوا، انیمیشنسازی و ویرایش ویدئو مفید است. میتوانند به مدلها کمک کنند تا درک بهتری از محتوای ویدئوها داشته باشند که کاربردهایی مانند تحلیل ویدئو، تشخیص اشیا در ویدئو، ویدئوهای نظارتی و پیشبینی حرکاتمفید باشد. با یک تصویر ثابت، VTNها میتوانند یک دنباله ویدئویی تولید کنند که مفهومی یکسان را به تصویر میکشد. میتوانند نواحی گمشده یا خراب شده یک دنباله ویدئو را ترمیم کنند در حالیکه انسجام فریمهای اطراف را حفظ کنند. VTNها میتوانند وضوح ویدئوهای کم کیفیت را با تولید دنبالههای با وضوح بالا که محتوای اصلی و جزئیات را حفظ میکنند، افزایش دهند. یکی از کاربردهای مهم VTNs، تولید ویدئو با پرامپت متنی یا سایر انواع دادهها است. مدلهای پیشرفته که امروزه ارائه شده اند Vidu , Sora از این قابلیت بهره میبرند و میتوانند ویدئوهای واقعگرایانه و پیچیدهای تولید کنند.
معرفی VTNها زمینههای جدیدی را برای تحقیق و توسعه در این زمینه گشوده و منجر به پیشرفتهای قابل توجهی در قابلیتهای تولید ویدئو شده است. این مقاله به طور گسترده مورد استناد و تأثیرگذار بوده و الهامبخش numerous follow-up works است که بیشتر به بررسی و پالایش کاربرد معماریهای Transformer برای تولید ویدئو میپردازند. محققان در تلاشند تا مدلهای کارآمدتری ایجاد کنند که بتوانند اطلاعات مکانی و زمانی را به طور همزمان و با دقت بیشتری پردازش کنند. مثلا استفاده از Temporal Attention Mechanisms برای بهبود مکانیزمهای توجه زمانی برای مدلسازی بهتر روابط بین فریمهای ویدئویی و یا Spatiotemporal Transformers که توسعه Transformer های فضا-زمانی که توانایی پردازش اطلاعات مکانی و زمانی را به طور همزمان دارند. در مدل های قدیمی تر ضعف هایی در مقایسه با VTN وجود دارد. مثلا شبکههای بازگشتی (RNN) ها و LSTMها که برای پردازش دنبالههای زمانی استفاده میشدند، اما آنها معمولاً نمیتوانند وابستگیهای طولانیمدت را به خوبی ضبط کنند. VTNها با استفاده از مکانیزم Self-Attention این محدودیتها را برطرف کردهاند. شبکههای Transformer معمولاً مقیاسپذیری بهتری نسبت به RNNها دارند و میتوانند با دادههای بزرگتر و پیچیدهتر به خوبی کار کنند.
در واقع Image Transformationبر روی تصاویر استاتیک متمرکز و هدف آن تغییر یا دستکاری یک تصویر واحد است. در مقابل، VTNها برای تولید دنبالههای ویدئویی طراحی شدهاند و باید روابط زمانی و معنایی بین فریمها را در نظر بگیرند. در VTNها self-attention به طور خاص برای ضبط این وابستگیهای long-range dependencies طراحی شده است، این وابستگیها میتوانند تغییرات جزئی و تدریجی در فریمهای متوالی یا حرکات کلی در طول ویدئو باشند. در حالی که تکنیکهای image transformation معمولاً بر روی ویژگیهای فضایی تصاویر تمرکز دارند. در نتیجه، تفاوت اصلی بین تکنیکهای image transformation و VTNها در نحوه پردازش اطلاعات زمانی و فضایی است.
معماری ViViT که در مقالهای در سال 2021 توسط Google Research منتشر شد، برای پردازش و تحلیل دادههای ویدئویی با استفاده از مدلهای ترنسفورمر طراحی شده است.
در معماری ViViT پردازش ویدئوها با استفاده از معماری Transformer و بدون نیاز به CNN برای استخراج ویژگیهای اولیه انجام می شود. ساختار Encoder-Decoder در Vision Transformers (ViTs) برای پردازش ویدئو و تصویر مشابه است، اما چون ماهیت دادههای ورودی (تصویر در مقابل ویدئو)، تفاوتهایی در پیادهسازی و کاربرد های این معماری ایجاد می کند. مثلا ساختار Encoder در VTN ها ، نیاز به در نظر گرفتن بُعد زمانی و مکان دارد. ساختارهای Encoder-Decoder برای ویدئو (مانند ViViT - Video Vision Transformers) معمولاً شامل تغییراتی هستند تا اطلاعات زمانی و مکانی را به طور همزمان مدل کنند. چون که ویدئو مانند تصویر استاتیک نیست و اطلاعات زمانی در آن مهم است. به طور کلی، این مدلها از چندین فریم به عنوان ورودی استفاده میکنند. چرا که ویدئو از توالیای از فریمها (تصاویر ثابت) تشکیل شده است که به سرعت یکی پس از دیگری نمایش داده میشوند تا حرکت و تغییرات در طول زمان را به تصویر بکشند و این ویژگیها را به بردارهای با ابعاد کمتر(embeddings) تبدیل میکند. این بردارها شامل اطلاعات مهمی از هر فریم هستند که مدل نیاز دارد تا روابط زمانی و مکانی بین فریمها را بفهمد.
همچنین از مکانیزم Self-Attention برای استخراج ویژگیها و درک روابط بین patch ها (در تصاویر) یا فریمها (در ویدئوها) استفاده میکنند. برای ویدئوها، علاوه بر توجه به روابط مکانی بین patch ها، نیاز به مدلسازی روابط زمانی بین فریمها نیز وجود دارد. این کار معمولاً با استفاده از مکانیزمهای Attention بر روی توالی فریمها انجام میشود. این مکانیزم به مدل اجازه میدهد تا روابط زمانی و مکانی بین فریمها را در نظر بگیرد. در هر مرحله، Self-Attention ماتریسی از وزنها را محاسبه میکند که نشان میدهد هر فریم تا چه حد به سایر فریمها مرتبط است. این ماتریس کمک میکند تا مدل بتواند اطلاعات مهم را از کل دنباله ویدئویی استخراج کند. همچنین به دلیل ابعاد زمانی اضافی، معمولاً پیچیدگی محاسباتی و منابع بیشتری نسبت به تصاویر دارد.
مراحل پردازش در بخش Decoder در ViViT معمولاً شامل مراحلی مشابه با بخش Decoder در دیگر مدلهای Transformer است. ابتدا، توکنهای ورودی به بردارهای ویژگی (Embedding) تبدیل میشوند. در مورد ویدئو، این توکنها میتوانند نمایانگر ویژگیهای استخراجشده از پچهای فریمها باشند.اضافه کردن اطلاعات مکانی-زمانی به بردارهای ویژگی، همان مرحله Positional Encoding است به طوری که مدل بتواند موقعیت هر توکن در توالی را درک کند.
مراحل تولید ویدئو در مدلهای ViViT ، مشابه با تولید دنبالههای متنی خواهد بود، با این تفاوت که خروجی هر مرحله یک فریم ویدئو است. بخش Decoder به طور معمول برای تولید خروجیهایی مانند برچسبهای طبقهبندی، شرحهای ویدئو، یا وظایف مشابه استفاده میشود، اما برای تولید فریمهای ویدئو از ابتدا (ویدئو جنریشن) معماریهای دیگری مانند Video GANها یا Video Autoencoders بیشتر رایج هستند. در این زمینه، MMHA در Decoder میتواند نقش مهمی ایفا کند. درمعماری Decoder، مدل های ViViT مرحلهی اولیه شامل یک لایه MMHA است که به توکنهای خروجی قبلی نگاه میکند و روابط بین آنها را مدل میکند. در این مرحله، از Masking استفاده میشود تا مدل فقط بتواند به توکنهای قبلی نگاه کند و نه توکنهای آینده. این مسئله در تولید ویدئو بسیار مهم است زیرا هر فریم باید بر اساس فریمهای قبلی تولید شود. استفاده از Masked MHA تضمین میکند که مدل فقط به فریمهای قبلی نگاه میکند و اطلاعات آینده در دسترس مدل قرار نمیگیرد، که برای حفظ یکپارچگی و ترتیبی بودن تولید ویدئو بسیار مهم است. سپس یک لایهی MHA دیگر قرار دارد که به خروجیهای بخش Encoder نگاه میکند. این لایه روابط بین ویژگیهای استخراجشده از ویدئو در بخش Encoder و توکنهای فعلی در بخش Decoder را مدل میکند. در این لایه از Maskingاستفاده نمیشود زیرا مدل نیاز دارد به تمام توکنهای Encoder نگاه کند. خروجی از مرحلهی Encoder-Decoder Attention به یک شبکه عصبی پیشخور (FFN) داده میشود که شامل چندین لایهی Dense است. مراحل بعد مانند معماری های Transformer است و مانند بخش Encoder، در Decoder نیز از نرمالسازی لایه و اتصالات باقیمانده (Residual Connections) استفاده میشود.
بخش Decoder در ViViT و سایر مدلهای Video Transformer به طور مشابه با مدلهای Transformer در NLP عمل میکند، با این تفاوت که باید به صورت خاص با دادههای ویدئویی و ویژگیهای مکانی-زمانی آنها کار کند. استفاده از Masked MHA در Decoder برای جلوگیری از دسترسی به توکنهای آینده و حفظ ترتیبی بودن فرآیند تولید توکنها بسیار مهم است.
نکته مهم : در نهایت، در حالی که ساختار کلی Encoder-Decoder و مکانیزم Attention در ViTs و ViViTs مشابه است، نحوهی پیادهسازی و جزئیات آنها به دلیل نیاز به مدلسازی اطلاعات زمانی در ویدئوها تفاوتهایی دارد. این تفاوتها به مدلها امکان میدهد تا بتوانند به طور موثرتری با نوع دادههای ورودی خود (تصاویر یا ویدئوها) کار کنند.
در سال 2021 VideoGPT که یک مدل Transformer است و از ساختاری مشابه با مدلهای GPT استفاده میکند. این مدل در مقاله ای توسط Yusen Zhou و دیگران ارائه شده است.
این مدل برای تولید ویدئوهای متناسب با متن ورودی به طور خاص برای تولید ویدئوهای کوتاه بهینهسازی شده است. ورودی این مدل میتواند یک توصیف متنی یا یک دنبالهای از فریمهای ویدئویی باشد. اگر ورودی شامل توصیف متنی باشد، ابتدا متن توسط بخش Encoder به بردارهای Embedding تبدیل میشود. در صورتی که ورودی شامل فریمهای اولیه ویدئویی باشد، این فریمها نیز به صورت مشابه پردازش میشوند. مدل این ورودیها را به عنوان دادههای دنبالهدار پردازش میکند. البته قبل از ورود دادهها به مدل، فریمهای ویدئویی به صورت پیشپردازش شده و به توالیهای مناسبی تبدیل میشوند.
سپس مدل با استفاده از ساختار Transformer، فریمهای ویدئویی جدیدی را توسط Decoder تولید میکند که با توصیف متنی یا فریمهای ورودی همخوانی دارند. در بخش Decoder از نمایشهای عددی تولید شده توسط Encoder برای پیشبینی فریم های ویدئویی بعدی استفاده میکند. این فرایند شامل تولید فریم به فریم ویدئو است که مدل تلاش میکند با استفاده از ورودیهای قبلی و توجه به اطلاعات موجود، فریم بعدی را به دقت پیشبینی کند. این فرایند شامل پیشبینی فریمهای آینده و تکمیل دنبالههای ویدئویی است.
سپس فریمهای ویدئویی تولید شده توسط Decoder به یکدیگر متصل میشوند تا یک ویدئو کامل ایجاد شود. به عبارت دیگر در مدل VideoGPT، Decoder دنبالههای ویدئویی را تولید می کند و این فرایند شامل پیشبینی و تولید فریمهای آینده با استفاده از اطلاعاتی که از Encoder دریافت کرده، به تولید ویدئوی نهایی میپردازد. البته استفاده از VideoGPT و مدلهای مشابه در مرحله تحقیق و توسعه قرار دارد. اگرچه این تکنولوژی پتانسیل زیادی برای کاربردهای متنوع دارد (مانند تولید محتوای ویدئویی خودکار، ساخت انیمیشن، تولید تبلیغات و غیره)، اما به دلیل پیچیدگیهای فنی و نیاز به منابع محاسباتی بالا، هنوز به صورت گسترده و تجاری مورد استفاده قرار نگرفته است.
استفاده از Transformer برای وظایف مربوط به تصویر و ویدئو با چالشهای منحصر به فردی مواجه است. تصاویر و ویدئوها اطلاعات فضایی پیچیدهای دارند و Transformer ها به این دلیل که Attention تمرکز دارند، به آنها اجازه میدهد تا بر روی بخشهای مهم یک توالی تمرکز کنند که برای مدلسازی آنها مناسب نیستند. با این حال، Attention برای مدلسازی وابستگیهای long-range ( در تصاویر و ویدئوها رایج است) به خوبی مناسب نیست. البته معماریهای Transformer جدیدی مانند Vision Transformer و Swin Transformer که به طور خاص برای وظایف مربوط به تصویر و ویدئو طراحی شدهاند که از مکانیزمهای Attention جدیدی که برای مدلسازی وابستگیهای فضایی مناسب ترند استفاده می کنند.
یکی از بزرگترین چالش ها، آموزش Transformer ها روی مجموعه دادههای بزرگ تصویر و ویدئو است که از نظر محاسباتی بسیار پرهزینه است. چرا که Transformer ها تعداد زیادی پارامتر دارند و پردازش آنها به حجم زیادی از حافظه و قدرت محاسباتی نیاز دارد. یادگیری تقویتی میتواند برای آموزش Transformer ها به روشی کارآمدتر استفاده شود. چرا که در یادگیری تقویتی، به جای آموزش Transformer ها با مجموعه دادههای لیبل دار شده، به آنها بازخورد مثبت یا منفی در مورد عملکردشان داده میشود. در نتیجه بدون نیاز به حجم زیادی از دادههای برچسبگذاری شده، الگوهای مؤثر را یاد بگیرند. همچنین با روش یادگیری چند وظیفهای میتواند برای آموزش Transformer ها برای انجام چندین وظیفه به طور همزمان استفاده شود. این امر میتواند به آنها کمک کند تا دانش را بین وظایف مختلف به اشتراک بگذارند و عملکرد خود را در هر وظیفه بهبود بخشند.
غالبا مجموعه دادههای با کیفیت بالا برای وظایف مربوط به تصویر و ویدئو کمیاب و گران هستند. این امر میتواند آموزش Transformer ها روی این وظایف را دشوار کند، زیرا آنها به حجم زیادی داده برای یادگیری الگوهای مؤثر نیاز دارند. اینها تنها تعدادی از راه حلهای امیدوارکنندهای هستند که برای رفع چالشهای استفاده از Transformer ها برای تصویر و ویدئو در حال توسعه هستند. با پیشرفت تحقیقات، به احتمال زیاد شاهد پیشرفتهای قابل توجهی در عملکرد Transformerها در این وظایف خواهیم بود.
در این مقاله راجع به مدل های مختلف Transformer که ایده آنها از مقاله اصلی Transformer گرفته شده است و برای image و Video کاربرد دارند صحبت کردیم. دیدیم که تقریبا ایده آنها بسیار شبیه به همدیگر است و تفاوت اصلی که با هم می توانند داشته باشند در نوع داده ای است که در معماری آنها به کار می رود. همچنین راجع به معماری GANs ها آموختیم که حتی قبل از Transformer ها هم ارائه شده بودند و به کار می رفتند اما با مطرح شدن Transformer ها معماری GANs ها هم دچار تغییراتی شد. در واقع این دو را به هم ترکیب کردند و معماری ViTGAN و TransGAN ها به وجود آمدند. امروزه Transformer ها در همه جا میبینیم کمپانی های بزرگ با استفاده از این معماری در حال خلق دنیای جدید ما هستند. هر چه به جلود می رویم با پیشرفت و بهبود این معماری بیشتر به AGI نزدیک می شویم. مخصوصا در زمینه ی بینایی ماشین هر چقدر ماشین بهتر بتواند ببینید بیشتر میتوانیم به AGI نزدیک شویم. بعد از معرفی GPT-4o که در زمان نوشتن این مقاله معرفی شد. قطعا مسیر رسیدن به AGI هموار تر شد. با GPT-4o به صورت Real-Time مدل می تواند ویدئو را ببینید همان لحظه تحلیل کند و راجع به آن سوالی که مطرح می شود را پاسخ دهد. مدل Google هم به همین صورت است. قطعا میتوان گفت در اینده ای نزدیک به سمت مدل هایی میرویم که بیشتر و بهتر بتوانند ببینند. در واقع LLM ها به سمت چندوجهی شدن حرکت می کنند. کنترل در دستان کسی است که بتواند بینایی ماشین را بهبود دهد و البته می تواند مقداری هم دنیا را ترسناک کند چرا که مرزهای واقعیت به صورت جدی دچار تغییر می شوند و قدرت تشخیص دنیا ها روز به روز می تواند سخت تر شود وشاید قاطعانه به سمت این سوال که در فیلم به یاد ماندنی ماتریکس مطرح شد در حال حرکت هستیم. و سوال این است : What is a real?? ” “
ممنون از شما که در این سفر به دنیای Deeps با من همراه بودید.
لینک پارت 1 به انگلیسی در Medium
لطفا اگر مایل بودید مقاله دیگر من"ترنسفرمر ها همه چیزی که به آن نیاز دارید ! " رو در ویرگول ببینید .
چگونه مدل Soraتولید محتوای ویدیوئی را دگرگون میکند؟
امیدوارم از مطالب لذت برده باشید .