حاشیه نویسی در یک مجموعه داده کیفی در مقیاس بزرگ به دلیل عدم قطعیت ناشی از حالتهای مبهم صورت، تصاویر چهره با کیفیت پایین و ذهنی بودن بسیار دشوار است. این عدم قطعیت ها منجر به یک چالش کلیدی در تشخیص بیان صورت[1] (FER)در مقیاس بزرگ در طول یادگیری عمیق می شود. برای حل این مشکل، این مقاله یک شبکه خود درمان ساده[2] (SCN) ساده و در عین حال کارآمد را پیشنهاد می کند که عدم قطعیت ها را به طور موثر سرکوب می کند و از قرار دادن بیش از حد شبکه های عمیق در تصاویر نامشخص چهره جلوگیری می کند. به طور خاص، SCN عدم قطعیت را از دو جنبه مختلف سرکوب می کند: 1) یک مکانیسم توجه به خود به منظور مقیاس کوچک برای وزن دهی به هر نمونه آموزشی با یک رتبه بندی منظم، و 2) یک مکانیزم احتیاط مجدد دقیق برای تغییر برچسب این نمونه ها در کمترین گروه رتبه بندی شده آزمایش بر روی مجموعه داده های مصنوعی FER و مجموعه داده WebEmotion جمع آوری شده، اثربخشی روش پیشنهادی را تأیید می کند. نتایج در معیارهای عمومی نشان می دهد که SCN ما با 88.14% در RAF-DB ، 60.23٪ در AffectNet و 89.35% در FERPlus نسبت به روشهای روز دنیا بهتر عمل می کند.
landmark-driven-چهره-بیان-تشخیص
یک روش برجسته در تشخیص بیان چهره (FER) است. ماژول FER مبتنی بر ستون فقرات SCN است که توسط مقاله “سرکوب عدم قطعیت ها برای تشخیص بیان صورت مقیاس بزرگ ” ارائه شده است.
توجه داشته باشید که ماژول FER پیاده سازی رسمی نیست. همه کدها فقط برای اهداف تحقیقاتی قابل استفاده هستند.
به روز رسانی گزارش ها:
10 دسامبر 2020
کد منبع، مدل از پیش آموزش داده شده و برخی داده ها منتشر می شود.
انگیزه
ما دریافتیم که برخی از روشهای یادگیری عمیق در زمینه FER نیاز به استفاده از ماژول شبکه از پیش آموزش یافته دارد که در کارهای دیگر مانند تشخیص چهره از پیش تعیین شده است. بنابراین در این شبیه سازی قصد داریم روشی را برای اجتناب از به کارگیری چنین مدلی از پیش تعیین شده ای پیاده سازی کنیم.
امروزه، الگوریتم های تشخیص landmark صورت بسیار قوی و کارآمد هستند. در این شبیه سازی دو وظیفه مختلف را در یک چارچوب ترکیب می کنیم. نتایج تجربی نشان می دهد که landmark صورت دقت FER را بهبود می بخشد.
مجموعه داده
در این آزمایشات، از مجموعه داده FER2013 استفاده می کنیم.
ویژگی های تصویر: 48×48×48 پیکسل، برچسب ها: 0 = عصبانی، 1 = انزجار، 2 = ترس، 3 = خوشحال، 4 = غمگین، 5 = تعجب، 6 = خنثی.
توجه: ما از کتابخانه Dlib برای تشخیص landmark صورت استفاده می کنیم؛ کتابخانه Dlib را می توانید از اینجا دانلود کنید (اگر یک چهره تشخیص داده نشود، از دست دادن landmark آن در طول تمرین محاسبه نمی شود). مدل از پیش آموزش داده شده ما بر روی زیر مجموعه داده FER2013 آموزش داده می شود (از آنجا که نمونه ها را با آزمایشات ناهمگونی در نظر می گیریم)، بدین معناست که کاربر تشویق می شود از کدها و مدل از پیش آماده شده به عنوان مرجع استفاده کند.
پیش نیازها و نصب
- Python 3.8
- Pytorch 1.6.0
- opencv-python 4.4.0.42
شروع
این مخزن را کلون کنید:
git clone https://github.com/RainbowRui/Landmark-Driven-Facial-Expression-Recognition.git
cd Landmark-Driven-Facial-Expression-Recognition
نصب وابستگی ها با استفاده از Anaconda:
conda create -n fer python=3.8
source activate fer
pip install opencv-python==4.4.0.42 pillow==7.2.0
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch
توجه: نسخه ‘cudatoolkit’ باید با نسخه در حال اجرا دستگاه شما مطابقت داشته باشد.
آموزش
با ./Landmark-Driven-Facial-Expression-Recognition دایرکتوری ، دستور زیر را اجرا کنید:
bash train.sh
تست با مدل از پیش تعیین شده
مدل از پیش آماده شده را آماده کنید:
رمز عبور مدل از پیش آماده شده: v0zm
فایل های بارگیری شده را از حالت فشرده خارج کرده و ‘resnet18.pth’ را به فهرست ./model_save/ منتقل کنید.
تست:
در دایرکتوری ./Landmark-Driven-Facial-Expression-Recognition دستور زیر را اجرا کنید:
bash test.sh
شبکه خود درمانی
SCN ما براساس CNN های سنتی ساخته شده است و از سه ماژول مهم تشکیل شده است: 1) وزن دهی با اهمیت، 2) رتبه بندی مرتب سازی، و 3) علامت گذاری مجدد، همانطور که در شکل 2 نشان داده شده است. ابتدا ویژگی های عمیق را توسط یک شبکه ستون فقرات استخراج می کنیم. ماژول وزن دهی اهمیت خود با استفاده از یک لایه کاملاً متصل[3] (FC) و تابع سیگموئید، وزن اهمیتی را برای هر تصویر تعیین می کند. این وزن ها برای یک طرح وزن دهی مجدد در لاجیت ضرب می شوند. برای کاهش صریح اهمیت نمونه های نامعلوم، یک ماژول منظم سازی رتبه برای نظم دادن به وزن توجه بیشتر معرفی می شود. در ماژول منظم سازی رتبه، ابتدا وزن توجه آموخته شده را رتبه بندی کرده و سپس آنها را به دو گروه تقسیم می کنیم، یعنی گروه های با اهمیت بالا و پایین. سپس یک محدودیت بین میانگین وزنهای این گروهها با ضرر مبتنی بر حاشیه اضافه می کنیم، که به آن اتلاف منظم رتبه[4] (RR-Loss) گفته می شود. برای بهبود بیشتر SCN پیشنهادی، ماژول relabeling اضافه می شود تا تعدادی از نمونه های نامعلوم در گروه کم اهمیت را تغییر دهد. این عملیات rebelbeling با هدف شکار بیشتر نمونه های تمیز و سپس ارتقاء مدل نهایی انجام می شود. کل SCN را می توان به صورت پایانی آموزش داد و به راحتی به ستون فقرات CNN اضافه کرد.
تجسم- آموزش
Pytorch
Torch 1.2.0 یا بالاتر و torchvision 0.4.0 یا بالاتر مورد نیاز است.
آماده سازی داده ها
مجموعه داده های اصلی احساسات RAF-DB را بارگیری کنید و مطمئن شوید که ساختاری مانند زیر دارد:
– datasets/raf-basic/
EmoLabel/
list_patition_label.txt
Image/aligned/
train_00001_aligned.jpg
test_0001_aligned.jpg
…
شروع آموزش
python train.py –margin_1=0.07
–margin_1 نشان دهنده حاشیه در رتبه بندی منظم است که روی 0.15 با اندازه دسته 1024 در مقاله تنظیم شده است.
در اینجا –margin_1 = 0.07 با اندازه دسته کوچکتر 64 [به طور پیش فرض] در train.py می تواند نتایج مشابهی را بدست آورد.
نتیجه
دقت در مجموعه تست باید 87.03 hit باشد، همانطور که مقاله نشان می دهد، هنگام تمرین فقط با RAF-DB.
شما می توانید کلیه فایلهای شبیه سازی پایتون این مقاله را در این پروژه دانلود کنید
سفارش پروژه مشابه دارید؟ به این صفحه مراجعه کنید.
منابع
[1] He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[2] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).
[3] Wang, Kai, et al. “Suppressing uncertainties for large-scale facial expression recognition.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
[1] Facial Expression Recognition
[2] Self-Cure Network
[3] fully-connected
[4] rank regularization loss
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.