قراية
وضع الحكايات

تطبيقات الـ CNNs (الشبكات التلافيفية)

~22 دقيقة قراية الدرس 3 من 3 في الوحدة 7

من البحث للدنيا الحقيقية

الدرسين اللي فاتوا بنوا الآلية الأساسية: الـ convolutions، والـ pooling، والعمق، والـ skip connections. دلوقتي هنشغّل الآلية دي في الواقع. الـ convolutional networks (الشبكات التلافيفية) بتشغّل شوية من أكتر التقنيات تأثيرًا المنتشرة النهارده — من الكاميرا اللي في موبايلك لحد الأجهزة اللي بتقرا صور الأشعة. وإنك تفهم خريطة التطبيقات بيكشف مش بس الـ CNNs بتعمل إيه، لكن إزاي أفكار الـ architecture اللي اتعلّمتها بتتحوّل لقرارات تصميم على مستوى النظام.

الـ pipeline الأساسي بتاع الـ CNN — تعلّم مزايا هرمية، وتقليص الأبعاد المكانية، والـ classification — بيتعمّم كتير أبعد من الـ image classification العادي. بالـ output head الصح، والـ loss function المناسبة، واستراتيجية البيانات الملائمة، نفس الـ backbone يقدر يكشف objects، أو يقسّم pixels، أو يتعرّف على الوشوش، أو حتى يعالج الصوت. والفكرة الأساسية إن الـ features هي representations، وإن مهام إدراك كتير بتتلخّص في "طلّع representation كويس، وبعدين حل مسألة أبسط فوقه."

الـ image classification على نطاق واسع

الـ image classification (تصنيف الصور) هو المهمة النموذجية للـ CNNs: تدّيها صورة، تتنبأ بالفئة اللي تبعها. والـ output بيبقى توزيع احتمالي على C فئة، طالع من تطبيق softmax على درجات آخر fully connected layer. والتدريب بيستخدم الـ cross-entropy loss: −Σc yc log pc، وyc بتساوي 1 للفئة الحقيقية و0 غير كده.

وعلى نطاق الإنتاج، أنظمة الـ classification لازم تتعامل مع datasets ضخمة، وعدم توازن الفئات، والـ distribution shift بين التدريب والنشر. والـ data augmentation — random crop، وflip، وتشويه الألوان، وmixup، وcutout — بيشتغل كـ regularizer وبيحسّن الـ generalization. والـ label smoothing (تنعيم التسمية) بيبدّل الـ targets اللي one-hot بتوزيعات ناعمة (مثلًا 0.9 للفئة الحقيقية و0.1/C متوزّعة على كل الفئات)، وده بيمنع الـ model من الثقة الزيادة وبيحسّن المعايرة.

دقة الـ top-1 قصاد الـ top-5

معايير ImageNet بتبلّغ بدقة الـ top-1 (الـ prediction الأعلى احتمال صح) ودقة الـ top-5 (الفئة الصح بتظهر ضمن أعلى خمس predictions). والـ top-5 كان المقياس الأساسي في مسابقات ImageNet الأولانية. وغلط البني آدم في الـ top-5 حوالي 5%؛ والـ ResNet-50 بيوصل لحوالي 7.5%، والـ models الحديثة بتنزّل النسبة دي لأقل من 2%.

الـ object detection: التحديد والتصنيف

الـ classification بيسأل "إيه اللي في الصورة دي؟" أما الـ detection فبيسأل "إيه اللي في الصورة دي، وفين؟" والـ output مجموعة bounding boxes (مربعات إحاطة)، كل واحد معاه class label ودرجة ثقة. والتحدي إن عدد الـ objects مش معروف من الأول، وإن الـ objects بتختلف جامد في الحجم ونسبة الأبعاد والمكان.

الطرق الأولانية استخدمت sliding windows: تشغّل classifier على كل شباك فرعي ممكن بكل حجم على الصورة. وده مستحيل حسابيًا على الصور الكبيرة، فالمجال راح لـ الـ region proposal networks. والـ Faster R-CNN (رن وزمايله، 2015) بيستخدم backbone convolutional مشترك يطلّع feature map، وبعدين region proposal network بتقترح bounding boxes مرشّحة على الخريطة دي. والمناطق المقترحة بعد كده بتتصنّف وتتظبط بالتوازي.

والـ YOLO (You Only Look Once، ريدمون وزمايله، 2016) مشي بطريقة مختلفة خالص: صاغ الـ detection كمسألة regression واحدة. قسّم الصورة لـ grid S×S؛ وكل خلية بتتنبأ بـ B bounding box واحتمالات C فئة في نفس الوقت في forward pass واحد. والـ YOLO أسرع بكتير من الـ detectors اللي بمرحلتين وبيوصل لأداء real-time (أكتر من 45 frame في الثانية).

الـ intersection over union (IoU)
\text{IoU} = \frac{|A \cap B|}{|A \cup B|}
الـ IoU بيقيس الـ bounding box المتوقع بيتداخل مع الحقيقي قد إيه. الـ prediction اللي الـ IoU بتاعه أكتر من 0.5 بيتحسب صح بشكل مقبول؛ وIoU ≥ 0.75 معيار أصعب. والـ mean average precision (mAP) بيجمع الـ precision والـ recall المتحدّدين بـ threshold IoU على كل الفئات.
الـ non-maximum suppression (NMS)

الـ detectors كتير بتطلّع bounding boxes متداخلة كتير لنفس الـ object. والـ non-maximum suppression (قمع غير الحد الأقصى) (NMS) بيعالج ده: احتفظ بالـ box الأعلى ثقة، واقمع كل الـ boxes التانية اللي بتتداخل معاه أكتر من threshold (مثلًا IoU > 0.5)، وعيد. والـ NMS خطوة post-processing بتتطبّق بعد output الشبكة، ومش بتتعلّم.

الـ semantic segmentation والـ instance segmentation

الـ semantic segmentation (التجزئة الدلالية) بتنزل لمستوى الـ pixel: بتحط class label لكل pixel في الصورة. وده محتاج الشبكة تطلّع output بنفس الدقة المكانية بتاعة الـ input — عكس الـ classification اللي بيضغط المعلومات المكانية في vector واحد. والحل هو architecture encoder–decoder: الـ encoder (CNN عادي) بيقلّص الدقة المكانية تدريجيًا ويعلّي عدد الـ channels؛ والـ decoder بيعكس ده بإنه يعمل upsampling للـ feature maps عشان يرجّع الدقة الكاملة.

والـ fully convolutional networks (FCN) (لونج وزمايله، 2015) بدّلت الـ FC layers في الـ CNN بـ convolutional layers 1×1، وده بيسمح بـ predictions لكل مكان في نفس الوقت. والـ upsampling بيتعمل بـ transposed convolutions أو bilinear interpolation. والـ skip connections بتتزوّد من feature maps الـ encoder لـ feature maps الـ decoder عند الدقات المتطابقة عشان تحافظ على التفاصيل المكانية الدقيقة.

والـ U-Net (رونبرجر وزمايله، 2015) أخدت الفكرة دي لأبعد حد، وبقت الـ architecture المسيطرة في segmentation الصور الطبية. الـ encoder–decoder المتماثل بتاعها فيه skip connections في كل مستوى دقة، بتربط feature maps الـ encoder على طول بخرائط الـ decoder المقابلة. وده بيخلّي الـ decoder يجمع بين المعلومات الدلالية العالية المستوى والتفاصيل المكانية الواطية المستوى.

الـ semantic segmentation قصاد الـ instance segmentation

الـ semantic segmentation بتدّي نفس الـ label لكل pixels نفس الفئة — كل العربيات "عربية" حتى لو متداخلة. أما الـ instance segmentation (تجزئة المثيلات) فبتفرّق بين الـ objects الفردية: العربية رقم 1 والعربية رقم 2 بياخدوا masks مختلفة. والـ Mask R-CNN (هي وزمايله، 2017) بيوسّع الـ Faster R-CNN بفرع بيتنبأ بالـ mask شغّال بالتوازي مع فرعين الـ classification والـ bounding box.

التعرّف على الوشوش والـ metric learning

التعرّف على الوشوش بيختلف عن الـ classification العادي بشكل أساسي: مجموعة الهويات وقت النشر مش بتبقى ثابتة أثناء التدريب. نظام فتح قفل الموبايل لازم يتعرّف على صاحبه — الشخص اللي مش في بيانات التدريب. والـ softmax classification العادي مبيقدرش يعمّم على هويات مشافهاش.

والحل هو الـ metric learning (التعلم المتري): درّب الـ CNN تطلّع embedding vector بحيث وشوش نفس الشخص تبقى قريبة في فضاء الـ embedding ووشوش الناس المختلفين تبقى بعيدة. والـ FaceNet (شروف وزمايله، 2015) بيستخدم الـ triplet loss (خسارة الثالوث): لكل وش anchor a، ومثال positive p (نفس الهوية)، ومثال negative n (هوية مختلفة)، الـ loss بتعاقب الحالات اللي مسافة الـ anchor–negative فيها مش أكبر من مسافة الـ anchor–positive بـ margin α على الأقل.

الـ triplet loss
\mathcal{L} = \max\!\left(0,\; \|f(a)-f(p)\|^2 - \|f(a)-f(n)\|^2 + \alpha\right)
الـ triplet loss بتزق مسافة الـ anchor–positive تحت مسافة الـ anchor–negative بـ margin α. والـ max(0, ·) بتضمن إن الـ loss صفر لما الشرط يبقى متحقق أصلًا. والـ hard negative mining — اختيار الـ negatives الأكتر لخبطة في كل mini-batch — ضروري عشان التقارب يبقى كفء.

والـ ArcFace (دينج وزمايله، 2019) بيحسّن على الـ triplet loss بإنه يزوّد angular margin على الـ softmax loss أثناء التدريب. فبيخلّي الـ embeddings من نفس الفئة تتجمّع بإحكام حوالين مركز فئة بيتعلّم على الـ hypersphere. والـ ArcFace بيوصل لدقة تقريبًا مثالية على معيار LFW.

الـ style transfer: فصل المحتوى عن الأسلوب

كل التطبيقات اللي فاتت تمييزية: الشبكة بتبلع صورة وتطلّع label أو box أو mask. والـ style transfer (نقل النمط) بيقلب الترتيب ده. الشبكة بتتجمّد والصورة هي اللي بتتحسّن — والنتيجة أوضح دليل موجود على اللي سلسلة الـ features في الدرسين 7.1 و7.2 بتشفّره فعلًا.

جاتيس وزمايله (2016) لاحظوا إن قرايتين مختلفتين لنفس الـ activations بيمسكوا خاصيتين منفصلتين. خد feature maps الـ layer Fℓ، بعدد channels Nℓ مفرودة لـ Mℓ مكان لكل واحدة. اقراها على طول تاخد المحتوى: أنهي بنيات موجودة وفين، لأن المكان محفوظ. أما الـ Gram matrix (مصفوفة غرام) فحاجة تانية — الترابط بين كل جوز channels، متجمّع على كل الأماكن. والجمع على المكان هو اللي بيشيل فين وبيسيب أنهي features بتيجي مع بعض: الملمس، وضربة الفرشة، والباليتة. ودي الأسلوب.

الـ Gram matrix لـ feature layer
G^{\ell}_{ij} = \sum_{k} F^{\ell}_{ik} F^{\ell}_{jk}
العنصر (i, j) هو الـ inner product بين الـ channel i والـ channel j على كل أماكن الـ layer ℓ اللي عددها Mℓ. والجمع على k هو اللي بيطرح التوزيع المكاني — صورتين ليهم نفس الـ Gram matrix بيتشاركوا إحصائيات ملمس، مش ترتيب. ومطابقة الـ Gram matrices على كذا layer بتعيد إنتاج الأسلوب على كذا مقياس مرة واحدة.

والتوليد بعد كده gradient descent عادي بمتغيّر مش معتاد. ثبّت الـ weights الـ pretrained، وابدأ من noise أو من صورة المحتوى، واعمل gradient descent على الـ pixels عشان تصغّر مجموع موزون: حد المحتوى، وهو مربع الفرق بين activations الصورة المتولّدة العميقة وactivations صورة المحتوى، زائد حد الأسلوب، وهو مربع الفرق بين الـ Gram matricesين. والنسبة α/β هي الزرار الجمالي الوحيد — علّيها تنجو الصورة الفوتوغرافية، ونزّلها تسيطر اللوحة.

الطريقة الأصلية بطيئة: كل صورة طالعة محتاجة مئات الـ forward والـ backward passes، يعني دقايق على GPU بتاع الوقت ده. وشغلين بعدها شالوا التكلفة دي. جونسون وزمايله (2016) درّبوا feedforward network على نفس الـ perceptual loss، فحوّلوا الـ optimization لـ pass واحد بتمن شبكة متدرّبة لكل أسلوب. والـ AdaIN (هوانج وبيلونجي، 2017) راح أبعد: طابق متوسط الـ features والـ variance بتاعها لكل channel بين المحتوى والأسلوب، فأساليب عشوائية بتشتغل في pass واحد من غير تدريب لكل أسلوب. والـ AdaIN بيرجع في الوحدة 11 كآلية تحكّم جوه الـ generative models — نفس العامل، بوظيفة تانية.

ليه ده في درس التطبيقات. الـ style transfer بيتشحن في كاميرات الموبايلات ومحرّرات الصور، بس مساهمته الأبقى تشخيصية. المحتوى والأسلوب مش متشابكين في حتة جوه الشبكة: الاتنين ينفع يتطلّعوا من نفس الـ activations بملخّصين مختلفين، واحد بيحافظ على المكان والتاني بيشيله. وسلسلة هرمية بتسمح بالفصل ده مش الصندوق الأسود اللي تعبير «الـ deep features» بيوحي بيه.

التصوير الطبي: إدراك مخاطره عالية

التصوير الطبي من أكتر المجالات اللي الـ CNNs ليها فيها تأثير. دكاترة الأشعة بيقروا أشعة الصدر، وشرايح الـ histopathology، ومسح الشبكية، وأحجام الرنين المغناطيسي. والـ CNNs أثبتت أداء بيساوي الدكاترة أو بيعدّيهم في مهام ضيقة ومحدّدة: اكتشاف اعتلال الشبكية السكري، وتحديد الالتهاب الرئوي، وتصنيف آفات الجلد.

والتحديات مختلفة عن تصنيف الصور الطبيعية. الـ datasets الطبية صغيرة (آلاف مش ملايين من العيّنات اللي ليها labels). وعدم توازن الفئات حاد — الحالات الـ positive للمرض نادرة. والـ annotations غالية ومحتاجة خبرة إكلينيكية. والـ distribution shift بين المستشفيات (نوع الجهاز، بروتوكول التصوير، نوعية المرضى) منتشر وبيأذي الـ models المنشورة.

مثال الـ CheXNet

الـ CheXNet (راجبوركار وزمايله، 2017) درّب DenseNet-121 على 112,120 صورة أشعة صدر عليها labels لـ 14 تشخيص. وفي كشف الالتهاب الرئوي، الـ CheXNet عدّى متوسط أداء أربع دكاترة أشعة. والشغل ده فتح نقاش عن إزاي نقيّم الـ AI قصاد الدكاترة، وإيه المقاييس الصح.

الـ U-Net وأنواعها مسيطرين على segmentation الصور الطبية: تحديد حدود الأورام في الرنين المغناطيسي، وتتبّع الأوعية في صور الشبكية، وتقسيم الأعضاء. والـ 3D U-Net بتوسّع الـ architecture للـ inputs الحجمية (أحجام CT/MRI) بـ convolutions في تلات أبعاد.

أبعد من الرؤية: الـ CNNs للصوت والنص

عملية الـ convolution مش بصرية في جوهرها — هي بتطلّع patterns محلية من أي input منظّم. في معالجة الصوت، الـ short-time Fourier transform (STFT) بيحوّل الموجة الصوتية اللي في بُعد واحد لـ spectrogram (طيف) في بُعدين: التردد على محور، والزمن على التاني. وتطبيق CNN على التمثيل ده بيعامل الصوت كصورة، ويستفيد من نفس آلية تعلّم الـ features.

والـ 1D convolutions بتتزحلق على المحور الزمني للموجات الصوتية الخام أو sequences الـ features. والـ WaveNet (فان دن أورد وزمايله، 2016) استخدم dilated causal 1D convolutions عشان يعمل modeling للصوت الخام بمعدل 16 كيلوهرتز بـ receptive fields بتمتد لثواني — وطلّع توليد كلام بجودة استثنائية. وفي الـ NLP، الـ TextCNN (كيم، 2014) طبّق 1D convolutions بعروض filters كتير (2، 3، 4 كلمات) لتصنيف الجمل.

الـ dilated convolutions

الـ dilated convolution (التلافيفة المُمدَّدة) بتحط فجوات من r−1 أصفار بين عناصر الـ filter، فبتوسّع الـ receptive field أُسّيًا من غير ما تزوّد عدد الـ parameters أو تخسر دقة. filter عرضه 3 بـ dilation rate r = 4 بيغطّي 9 أماكن. ورص dilated convolutions بمعدلات بتزيد (1، 2، 4، 8، 16) بيدّي receptive fields كبيرة جدًا بتكلفة حسابية قليلة.

النشر: الـ edge قصاد الـ cloud

الـ CNN المتدرّبة لازم تتنشر في المكان اللي محتاجها. النشر على الـ cloud بيشغّل الـ inference على server بـ GPU. والنشر على الـ edge بيشغّل الـ inference على الجهاز نفسه (موبايل، كاميرا، نظام مدمج) — latency قليلة، وبيشتغل من غير نت، بس متقيّد بالـ memory والحساب والبطارية.

والنشر على الـ edge محتاج model compression. الـ quantization (التكميم) بيقلّل دقة الـ weights من floating point 32 bit لـ integer 8 bit (INT8)، فبيصغّر حجم الـ model 4 مرات. والـ pruning (التشذيب) بيشيل weights أو channels كاملة قيمتها تحت threshold. والـ knowledge distillation (تقطير المعرفة) بيدرّب شبكة "student" صغيرة تقلّد outputs الاحتمالات الناعمة بتاعة شبكة "teacher" كبيرة.

والـ MobileNet (هاورد وزمايله، 2017) بدّلت الـ convolutions العادية بـ depthwise separable convolutions: filter مكاني بيتطبّق لوحده على كل channel (depthwise convolution) وبعده convolution 1×1 بيخلط الـ channels (pointwise convolution). وده بيقلّل الحساب حوالي 8–9 مرات للـ filters 3×3 بخسارة بسيطة في الدقة.

أهم الاستنتاجات
  • الـ image classification بيستخدم softmax والـ cross-entropy loss. والـ data augmentation والـ label smoothing بيحسّنوا الـ generalization والمعايرة. والمعايير المعتادة: دقة الـ ImageNet top-1، وغلط البني آدم في الـ top-5 حوالي 5%.
  • الـ object detection بيتنبأ بالـ bounding boxes والـ labels بتاعتها في نفس الوقت. الـ detectors اللي بمرحلتين (Faster R-CNN) دقيقة بس بطيئة؛ واللي بمرحلة واحدة (YOLO) سريعة ومناسبة للـ real-time. والـ IoU والـ mAP بيقيسوا جودة الـ detection.
  • الـ semantic segmentation بتدّي فئة لكل pixel باستخدام شبكات encoder–decoder مع skip connections. والـ U-Net هي الـ architecture المسيطرة في الـ segmentation الطبي. والـ instance segmentation (Mask R-CNN) بتفرّق كمان بين الـ objects الفردية.
  • التعرّف على الوشوش محتاج metric learning (الـ triplet loss، الـ ArcFace) عشان الـ model يعمّم على هويات مشافهاش. والهدف فضاء embedding وشوش نفس الهوية فيه متجمّعة بإحكام ووشوش الهويات المختلفة بعيدة.
  • الـ CNNs بتتعمّم أبعد من الصور: الـ spectrograms بتسمح بتصنيف الصوت، والـ dilated 1D convolutions بتعمل modeling للموجات الصوتية (WaveNet)، والـ 1D CNNs بتعالج تصنيف النصوص بكفاءة.
  • النشر على الـ edge محتاج model compression: الـ quantization (INT8)، والـ pruning، والـ knowledge distillation، والـ depthwise separable convolutions (MobileNet) بيقلّلوا الحساب والـ memory عشان يناسبوا ميزانيات الأجهزة الضيقة.
اللي فات الـ CNN architecture (بنية الشبكة التلافيفية) نظرة عامة الوحدة التالية الـ sequence modeling (نمذجة التسلسل)