🐠 نموذج انتشار الأسماك (DDPM 64x64) - مشروع بحثي فردي منزلي

هذا المستودع يمثل مشروعاً بحثياً فردياً ومنزلياً تم تطويره بالكامل بواسطة المطور تامر (12 سنة). يهدف المشروع إلى تدريب نموذج انتشار احتمالي (DDPM) غير مشروط من الصفر (From Scratch) وتطويره عبر مرحلتين إضافيتين للتحكم في معالم الصور وجودتها.

تم إنجاز هذا العمل بكفاءة عالية في إدارة الموارد الحسابية في بيئة منزلية؛ حيث تم التدريب على كارت شاشة اقتصادي بسعة **(5 إلى 6 GB VRAM)**، واستهلك النموذج 2 GB VRAM فقط أثناء التدريب الفعلي، وبزمن إجمالي أقل من ساعتين.


🔬 مراحل التدريب والصور التوضيحية (Training Stages)

🖼️ 1. المرحلة الأولى: التوليد الأولي من الصفر (Base Generation)

  • الشرح: نتائج التدريب الأولي لـ UNet2D من الصفر (120 دورة بمعدل تعلم $1 \times 10^{-4}$). تظهر الصور بشكل ضبابي وبقع ملونة غير محددة الملامح، وهي مرحلة إثبات قدرة النموذج على تعلم توزيع الألوان المائية واستيعاب الضوضاء.

image (7)


🖼️ 2. المرحلة الثانية: تحديد الملامح والهيكل (Structural Fine-Tuning)

  • الشرح: نتائج الضبط الدقيق الأول (100 دورة بمعدل تعلم $5 \times 10^{-5}$). تمكن النموذج في هذه المرحلة من الانتقال من الضبابية إلى تشكيل هياكل صريحة وأجسام محددة للأسماك مع بروز الزعانف والشكل العام.

image (12)


🖼️ 3. المرحلة الثالثة: ضبط الإضاءة والتباين النهائي (Lighting Refinement)

  • الشرح: النتيجة النهائية للنموذج بعد الضبط الدقيق للإضاءة (80 دورة بمعدل تعلم $1.5 \times 10^{-5}$ مع معالجات ColorJitter). تظهر الصور تبايناً عالياً، وحوافاً حادة، وانعكاسات ضوئية ممتازة دون حدوث حفظ ظاهري (Overfitting).

image (9)


💻 كود التوليد والتشغيل (Python)

import torch
from diffusers import DDPMPipeline
from PIL import Image

device = "cuda" if torch.cuda.is_available() else "cpu"
model_path = r"C:\Path\To\Your\Model_Folder"

pipeline = DDPMPipeline.from_pretrained(model_path).to(device)
images = pipeline(batch_size=64, num_inference_steps=75).images

canvas = Image.new('RGB', (512, 512))
idx = 0
for r in range(8):
    for c in range(8):
        canvas.paste(images[idx], (c * 64, r * 64))
        idx += 1

canvas.save("output_windows.png")
canvas.show()

ملاحظة: في السطر الخامس استبدل C:\Path\To\Your\Model_Folder بالمسار الحقيقي للمجلد الذي ينتهي بملفات النموذج على جهازك.

كود لجوجل كولاب

import os
import shutil
import torch
from diffusers import DDPMPipeline
from PIL import Image
from google.colab import files

device = "cuda" if torch.cuda.is_available() else "cpu"
model_path = "/content/AI_Fish_Model"

if not os.path.exists(model_path) or not os.listdir(model_path):
    os.makedirs(model_path, exist_ok=True)
    uploaded = files.upload()
    for filename in uploaded.keys():
        shutil.move(filename, os.path.join(model_path, filename))

pipeline = DDPMPipeline.from_pretrained(model_path).to(device)
images = pipeline(batch_size=64, num_inference_steps=75).images

canvas = Image.new('RGB', (512, 512))
idx = 0
for r in range(8):
    for c in range(8):
        canvas.paste(images[idx], (c * 64, r * 64))
        idx += 1

canvas.save("output_colab.png")
canvas.show()
Downloads last month
19
Safetensors
Model size
17.2M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using HRFYTRE45E/ddpm-fish-generation-64 1