ما بعضا در مورد مفهوم ادراک فکر کرده ایم یعنی اینکه چگونه مغز ما اشیایی را که می بینیم درک می کند؟ چگونه تفاوت بین گربه و سگ را می داند؟ چگونه می توانیم مردم را از یکدیگر جدا و شناسایی کنیم؟ مطلب شگفت انگیز این است که چگونه مغز انسان پس از سالها که از دیدن یک شخص که سالیان متمادی از آخرین دیدار با او گذشته، مجددا او را شناسایی می کند؟ اما امروزه فناوری هایی وجود دارد که می تواند این کار را همانند یک انسان برای درک اشیا انجام دهد. به عنوان مثال، آیا سیستم قفل کردن تشخیص چهره آیفون X. شگفت انگیز نیست؟ برنامه های کاربردی زیادی وجود دارد که از این تکنولوژی استفاده می کنند. هنگامی که ما عمیقتر به این برنامه ها نگاه می کنیم متوجه می شویم که از شبکه های عصبی استفاده می نمایند به طور خاص، مردم از تکنیک مبتنی بر شبکه عصبی که یادگیری عمیق نامیده می شود برای این منظور استفاده می نمایند.
هدف از ارائه این مطلب، ارائه یک نظریه مفهومی اساسی برای تکنیک یادگیری عمیق است که از یک شبکه عصبی آغاز می شود، چه شرایطی با آن همراه است، چگونه ما یک مدل ساده شبکه عصبی را بسازیم و چه تکنیک هایی عموما در یک شبکه عصبی عمیق برای بهینه سازی مدل های پیش بینی استفاده می شود. در اینجا همه شرایطی که می تواند در هنگام کار در فضای آموزشی برای یادگیری عمیق توسط ماشین انجام شود بیان شده است.
آموزش عمیق چیست؟
آموزش عمیق یکی از آن تکنیک های مورد استفاده در یادگیری ماشین برای تشخیص الگو است. این یکی از رایج ترین روش ها در ساختن AI در سالهای اخیر است. به طور معمول، یک شبکه عصبی عمیق (DNN) چیزی جز یک شبکه عصبی چند لایه نیست، یعنی لایه ها پشت سر هم برای شناسایی الگوها در داده ها مورد استفاده قرار می گیرند. یک زیبایی این روش این است که وقتی ما از لایه ورودی به سمت لایه های پنهان و لایه خروجی حرکت می کنیم، اندازه الگوهای شناسایی شده بزرگتر و بزرگتر می شود و بنابراین در پیش بینی اشیاء در لایه نهایی کمک می کند. این فرایند با مثال زیر توضیح داده شده است.
فرآیند شناسایی چهره انسان در یک تصویر را در نظر بگیرید. DNN با شناسایی بخش ها شروع می شود، اغلب لبه هایی مانند نوار افقی تیره، نوارهای طولانی عمودی و شکل های دور تاریک. در لایه بعدی، شبکه سعی می کند ارتباط بین این لبه ها را از لایه قبلی پیدا کند و الگوهای بیشتری مانند ابرو، چشم، بینی و غیره را نشان می دهد. در نهایت، لایه نهایی شبکه قادر خواهد بود چهره ای از یک تصویر را با استفاده از تمام این ویژگی های شناسایی شده در لایه های قبلی شناسایی کند. این در تصویر زیر نشان داده شده است. بنابراین، همانطور که ما در یک شبکه عصبی به جلو حرکت می کنیم، اندازه الگوهای مشخص شده افزایش می یابد و در نهایت می توانیم اشیا را شناسایی کنیم.
برنامه های اصلی برای یادگیری عمیق
عبارتند از:
1- طبقه بندی تصویر (شبکه عصبی
مصنوعی (CNN)
به طور کلی استفاده می شود)
2- طبقه بندی متن (شبکه عصبی مجدد (RNN) به طور کلی استفاده می شود)
3- پردازش گفتار (معمولا از LSTM استفاده
می شود)
توضیح برای هر یک از این نوع شبکه های عصبی از حوصله این
گفتار خارج است و در مقالات جداگانه قرارمی گیرد.
چرا آموزش عمیق؟
اگر ما به این روش دقیق نگاه کنیم، ممکن
است متوجه شویم که این ممکن است روشی باشد که مغز ما قادر به شناسایی اشیاء اطراف
ما می باشد. ممکن است این مفهوم اصلی ادراک باشد و این انگیزه شبکه های عصبی عمیق
است. ایده کلی این است که بفهمیم که نورونها در مغز ما چگونه الگوها را شناسایی می
کنند و کار آنها را تقلید کنیم. نورون ها گره نامیده می شوند و اطلاعات را از یک
به دیگری انتقال می دهند. اما تمایز بین یک شبکه عصبی ساده و یک
شبکه عصبی عمیق چیست؟ پاسخ آن واضح نیست چون اگر ما معماری، انعطاف پذیری و دقت
پیش بینی بین یک شبکه عصبی و یک مدل آموزش عمیق را در نظر بگیریم، مشاهده می کنیم
که تفاوت هایی وجود دارد. در مورد شبکه های عصبی متعارف، اغلب هر گره زمانی که ما
از یک لایه به سمت دیگر حرکت می کنیم گره ها به هر گره دیگر متصل می شود. در مورد
یک شبکه عصبی عمیق، ما می توانیم تعداد گره های شرکت کننده در فرایند تصمیم گیری
را محدود کنیم، که مغز ما هم در بیشتر موارد همین کار را انجام می دهد. همچنین، یک
شبکه عصبی متعارف بیشتر از روش feed
forward برای پیش بینی استفاده می کند. یک
شبکه عمیق عصبی از مفهوم انتشاربه عقب (back propagation) در بالای
تکنیک feed
forward
استفاده می کند که از طریق آن می توان خطا را در هر مرحله
با به روز رسانی وزن ها در شبکه کاهش داد.
چگونه یاد گیری عمیق اجرا می شود؟
معماری:
ساده ترین معماری یک شبکه عمیق عصبی شامل
یک لایه ورودی، یک یا چند لایه پنهان و یک لایه خروجی است. هر لایه می تواند حاوی
هر تعداد گره باشد. هر گره می تواند به هر گره دیگر در لایه بعدی با وزن مرتبط با
آن متصل شود. لایه ورودی چیزی جز لیست گره ها نیست که نشان دهنده مقادیر ویژگی
هایی است که برای پیش بینی استفاده می شود. تعداد سطوح در خروجی که برای طبقه بندی
استفاده می شود، تعداد گره در لایه خروجی را تعیین می کند. به عنوان مثال، در مورد
شناسایی رقوم، خروجی می تواند مقادیر بین 0 تا 9 داشته باشد و بنابراین 10 نود در
لایه خروجی وجود دارد.
لایه پنهان می تواند هر تعداد گره داشته باشد و تعداد گره
در لایه مخفی بستگی به مقدار ورودی به گره ها و وزن مربوط به آنها دارد. که
محاسبات آن نیز نسبتا ساده است
تابع فعال سازی:
مغز ما به گونه ای کار می کند که وقتی تصور می کنیم یک تصویر وجود دارد، نورون های مشخصی فعال می شوند و نورون های مشخصی فعال نمی شوند. این مکانیسمی است که به انسان کمک می کند گربه ها را به عنوان گربه ها و سگ ها را به عنوان سگ ها شناسایی کند. گرچه آنها بسیاری از ویژگی های مشترک را دارا هستند. این مکانیسم با استفاده از مفهوم تابع فعال سازی در یادگیری عمیق اجرا می شود. یک تابع فعال سازی تعیین می کند که آیا یک گره برای ایجاد پیش بینی باید باشد و یا نباشد. در مراحل اولیه، تابع فعال سازی مورد استفاده معمولا تابع s-shaped tanh بوده است. اما در حال حاضر، تابع فعال سازی مورد استفاده اغلب reLu(rectified linear unit) است. چندین تابع فعال سازی دیگر هم وجود دارد که می تواند مورد استفاده قرار گیرد.
اندازه گیری خطا:
همانطور که در مورد هر الگوریتم یادگیری ماشین، زمانی که معماری یا چارچوب مدل ساخته شد، مدل با استفاده از داده های ورودی آموزش دیده و هدف مدل کاهش هزینه ها یا خطا است. شایع ترین روش اندازه گیری خطا در مدل های آموزشی عمیق MSE(Mean squared error) برای پیش بینی یک متغیر پیوسته و یا اندازه گیری CrossEntropy برای پیش بینی یک متغیر قطعی است.
تکنیک های بهینه سازی:
مسئله اصلی در الگوریتم یادگیری عمیق در شناسایی مقادیر مناسب برای پارامترها (وزن بین لایه ها) برای پیش بینی دقیق است. برای به دست آوردن مقادیر برای پارامترها، شبکه عصبی عمیق با استفاده از داده های آموزشی آموزش داده می شود به طوری که اندازه گیری کلی خطای آن به حداقل مقدار آن نزدیک شود. تکنیک های بهینه سازی چندگانه وجود دارد که می تواند مورد استفاده قرار گیرد که از جمله آن ها شایع ترین شیوه شبیه سازی، شبیه ساز (sgd) و بهینه ساز ADAM می باشد. پس از اتمام آموزش، شبکه عصبی مجموعه ای از مقادیر نهایی برای وزن برای گره ها خواهد داشت. سپس از این وزن ها برای پیش بینی اطلاعات ورودی ناشناخته آینده استفاده می شود.
منبع
https://www.linkedin.com/pulse/introduction-deep-learning-renganathan-lalgudi-venkatesan/
نمونه دیگر از دیتا ست ها را می توان در آدرس "http://www.imageprocessingplace.com/root_files_V3/image_databases.htm" مشاهده کرد که تصاویرمربوط به چهارمین ویرایش پردازش تصویر دیجیتال است که توسط گونزالس و وودز در دو قالب DIP4E Faculty و Student تهیه شده است.
درFaculty تمام مواد پشتیبانی (به جز راهنمای راه حل ها) برای DIP4E و DIP4E Global در بسته پشتیبانی دانشکده DIP4E قرار دارد و راهنمای راه حل آن فقط به صورت آنلاین در دسترس است.
در Student تمام مواد پشتیبانی برای DIP4E در بسته پشتیبانی دانشجویی DIP4E قرار دارد. دفترچه راهنمای راه حل هم فقط به صورت آنلاین در دسترس است. در DIP3E شامل: درخواست کتابچه راهنمای کاربر،تصاویر کتاب ، پاورپوینت می باشد. در DIPUM2E برای مباحث پردازش تصویر با استفاده از MATLAB است.
لینک دانلود |
توضیحات فارسی |
توضیحات انگلیسی |
مجموعه تصاویر استاندارد برای تست شامل تصاویر لنا، فلفل، فیلم بردار، دریاچه و ... که همگی با ابعاد 512*512 بوده و قالب آنها هم Tif می باشد. |
"Standard" test images (a set of images found frequently in the literature: Lena, peppers, cameraman, lake, etc., all in uncompressed tif format and of the same 512 x 512 size). |
|
تصاویر MPEG7 شامل 1400 تصویر باینری است |
MPEG7 CE Shape-1 Part B (database containing 1400 binary shape images). Learn more about MPEG7. See how the shapes database is used |
|
مجموعه عالی از تصاویر میکروسکوپ نوری |
Light microscopy images (an excellent collection). |
|
تصاویر از انواع میکروسکوپ ها شامل اتمی، نوری و ... |
Images from various microscope types, including Atomic Force, Light, Confocal, ESEM, TEM, & others. |
|
پایگاه داده تصویری پزشکی (رادیولوژی) با بیش از 20.000 عکس |
MedPix--Medical (radiological) image database with more than 20,000 images. Registration is free. |
|
تصاویر ناسا مربوط به فضا |
NASA image exchange (a comprehensive collection of space and related images). |
|
مجموعه ای از تصاویر سیارات |
NASA planetary photojournal (a collection of planetary images). |
|
مجموعه ای از تصاویر مشاهدات زمین |
NOAA photo library (a collection of Earth observation images). |
|
تصاویر ماهواره ای از تغییرات زمین |
USGS satellite images of Earth changes. |
|
تصاویر ماهواره های هواشناسی |
ESO weather satellite images. |
|
مجموعه ای بزرگ از تصاویر ماهواره ای زمین |
Earth Science World Image Bank (A large collection of satellite images) |
|
پایگاه داده چهره |
Face databases. |
|
پایگاه داده اثر انگشت |
Fingerprint databases. |
|
تصاویر تقسیم بندی شده برکلی |
Berkeley image segmentation dataset-images and segmentation benchmarks. |
|
سیگنال هواپیما |
Aircraft silhouettes. |
|
پایگاه داده شکل برگ |
Leaf shapes database (courtesy of V. Waghmare). Read about the database. |
|
پایگاه داده تشخیص عابر پیاده دایملر |
Daimler Pedestrian Detection Database (a DB of moving people and vehicles). |
|
تصاویر شبکیه، رادیوگرافی قفسه سینه، تصاویر برای ارزیابی تکنیک های ثبت نام، تصاویر کبدی، اسکن MRI مغز |
Image Sciences Institute annotated research data bases (retinal images, chest radiographs, images for evaluating registration techniques, liver images, brain MRI scans). |
|
مجموعه داده پاسکال شامل داده های تصویری استاندارد برای شناسایی کلاس |
Pascal dataset. (Standardized image data for object class recognition.) |
|
مجموعه داده تصاویر گیاهی |
Data set of plant images (Download from host web site home page.) |
|
|
نمونه ای از پایگاه داده های تصویری که اغلب در یادگیری عمیق استفاده می شود |
A SAMPLE OF IMAGE DATABASES USED FREQUENTLY IN DEEP LEARNING: |
الف - مجموعه داده MNIST از ارقام دست نویس تصاویر خاکستری با 60 هزار نمونه آموزشی و 10 هزار نمونه تست با ابعاد 28*28 |
A. MNIST dataset of handwritten digits (28x28 grayscale images with 60K training samples and 10K test samples in a consistent format). |
|
ب- مجموعه داده CIFAR-10 شامل تصاویر رنگی با ابعاد 32*32 در 10 کلاس و 50 هزار تصویر آموزشی و 10 هزار تصویر تست |
B. CIFAR-10 dataset. (32x32 RGB images in 10 classes. 50K training images and 10K test images). |
|
ج- مجموعه داده CIFAR-100 شامل تصاویر رنگی با ابعاد 32*32 در 100 کلاس و 50 هزار تصویر آموزشی و 10 هزار تصویر تست |
C. CIFAR-100 dataset. (32x32 RGB images in 100 classes. 50K training images and 10K test images). |
|
د- مجموعه داده Caltech101 شامل تصاویر رنگی و خاکستری با سایز های مختلف در 101 طبقه و جمعا 9144 تصویر |
D. Caltech101 dataset. (RGB and grayscale images of various sizes images in 101 categories, for a total of 9144 images). |
|
ه- مجموعه داده Caltech256 شامل تصاویر رنگی و خاکستری با سایز های مختلف در 256 طبقه و جمعا 30608 تصویر |
E. Caltech256 dataset. (RGB and grayscale images of various sizes in 256 categories for a total of 30608 images). |
|
و- مجموعه ImageNet شامل تصاویر رنگی و خاکستری با سایز های مختلف در 10000 طبقه و جمعا 3 میلیون تصویر |
F. ImageNet (RGB and grayscale images of various sizes in more than 10,000 categories for a total of over 3 million images--Considered by many to be the standard for algorithm development and testing.) |
|
ز- سایر پایگاه داده های مورد استفاده در یادگیری عمیق |
G. More image databases used in deep learning. |
معمولا یادگیری عمیق اشاره به مجموعه ای از الگوریتم های یادگیری ماشین دارد که معمولا مبتنی بر شبکه های عصبی مصنوعی اند و تلاش دارند تا انتزاعات سطح بالای موجود در داده ها را مدل نماید. از این مدل ها برای توسعه راه هایی جهت بازنمایی داده ها استفاده می شود. داده ها میتوانند شامل یک کلمه، پیکسل، فرکانس و… باشند و ممکن است معنای کمی بخودی خود داشته باشند اما ترکیب این داده ها می تواند چیز سودمندی را نمایش دهد.
مدلهای یادگیری عمیق مختلفی در تحقیقات و فعالیت های تجاری مورد استفاده قرار می گیرند. بعضی از این مدلها به قرار زیر اند :
· شبکه عصبی کانولوشن
· شبکه باور عمیق
· شبکه عصبی feed-forward
بسیاری از مدلهای یادگیری عمیق، الهام گرفته از فرآیند های بیولوژیکی اند.
یادگیری عمیق را میتوان هم در یادگیری با نظارت(supervised) و هم بدون نظارت(unsupervised) مورد استفاده قرار داد
یادگیری عمیق چگونه کار میکند؟
الگوریتم BackPropagation الگوریتم محبوبی است که یادگیری را در یادگیری عمیق در بسیاری از مدلها پیاده میکند. ایده این الگوریتم در دهه ۷۰ میلادی مطرح و در سال ۱۹۸۶ در مقاله " Learning representations by back-propagating errors "توسط Rumelhartو Hinton و Williams به شهرت رسید.
یادگیری عمیق یکی از زیرمجموعه های یادگیری ماشین است وعملا همان شبکه های عصبی قدیمی هست که با پیشرفت های تکنولوژی توسعه یافته است. با عمیق شدن این شبکه ها و سلسله مراتبی که توسط لایه های مختلف ارائه می شود، سطوح انتزاع مختلفی توسط این شبکه ها بدست می آید. این شبکه ها داده محور بوده و بصورت خودکار مهندسی ویژگی در آنها انجام می گردد.
طی چند سال اخیر با پیشرفت سخت افزار و عمیق کردن شبکه ها بحث معماری های عمیق مجدد رونق گرفته است. بنابراین می توان بیان کرد که یادگیری عمیق مجموعه ای از تکنیکهای مبتنی بر شبکه های عصبی هست که اجازه یادگیری ویژگی ها بصورت خودکار از خود داده های ورودی رو فراهم می کند. امروزه معماری های مختلفی از این نوع وجود دارد. معروف ترین و موفق ترین اونها شبکه های کانولوشنی هستند.
در مقابل یادگیری عمیق، یادگیری کم عمق یا اصطلاحا shallow learning وجود دارد که قبل از یادگیری عمیق از آن استفاده می شد و در واقع همان support vector machine ها و شبکه های عصبی معمولی و… بود.
در یادگیری کم عمق از شبکه عصبی (کم عمق) یا support vector machineها و… استفاده می شود و بیشتر برای دسته بندی و تمایز قائل شدن بین کلاسهای مختلفی است که در داده ها وجود دارد (به عنوان مثال برای شناسایی تصاویر سرطان و یا پیش گویی قیمت مسکن که در آن اطلاعات چندین سال اخیر در قالب داده وارد شده و سپس سیستم بر اساس اطلاعات جدید مثلا مقدار زیربنا و... قیمت را محاسبه می کند) اینها نمونه ای از یادگیری هستند. در روش کم عمق می بایست مهندسی ویژگی انجام و یکسری الگوها و یا معادلات برای کشف ارتباط بین دادها پیدا کرده و بعد با استفاده از آن مدل را آموزش میدادیم. دریادگیری عمیق خود سیستم مهندسی ویژگی را انجام می دهد. لذا خیلی مورد توجه قرار گرفته و نتایج بسیار عالی ای از آن به دست آمده است. یه نکته مهم در این روش ها عمق می باشد. مثلا شبکه عصبی هم در یادگیری عمیق کاربرد دارد و هم در یادگیری کم عمق! و تفاوت آنها در عمق شبکه می باشد.
در اصل یادگیری عمیق در دهه ۸۹ و ۹۰ نیز وجود داشته ولی به خاطر محدودیت سخت افزار و الگوریتم ها عملا تعداد لایه های شبکه عصبی محدود بوده و از سال ۲۰۱۰ و ۲۰۱۱ و خصوصا ۲۰۱۲ با شدت تمام مطرح شده است. در سال ۲۰۱۲ بود که در اصل الکس کریژوسکی و جف هینتون معروف (یکی از پایه گذاران یادگیری عمیق دنیا) توانستند با استفاده از کارت گرافیک یه شبکه کانولوشنی رو آموزش داده و نتایج حیرت انگیزی بدست آوردند.
شبکه های کانولوشنی هم نوعی از شبکه های عصبی هستند و تو این شبکه سعی شده روش مغز در شناسایی تصاویر به نحوی پیاده سازی شود و تقریبا کلیات شبکه عصبی درمورد آن صادق بوده و دارای یک سری تقاوت ها می باشد. مثلا در شبکه های عصبی ما اتصالات کامل داشتیم ولی اینجا وجود نداشته و فقط اشتراک پارامترها را داریم.
در شبکه عصبی لایه ها مثل لیست ویک بعدی هستند. اما در شبکه کانولوشن، لایه کانولوشن چند بعدی است و یکسری لایه ها و عملیاتهای خاص مربوط به خودش را داراست.
برای انجام کار بر روی تصاویر کتب و مقالات متعددی تهیه شده است که در این قسمت دو بخش از کتابهایی که در آنها در خصوص CBIR مطالبی آمده درج شده است
1) Introduction to Content-Based Image Retrieval—Overview of Key Techniques
در تمام کارهای تحقیقاتی برای اثبات اینکه روش پیشنهادی از سایر روش ها در یک زمینه خاص برتری دارد نیاز به مقایسه و تست الگوریتم و یا روش می باشد برای این منظور پایگاه داده های استانداری تعریف شده که محققان از آنها برای تست سیستم پیشنهادی خود استفاده می نمایند. هر چند دانشگاه ها و موسسات تحقیقاتی دیتا ست هایی را تهیه و در اختیار کاربران قرار می دهند ولی تعدادی از آنها مدت هاست که استفاده شده و جزء مهمترین دیتا ست های موجود در دنیا محسوب می شوند در این بخش اسامی و آدرس تعدادی از این دیتاست ها که در زمینه های مختلف دارای تصاویر می باشند بیان شده است.