طراحی لبخند با هوش مصنوعی؛ از جداسازی دندان تا سفیدکردن و صافکردن
سامانهی پیشنمایش لبخند برای دندانپزشکی زیبایی: جداسازی دندان با YOLO، SAM و U²-Net، اصلاح رنگ و بافت، پیشبینی ترازبندی و روشهای مولد؛ همراه با تحقیق و مقایسهی روشها.
معرفی
این پروژه یک سامانهی پیشنمایش طراحی لبخند برای دندانپزشکی زیبایی است. بیمار یک عکس معمولی از لبخند خودش میدهد و سامانه در چند ثانیه نشان میدهد دندانهایش بعد از سفیدکردن، رنگگیری و صافشدن چگونه میشوند، با حفظ باقی چهره. هدف این است که پزشک و بیمار پیش از درمان دربارهی نتیجه به تصور مشترک برسند. این پروژه را در سال ۲۰۲۵ ساختم و یک دموی آن روی medical.alipour.me هست.
بخش بزرگ کار، تحقیق و آزمایش بود: برای هر مرحله چند مقاله خواندم، چند روش را ساختم و مقایسه کردم. در این صفحه همهی روشهایی که آزمایش کردم و راه ساخت سامانه را توضیح میدهم. عکسهای این صفحه از آزمایشهای خود من و از دادهی آزمایشی است.
نتیجهها
در تصاویر بالای صفحه، عکس اصلی سمت چپ و خروجی سامانه سمت راست است. سامانه فقط دندانها را عوض میکند و بقیهی چهره، پوست، مو و پسزمینه دستنخورده میماند.
مسئله چه بود
باید دندان را در عکسی که با گوشی گرفته شده پیدا کرد، دقیق جدا کرد (مرز دندانها کنار هم، لثه و لب)، رنگ و بافت را طبیعی تغییر داد، و در صورت لزوم دندانهای کج را صاف کرد، بدون اینکه چهره «مصنوعی» شود. هر کدام از اینها مسئلهی جدایی است و برای هر کدام چند روش را امتحان کردم.
مرحلهی ۱: پیدا کردن دهان
تحلیل چهره (Face Parsing): با مدل BiSeNet که هر پیکسل چهره را به ۱۹ بخش (لب، پوست، دندان، مو و …) میشکند، ناحیهی دهان را پیدا میکنم و با حاشیهی درصدی از عکس میبرم تا کار روی تصویر کوچک و پرجزئیات انجام شود. بعد از پردازش، نتیجه با ترکیب نرم سر جایش گذاشته میشود.
پیش از آن، روشهای قدیمیتر مثل نقاط ۶۸گانهی dlib و MediaPipe Face Mesh و تشخیص دهان به روش کلاسیک را هم امتحان کردم. برای کجبودن عکس هم زاویهی دهان را از ماسک حساب میکنم و ماسک را میچرخانم.
مرحلهی ۲: جداسازی دندانها (سگمنتیشن)
بیشترین زمان را همین مرحله گرفت، چون همهچیز به ماسک دقیق دندانها وابسته است. تصاویر ۷ و ۸ خروجی این مرحله را نشان میدهند: هر دندان با مرز خودش، حتی کج و روی هم افتاده.
ساخت داده. بیش از ۷۰۰ عکس دندان با برچسب چندضلعی (فرمت COCO) آماده کردم و برنامهای برای تبدیل برچسب به ماسک، حذف جفتهای ناجور، یکسانکردن اندازه و افزایش داده (Augmentation) نوشتم. با افزایش داده، مجموعهی آموزش به حدود ۵۰۰۰ تصویر رسید، همراه با دادهی اعتبارسنجی و آزمون جدا.
U²-Net و U²-Net-P. یک شبکهی U-Net برای جداسازی را از صفر آموزش دادم، هم نسخهی کامل و هم نسخهی سبک، با معیارهای دقت، بازیابی و IoU و منحنی خطا. هم با یک کلاس (دندان) و هم چندکلاسه (دندانهای جدا) امتحان کردم.
YOLO11 در حالت سگمنتیشن. نسخههای n و m و x را روی همان داده آموزش و تنظیم دقیق کردم، و خروجی را به ONNX هم تبدیل کردم. YOLO سریع است و هر دندان را جدا بهصورت یک شیء پیدا میکند.
SAM (Segment Anything) و SAM-HQ. جعبهی هر دندان از YOLO به SAM داده میشود تا مرز دقیق دندان را بدهد. نسخهی سبک و موبایلی آن را هم برای سرعت امتحان کردم. ترکیب «YOLO پیدا میکند، SAM دقیق میبرد» مرزهای دقیقتر از هرکدام بهتنهایی میدهد.
مقالههای جداسازی. روشهای SegmentAnyTooth و جداسازی تکتک دندان با لبهی کاذب (pseudo edge-region) را خواندم و آزمایش کردم و از آنها برای شمارش و شمارهدادن دندانها الهام گرفتم.
مرحلهی ۳: رنگ و بافت
اصلاح رنگ (تصویر ۱۳). دندانها در فضای رنگ HLS و HSV تحلیل میشوند: اول زردی کم میشود، بعد سرخی لثهای که روی لبهی دندان افتاده، با دامنههای رنگ و اشباع قابلتنظیم. چون فقط داخل ماسک کار میشود، لب و لثه رنگ نمیخورند.
بافت مینا. یک بافت واقعی دندان (با نیمشفافی لبه و سایهی نرم) با ماسک محو و حالتهای ترکیب مختلف روی دندان گذاشته میشود تا دندان تخت و «پلاستیکی» دیده نشود. بعد جزئیات و روشنایی طبیعی دوباره به آن برمیگردد.
دندانهای پیشین (ثنایا). چون چشم به تقارن دو دندان جلو حساس است، تناسب آنها را اندازه میگیرم (مثلا نسبت دندان چپ و راست) و شکل را اصلاح میکنم.
برای هر مرحله پیشتنظیم (Preset) ساختم که پزشک بتواند عوض کند، و یک نسخهی «پیشفرض سرور» و یک نسخهی «تنظیمات من» در دمو هست.
مرحلهی ۴: صاف کردن دندانها (ترازبندی)
پیشبینی ظاهر دندان بعد از ارتودنسی در عکس دوبعدی. مقالههای iOrthoPredictor (SIGGRAPH Asia)، شبکهی هدایتشده با ساختار سهبعدی و OrthoAligner را خواندم و روش آنها را پیاده کردم: ابتدا کانتور دندانهای کج به کانتور تراز تبدیل میشود (Contour2Contour) و بعد از روی کانتور تراز، تصویر دندان با رنگ چهره و روشنایی ساخته میشود (Contour2Tooth)، با یک مدل مولد از نوع Diffusion. تصاویر ۹ تا ۱۲ «قبل» و «بعد» این مرحله هستند.
مرحلهی ۵: روشهای مولد (Diffusion و Inpainting)
بهجای دستکاری رنگ، ناحیهی دندان را ماسک میکنیم و یک مدل مولد از نو میسازد. آزمایشها:
Stable Diffusion XL با نسخهی Inpainting، همراه با LoRA، SDXL Turbo برای سرعت، و مدلهای بهینهشده برای چهره (Juggernaut، DreamShaper).
Fooocus با Juggernaut XI، که یک سرور Flask جدا برایش ساختم و از دمو صدا میخورد.
Flux (FLUX.2) با گرافهای Inpainting در ComfyUI.
HD-Painter (Inpainting با پرامپتفهمی و کیفیت بالا) و Stable Diffusion 3 سریع.
pix2pix. جفتهای قبل و بعد را آماده کردم (کنار هم، ۵۱۲ پیکسل) تا یک شبکهی شرطی آموزش بدهم.
تفاوت کلی: روشهای مولد طبیعیترین بافت را میدهند ولی ممکن است شکل دندان یا بقیهی چهره را عوض کنند و کندترند؛ روش کلاسیک (ماسک دقیق و اصلاح رنگ) سریع و قابلکنترل است و چهره را سالم نگه میدارد. به همین دلیل مسیر اصلی را روی ماسک دقیق مرحلهی ۲ بنا کردم و روش رنگی یا مولد را فقط داخل ماسک بهکار میبرم.
اجرا و تحویل
سرویس Flask با Docker و پایهی CUDA، آمادهی اجرا روی RunPod (حالت بدونسرور با نقطهی پایانی
/invocations) و GPU از راه دور.برای ارتباط با کاربر یک سرور تونل و وباپ: دموی Next.js با React و Tailwind CSS، همراه با نمونهها، بارگذاری عکس و تنظیمات.
همچنین یک ابزار همترازکردن عکسهای قبل و بعد با MediaPipe برای مقایسهی عادلانه ساختم.
نمودار زیر مسیر کلی کار را نشان میدهد.
ابزار
Python، PyTorch، OpenCV، MediaPipe، dlib، Flask
YOLO11 (Ultralytics)، U²-Net، SAM و SAM-HQ، BiSeNet
Stable Diffusion XL، SDXL Turbo، Stable Diffusion 3، Flux، LoRA، Fooocus، ComfyUI، HD-Painter
Docker، CUDA، RunPod، Next.js، TypeScript
منابع علمی که خواندم
SegmentAnyTooth: An open-source deep learning framework for tooth enumeration and segmentation in intraoral photos. Journal of Dental Sciences, 2025.
Individual tooth segmentation in human teeth images using pseudo edge-region obtaining. Signal Processing: Image Communication, 2024.
iOrthoPredictor: Model-guided Deep Prediction of Teeth Alignment. ACM SIGGRAPH Asia, 2020.
3D Structure-guided Network for Tooth Alignment in 2D Photograph. Y. Dou et al.
OrthoAligner: Image-Based Teeth Alignment Prediction via Latent Style Manipulation. IEEE TVCG, 2023.
HD-Painter: High-Resolution and Prompt-Faithful Text-Guided Image Inpainting with Diffusion Models. arXiv:2312.14091.
نتیجه
یک سامانهی کامل از عکس معمولی تا پیشنمایش لبخند، ساختهشده از چند مرحلهی جدا (پیدا کردن دهان، جداسازی دندان، رنگ و بافت، صافکردن دندان، روش مولد) که هر کدام با چند روش آزمایش و مقایسه شد.
از من حمایت کنید
اگر این نوشتهها به کارتان آمد، با یک حمایت کوچک به ادامهی آنها کمک کنید.
گالری
وبلاگ
مطالب مرتبط
کاهش بیش از ۴ برابری هزینه ارزیابی Identity Resolution با ترکیب مدلهای تصمیمگیر و LLMهای پیشرو
راهنمای جامع استفاده از فایلهای SKILL.md در پلتفرمهای هوش مصنوعی
معرفی Gemini 4 Carbon: مدل پیشگام جدید گوگل در امنیت سایبری و برنامهنویسی
معرفی Jumper: ربات خرچنگی متنباز با ۲۲ درجه آزادی و قابلیت شخصیسازی با هوش مصنوعی
دربارهی این پروژه سوالی دارید؟
اگر دربارهی این پروژه سوالی دارید یا پروژهای مشابه در دست دارید، خوشحال میشوم با من در ارتباط باشید.