CutMix
ينقل CutMix رقعة مستطيلة من صورة تدريب إلى أخرى، ويمزج تسميتيهما وفق مساحة الرقعة، ما يحسن الدقة وتحديد المواقع.
CutMix تقنية لتوسيع البيانات تقص رقعة مستطيلة من صورة تدريب واحدة، وتلصقها فوق المنطقة نفسها في صورة أخرى، وتمزج تسميتي الصورتين بنسبة تتناسب مع المساحة التي تشغلها كل صورة. وقد قدمها Sangdoo Yun وزملاؤه في NAVER Clova AI Research في ورقة بحثية لمؤتمر ICCV عام 2019 باعتبارها تجمع بين فكرتين سابقتين: إزالة Cutout لمنطقة عشوائية ومزج MixUp للتسميات. وفي ImageNet، خفّض CutMix معدل خطأ أعلى 1% لنموذج ResNet-50 من 23.68% إلى 21.40%، متفوقًا على MixUp الذي بلغ 22.58% وCutout الذي بلغ 22.93%، كما حسّن النماذج المدربة مسبقًا باستخدامه أداءها عند نقل التعلم إلى اكتشاف الأجسام وإنشاء التسميات التوضيحية للصور.
آلية عمل CutMix#
لكل زوج من الصور A وB، يسحب CutMix نسبة مزج λ من توزيع بيتا، الذي يكون منتظمًا بين 0 و1 عند استخدام المعلمة الافتراضية α = 1. ثم يرسم مربعًا عرضه وارتفاعه يساويان عرض الصورة وارتفاعها مضروبين في √(1 − λ)، ويضع مركزه عند نقطة عشوائية، ويقصه عند حدود الصورة، ثم ينسخ تلك المنطقة من B إلى A. بعد القص، يعاد حساب λ بوصفه الكسر المتبقي من A، وتصبح التسمية λ جزءًا من A و(1 − λ) جزءًا من B؛ لذا تعطي رقعة قطة تغطي 30% من صورة لكلب هدفًا يتكون من 0.7 كلب و0.3 قطة. يقلل التدريب دالة الخسارة بالنسبة إلى هذه التسمية اللينة، بالطريقة نفسها المستخدمة في تنعيم التسميات.
تطبّق torchvision في PyTorch CutMix على دفعة كاملة، مع إقران كل صورة بالصورة المجاورة لها في الدفعة:
import torch
from torchvision.transforms import v2
# A batch of 4 random 224x224 images labeled with classes 0-3 of 10
torch.manual_seed(0)
images = torch.rand(4, 3, 224, 224)
labels = torch.tensor([0, 1, 2, 3])
# Paste a random box from each image's neighbor in the batch and mix the labels by area
cutmix = v2.CutMix(num_classes=10)
mixed_images, mixed_labels = cutmix(images, labels)
# Image 0 received its patch from image 3
pasted = (mixed_images[0] != images[0]).any(dim=0).float().mean()
print(f"pasted area: {pasted:.3f}")
print(f"label weights for classes 0-3: {mixed_labels[0, :4].numpy().round(3)}")يطبع الناتج مساحة ملصقة قدرها 0.187 وأوزان تسمية تبلغ 0.813 للفئة 0 و0.187 للفئة 3: إذ تساوي حصة الهدف المخصصة لكل فئة حصة البكسلات التي تسهم بها.
أسباب فاعلية CutMix#
قد ينجح نموذج تصنيف الصور المدرّب على صور كاملة من خلال التعرف على جزء صغير شديد التمييز، مثل وجه كلب. وعندما يغطي CutMix ذلك الجزء بصورة أخرى، يتعين على النموذج التعرف على الكلب من جسمه أو ساقيه أو فرائه، فيتعلم استخدام أجزاء أكثر من كل جسم، ما يحسن تحديد المواقع الخاضع للإشراف الضعيف والمتانة أمام الحجب. وتظل كل بكسلات الصورة الممزوجة مأخوذة من صورة حقيقية، لذا لا يتدرب النموذج مطلقًا على مناطق فارغة أو مزج شبحي. وكغيره من أساليب التوسيع القوية، يعمل CutMix بوصفه تنظيمًا يقلل فرط التكيّف، كما تطبّق وصفات التدريب الحديثة لـمحولات الرؤية (ViT)، ومنها الوصفة التي يقوم عليها أسلوب Data-efficient Image Transformers (DeiT) من Meta، CutMix وMixUp معًا.
CutMix وأساليب التوسيع ذات الصلة#
- MixUp: يمزج صورتين كاملتين بكسلًا بكسلًا بوزن λ، ويمزج تسميتيهما بالطريقة نفسها، ما ينتج تراكبات شبه شفافة لا تشبه أي مشهد حقيقي.
- Cutout: يحجب مربعًا عشوائيًا باستخدام أصفار ويحتفظ بالتسمية الأصلية، لذا لا تحمل البكسلات المحجوبة أي معلومات للتدريب.
- Mosaic: يرص أربع صور معاد تحجيمها في صورة واحدة، وهو أسلوب توسيع قياسي لتدريب كواشف الأجسام، يحافظ على تسمية الصندوق لكل جسم يظل ظاهرًا في الإطار.
- النسخ واللصق من أجل تقسيم الكائنات: يلصق حالات الأجسام المقسمة، بدلًا من المستطيلات، من صورة إلى أخرى.
CutMix في اكتشاف الأجسام#
يحتفظ الكشف بكل تسمية كما هي: فبدلًا من متجه فئات ممزوج، تُحفظ صناديق الصورتين حيث تظل أجسامهما ظاهرة. ويقبل أسلوب التوسيع cutmix في Ultralytics YOLO، المعطل افتراضيًا، احتمالًا بين 0 و1. ويختار تنفيذه منطقة قص لا تتداخل مع أي من الصناديق الموجودة في الصورة المستهدفة، وينسخ المنطقة نفسها من صورة ثانية، ويحتفظ بكل صندوق إحاطة ملصق يبقى 10% على الأقل من مساحته داخل المنطقة، أو 1% لتسميات التقسيم. يُعطّل CutMix مع Mosaic خلال آخر 10 حقب تدريب افتراضيًا، وفق الإعداد close_mosaic=10.










