تکمیل DeepSORT و Hungarian Matching
DeepSORT برای Map کردن Detectionهای جدید به Trackهای موجود از Hungarian Algorithm استفاده میکند. Cost Matching ترکیبی از فاصله با Position پیشبینیشدهٔ Kalman Filter و اختلاف Appearance Embedding است. Hungarian Algorithm مجموعهٔ Assignmentهایی را پیدا میکند که Cost کل را کمینه کند.
مثال کتاب دو توپ قرمز و آبی را در نظر میگیرد که به هم برخورد میکنند و جهتشان عوض میشود. Kalman Filter با فرض Motion تقریباً ثابت ممکن است پیشبینی کند دو توپ از میان هم عبور میکنند. اگر Matching فقط Position را ببیند، Identityها جابهجا میشوند؛ Appearance Similarity کمک میکند Detection قرمز به Track قرمز و آبی به Track آبی متصل شود.
Semantic Segmentation
در Semantic Segmentation بهجای Bounding Box، هر Pixel بر اساس Class Object خود طبقهبندی میشود؛ مثل Road، Car، Pedestrian، Building و Bicycle. Objectهای مختلف یک Class از هم جدا نمیشوند؛ همهٔ Bicycleها یک Class Map مشترک دارند.
شکل 14-27. Semantic Segmentation
چالش اصلی این است که CNN معمولی در مسیر Downsampling، Resolution مکانی را از دست میدهد. Layerهای Strided و Pooling ممکن است Feature Map نهایی را مثلاً ۳۲ برابر کوچکتر از Input کنند. برای Segmentation باید Output دوباره به Resolution Image برگردد.
Upsampling با Transposed Convolution
روش Fully Convolutional Network ابتدا Classifier Pretrained را به FCN تبدیل میکند، سپس Feature Map کمResolution را Upsample میکند. Bilinear Interpolation برای Scale کوچک مناسب است، اما Scale بزرگ مانند ×32 جزئیات کافی ندارد. Transposed Convolution Layer قابلTrainی است که Spatial Size را افزایش میدهد.
شکل 14-28. Upsampling با Transposed Convolution
میتوان آن را اینگونه تصور کرد: ابتدا میان Pixelهای Input Row/Column صفر درج میشود، سپس Convolution معمول اجرا میشود. در Keras از Conv2DTranspose استفاده میشود. برخلاف Conv معمولی، Stride بزرگتر در Transposed Convolution Output بزرگتری میسازد.
Convolutionهای دیگر Keras
Conv1D برای Signal/Sequenceهای یکبعدی مانند Time Series و Text؛
Conv3D برای Volumeهای سهبعدی مانند Scan پزشکی؛
- Dilated Convolution با
dilation_rate > 1 که میان Weightهای Kernel فاصله میاندازد و Receptive Field را بدون Parameter اضافی بزرگ میکند.
برای مثال Kernel یکبعدی [1,2,3] با Dilation Rate برابر ۴ معادل [1,0,0,0,2,0,0,0,3] از نظر Position Sampleهاست؛ در پیادهسازی واقعی Zero Weightها صریح ذخیره نمیشوند.
Skip Connection برای بازیابی جزئیات
Upsample مستقیم ×32 هنوز خشن است. FCNهای بهتر از Feature Mapهای Layerهای پایینتر که Resolution بیشتری دارند Skip Connection میگیرند. مسیر نمونه: Output شبکه ×2 Upsample میشود، با Feature Map متناظر Layer پایین جمع میشود، دوباره ×2 Upsample و با Layer پایینتر دیگری جمع میشود، سپس ×8 Upsample میگردد.
شکل 14-29. بازیابی Resolution با Skip Layerها
این اتصالها Detail مکانی از دسترفته را بازیابی میکنند. ایدهٔ مشابه در Architectureهای Segmentation مدرن بسیار رایج است. Upsampling حتی میتواند فراتر از Resolution Input برود و برای Super-Resolution استفاده شود.
Instance Segmentation
در Instance Segmentation Objectهای مختلف یک Class از هم جدا میشوند؛ یعنی هر Bicycle Mask مستقل دارد. Mask R-CNN Faster R-CNN را با یک Head اضافی گسترش میدهد که برای هر Bounding Box یک Pixel Mask تولید میکند. بنابراین خروجی شامل Bounding Box، Class Probability و Mask دقیق Object است. Modelهای Pretrained این Family برای Datasetهایی مانند COCO در Hubها و Frameworkهای مختلف موجودند.
Deep Computer Vision بهسرعت در حال تغییر است. CNNها هنوز بخش بزرگی از Foundation را تشکیل میدهند، ولی Transformerها نیز وارد Vision شدهاند. موضوعهای پیشرفته شامل Adversarial Robustness، Explainability، Image Generation، Few/One-Shot Learning، Video Prediction و Modelهای Multimodal Text+Image هستند.
تمرینهای فصل ۱۴
- مزیتهای CNN نسبت به Fully Connected DNN برای Image Classification را توضیح دهید.
- برای CNN سهلایه با Kernelهای 3×3، Stride=2 و Same Padding، با 100/200/400 Feature Map و Input RGB با اندازهٔ 200×300، تعداد Parameter و حداقل RAM موردنیاز برای Inference و Training روی Batch پنجاهتایی را محاسبه کنید.
- اگر GPU هنگام Training CNN با Out-of-Memory مواجه شد، حداقل پنج راه برای کاهش Memory پیشنهاد کنید.
- چرا ممکن است Max Pooling را به Conv با Stride مشابه ترجیح دهید؟
- Local Response Normalization چه کاربردی داشت و چرا امروز کمتر استفاده میشود؟
- نوآوریهای اصلی AlexNet نسبت به LeNet-5 و سپس GoogLeNet، ResNet، SENet، Xception و EfficientNet را مقایسه کنید.
- Fully Convolutional Network چیست و Dense Layer چگونه به Conv Layer معادل تبدیل میشود؟
- مشکل فنی اصلی Semantic Segmentation چیست؟
- یک CNN از ابتدا برای MNIST بسازید و Accuracy را تا حد ممکن افزایش دهید.
- برای Image Classification بزرگ از Transfer Learning استفاده کنید: حداقل ۱۰۰ Image برای هر Class جمعآوری کنید، Train/Validation/Test Split بسازید، Input Pipeline و Data Augmentation را طراحی و یک Model Pretrained را Fine-Tune کنید.
- Tutorial رسمی TensorFlow Style Transfer را اجرا کنید و با ترکیب Content و Style Imageها خروجی هنری بسازید.
راهحل تمرینها در Notebook فصل در https://homl.info/colab3 ارائه شده است.