DALL-E:2 যেভাবে বাস্তবের মতো ছবি আঁকে?
Tags: dalle2, ai, bangla
Published: 2023-05-24 09:54:35

নিচের যেসব ছবিগুলা দেখছেন এগুলা কিন্তু কোনো মানুষ আঁকেনি বা বানায় নি সবগুলো কৃত্রিম বুদ্ধিমত্তা দিয়ে তৈরি করা হয়েছে। শুধু একটা বর্ণনা দেয়া হয়েছে কেমন ছবি চাই বাকিটা কৃত্রিম বুদ্ধিমত্তা বা এআই(AI) এঁকে দিয়েছে। এখানে থাকা ছবিগুলা Open AI এর সর্বশেষ রোবট বা এআই(AI) DALL-E 2 দিয়ে জেনারেট করা।
![Cat Playing Guitar](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74pb93kfcehc93def7ok.png)
![Panda playing kung fu in the Moon and looking at earth](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pv3k8sqryz9sv14fbp2p.png) ![Astronaut playing with cats and balls in space](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/odg5zkt6jqpzs0hfwple.png)
প্রথমেই DALL-E এর নাম সম্পর্কে বলি DALL-E নাম টা মুলত বিখ্যাত স্প্যানিশ আর্টিস্ট **Salvador Dalí** এবং ২০০৮ এ মুক্তি Disney এর থেকে মুক্তি পাওয়া Wall-E নাম দুটি থেকে বানানো হয়েছেে। এটি Wall-E এর মতোই একটি কৃত্রিম বুদ্ধিমত্তা সম্পন্ন রোবট এবং একই সাথে ভালো আর্টিস্ট সে হিসেবে এই নামটি ব্যাবহার করা হয়েছে।

২০২১ এর প্রথম দিকে DALL-E সম্পর্কে প্রথম ঘোষনা করে OpenAI। তখনও সেটা কারো পরীক্ষার জন্য উন্মুক্ত করে নি OpenAI। তবে এবছর OpenAI DALL-E 2 নামে এর সর্বশেষ ভার্সন প্রকাশ করে। এবং এবারই প্রথম যেখানে ডেভেলপার,আর্টিস্ট,ইনফ্লুয়েন্সারদের DALL-E 2 পরীক্ষা করার জন্য আমন্ত্রণ পাঠায়। এখনো সর্বসাধারনের জন্য উন্মুক্ত করেনি OpenAI।

 এই রোবটটি  অনেক ক্ষেত্রে মানুষের থেকে ভালো ছবি আঁকে। চলুন জেনে নেই কিভাবে এই কঠিন কাজটি করে DALL-E 2।

**কিভাবে আঁকল?**

আপনার দেয়া ডেস্ক্রিপশন বা বর্ণনা অনুযায়ী প্রয়োজনীয় ছবি গুলা আগে বুঝার চেষ্টা করে। মনে করুন আমার ডেস্ক্রিপশন হলো- 

“A penguin riding a scooter in Dhaka City” আগে সে তার ডেটা সেট থেকে খুজে অব্জেক্টিফাই করার চেষ্টা করে কোনটা কী?

যেমন- একটা পেনগুইন আসলে দেখতে কেম্ন?
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udxmj13xh429pqic4vho.png)
স্কুটার কি? ঢাকা শহর দেখতে কেমন? স্কুটারে চড়ে কিভাবে?
আপনার দেয়া কি-ওয়ার্ড থেকে  DALL-E 2  একটি **টেক্সট এনকোডার** এর মাধ্যমে এনকোড করে। তারপর ডেস্ক্রিপশন অনুযায়ী বস্তুগুলোকে চিহ্নিত করে একটি মানচিত্র বা ম্যাপ জেনারেট করে। ম্যাপ থেকে একটি ছবি তৈরি করে এআই টি এই প্রক্রিয়ার নাম **prior** 
এই **prior** থেকে একটা প্রকৃত ছবিতে রুপান্তর করতে একটি **image decoder** কাজ করে
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7uxfc0qakrvwevhuiovk.png)
ডিকোডার টি ব্যাসিকালি সব ছবিকে এম্বেড করার চেষ্টা করে। এম্বেড হলো কি-ওয়ার্ডগুলোকে একটা ম্যাথমেটিকাল রুপ বা ভেক্টরে রুপ দেয়ার চেষ্টা করা। সেই থেকে একটি ইমেজ ম্যাপ তৈরী করে।

এ প্রক্রিয়ায় কাজ করে **CLIP (Contrastive Language-Image Pre-training)** নামে **OpenAI** এর আরেকটি মডেল। যার কাজ হলো কোনো ছবির জন্য একটা সঠিক ও মানানসই ক্যাপশন দেয়া। যেটাকে মুলত আমরা **DALL-E 2** এর করা কাজ এর উল্টা প্রক্রিয়াও বলতে পারি। CLIP মুলত দুটি নিউরাল নেটওয়ার্ক দিয়ে তৈরি। একটি টেক্সট এনকোডার এবং আরেকটি ইমেজ এনকোডার। CLIP কে এক বিশাল ছবি ও তার ক্যাপশনের ডেটাসেট দ্বারা ট্রেইন করা হয়।

একটা উদাহরণ দেই- যখন আমরা ইন্সটাগ্রাম বা ফেসবুকে একটা পেনগুইন এর ছবি দিয়ে ক্যাপশন দেই “A Penguin”  **CLIP**  সেই ক্যাপশন অনুযায়ী ট্রেইন হয় আসলে একটি পেংগুইন আসলে দেখতে কেমন। 

ট্রেইন হওয়া **CLIP** মডেলটি  **prior** প্রক্রিয়ায় পাওয়া টেক্সটগুলোর সাথে মিলিয়ে বস্তুগুলোকে নিউরাল নেটওয়ার্কের মাধ্যমে সাবজেক্ট,আর্ট স্টাইল বা টেক্সচার, স্কেল, সম্পর্ক এবং দুরত্ব পরিমাপ করে সমগ্র আর্টের একটি মানচিত্র বা ম্যাপ জেনারেট করে ম্যাপ থেকে ****Visual Semantics**** তৈরি করে। এই ভিজ্যুয়াল সিমান্টিক্স কে ছবিতে রুপান্তরের কাজটি করে **GLIDE** নামের আরেকটি মডেল। যার কাজ **CLIP** এর ভিজ্যুয়াল সিম্যান্টিক্স থেকে সর্বোচ্চ গ্রহনযোগ্য ছবিতে রুপান্তর করা। 

**GLIDE**  আবার আবার কাজ করে ডিফিউশন বা **diffusion** মডেল ব্যবহার করে।

এই **diffusion** জিনিসটা আবার কি? পদার্থবিজ্ঞানের তাপগতিবিদ্যার থেকে অনুপ্রাণিত হওয়া একটি মডেল। এর কাজ  **CLIPE** এর দেওয়া ডাটা অনুসারে আস্তে আস্তে ছবিতে *noise* যুক্ত করতে থাকে। এই *noise* যুক্ত করা চলে *Gaussian Noise* হওয়া **পর্যন্ত তার পর সেটি রিভার্স প্রক্রিয়ায় পুনরায় *De-noising* করা হয়। ফলে এক পর্যায়ে এটি একটি পরিষ্কার ও সুন্দর ছবি দিতে সক্ষম হয়।
**diffusion** মডেল টি মূলত **GLIDE** কে ট্রেনিং করানোতে কাজে লাগে। ট্রেইনড হলে সে ডেটাসেটের বাইরে নিজেই কিছু ছবি জেনারেট করতে পারে। যেমন আপনি যখন অবাস্তব কিছু ডেস্ক্রিপশন এ লিখবেন সেটি সে এই মডেলের মাধ্যমে সেই জিনিসটা আসলে কেমন তার একটা রেফারেন্স নিয়ে নতুন ছবি তৈরী করবে। 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2245sbjrzs0rjt63tti.png)
**DALL-E 2** এখানে **GLIDE** এর মার্জিত সংস্করণ ব্যবহার করে। মার্জিত **GLIDE** মডেল সর্বোচ্চ সম্ভাব্য ছবির ভিজুয়্যাল সিম্যান্টিক্স এর মাধ্যমে ম্যাপ উপস্থাপন করে। তা ব্যবহার করে সব ডাটা **prior** কে দেয়া হয় তার উপর ভিত্তি করে *image encoding* এর মাধ্যমে সব ফ্রেম মিলিয়ে কয়েকটি ছবি জেনারেট করে থাকে।আর এভাবেই **DALL-E 2** কাজ করে।

DALL-E 2 এর এখনো বেশ কিছু সীমাবদ্ধতা রয়েছে। সেগুলো-

১। DALL-E কে একের অধিক মানুষ আঁকার দায়িত্ব দিলে সে তা পারে না পারলেও চেহারা নষ্ট করে দেয়।

২। DALL-E গণনা করতে এখনো দুর্বল। ধরুন আপনি একটি prompt দিলেন যেখানে চাচ্ছেন “একটি বিড়াল  ৫ টি মাছ খাচ্ছে” সেক্ষেত্রে DALL-E গণনা করে বিড়াল আর মাছৈর সংখ্যা নিয়ে ঝামেলা পাঁকাবে।

৩। DALL-E টেক্সট জেনারেটিং এ দুর্বল। ধরুন আপনি একটি সাইনবোর্ডে একটা নির্দিষ্ট লেখা দিয়ে চাইলেন তার ছবি পেতে কিন্তু সেই রেজাল্ট আপনার মোটেও মনমত পাবেন না। লেখালেখির ক্ষেত্রে DALL-E দুর্বল।

৪। কিছু সেন্সেটিভ ওয়ার্ড(যেমন: রক্ত,খুন,নগ্নতা ইত্যাদি) থাকলে DALL-E কোনো ছবি জেনারেট করতে পারেনা। বরং ভায়োলেশন হিসেবে ধরে রিপোর্ট করে।

এমন আরো কিছু ঝুকি ও সীমাবদ্ধতা আছে DALL-E তে। যদিও OpenAI টিম সেটা সাড়াতে কাজ করছে। ঝুকি ও সীমাবদ্ধতাগুলো পড়তে চাইলে দেখে আসুন-https://github.com/openai/dalle-2-preview/blob/main/system-card.md

পরিশিষ্ট:

 DALL-E কিভাবে কাজ করে জানাটা থেকে ভিতরে কি কি প্রক্রিয়া হচ্ছে সেটা বুঝাটা বেশ কঠিন। আমি চেষ্টা করে যত সহজে ব্যাপারটা কে বোধগম্য করার কিন্তু টেকনিকাল টার্মগুলো বেশ খটমটে এবং কঠিন। ভুল হতেও পারে কিছু তাই যারা বুঝেন একটু ভেরিফাই করে দিয়েন দয়া করে। মূল সোর্স সংযুক্ত করলাম এখানে সোর্স-
https://www.assemblyai.com/blog/how-dall-e-2-actually-works/