نوشتن برنامه تخصصی در متلب
آموزش متلب نوشتن برنامه تخصصی در متلب
برنامه تشخیص چهره با شبکه عصبی در متلب :
آموزش متلب تصاویر چهره دارای ابعاد ۱۲۸*۱۲۸ نقطه بوده و هر نقطه توسط یک بابت بیان میگردد. به عبارتی تصاویر دارای ۲۵۶ سطح روشنایی میباشند. فاصله دوربین تا چهره تصویربرداری شده تقریبا ثابت در نظر گرفته شده است و اختلاف در فاصله تصویر برداری از افراد، حداکثر ۴۰ سانتیمتر میباشد. البته برای تصاویر گرفته شده از یک شخص، این تقریب به ۲۰ سانتیمتر محدود میشود.
در مورد شدت نور تصاویر و تغییرات نور در تصویربرداری، چون تصاویر در روزهای مختلفی گرفته شده، نور تمامی تصاویر دقیقا یکسان نیست. اما برای تصاویر گرفته شده از یک نفر، به دلیل اینکه تصاویر در یک محیط ثابت ودر فاصله زمانی کم گرفته شده است، تغییرات نور کم بوده ومیتوان از آن صرف نظر کرد(در گرفتن تصاویر از نور فلاش استفاده شده است).
آموزش متلبدسته تصاویر مربوط به یک نفر، شامل تصویر چهره در حالت تمام رخ، چرخش چهره به اطراف، چشمهای بسته، لبخند و حالتهای مختلف چهره میباشد. درتهیه بانک تصویر سعی شده از انواع چهره و افراد مختلف استفاده شود.
پس از تهیه بانک تصویر، از تصاویر اشخاص موجود در بانک تصویر، ویژگیها استخراج شده وکاهش بعد داده میشوند. واضح است که ویژگیهای استخراج شده و کاهش بعد یافته، در بانگ دیگری، که بانک ویژگیهای استخراج شده نامیده میشود، ذخیره میگردد.
[ulp id=’hAvlTccXXzt2ufny’]
تغییرات اعمال شده بر روی تصاویر:
آموزش متلب هدف پروژه شناسایی یک چهره است.بنابراین در مرحله اول این شناسایی که پروژه فعلی بر اساس آن تعریف گشته است، از مرحله تفکیک که چهره را از میان اجزاء دیگر موجود درتصویر منفک مینماید صرف نظر میگردد. این موقعیت مشابه با وضعیتی است که فردی به یک در بسته نزدیک میشود و قرار است قبل از رسیدن به در مورد شناسایی قرار گیرد. دوربین از چهره وی تصویر برداری کرده تا بازشناخت را بوسیله سیستم انجام دهد، سپس دستورات بعدیمثلا باز شدن در ورودی انجام شود، دراین حالت تصاویر پشت سر فرد میتواندسفید در نظر گرفته شود. این محدودیت در تعریف بازشناخت باعث میگردد که در تصویر برداری از چهره محدودیتهای اعمال گردد. از جمله این محدودیتها ثابت بودن زمینه تمام تصاویر میباشد، لذا پس از تصویر برداری زمینه تصویر سفید و اطلاعات اضافی از قبیل شانهها و گردن تا حد ممکن حذف میگردد. واضح است هر قدر اطلاعات اضافی وناخواسته در تصویر چهره کمتر باشد، ویژگی استخراجی دارای پایداری بیشتری میباشد.
مدل سیستم بازشناخت:
برای بازشناخت یک تصویر ورودی، ابتدا از تصویر بردار ویژگی استخراج میشود(باید ویژگی استخراج شده، با روش استخراج ویژگی از تصاویر موجود در بانک ویژگی مطابقت داشته باشد). سپس بردارهای استخراجی کاهش بعد داده میشود. در کاهش بعد جداپذیری کلاسها و طبقهبندی آنها بهتر میگردد. سپس ویژگی دسته موجود دربانک ویژگی مشخص میشود. حال یکی از دستههای موجود در بانک ویژگی انتخاب شده، باید مشخص کرد که آیاتصویر ورودی متعلق به همین کلاس است(شخصی که ویژگیهای موجود دربانک متعلق به آن شخص است) یا اینکه تصویر ورودی اصلا در بانک تصاویر نبوده وکاملا جدید است. لذا یک سطح آستانه برای فاصله و متناسب با ضریب اطمینان لازم برای باشناخت تصویر جدید بکار برده شده و به این صورت عمل میگردد که اگر فاصله بردار ویژگی استخراج شده از تصویر جدید تا نزدیکترین بردار ویژگی موجود در بانک، در حد قابل قبولی بود، تصویر جدید متعلق به آن کلاس تشخیص داده میشود. و در غیر اینصورت تصویر جدید قابل شناسایی(باز شناخت) نمیباشد. اگر برای ویژگی مربوط به فردی که تصویر ورودی متعلق به وی است. در بانک باشد آموزش متلب و باز شناخت انجام نشود. به این معنی است که ویژگیهای استخراجی از تصویر جدید، با ویژگی استخراجی از تصاویر آموزشی متفاوت است.
با تغیر تصویر چهره یک شخص ویژگیهای استخراجی تغییر میکند، اما اگر روش استخراجی به گونهای باشد که تغییرات در تصویر فرد، تاثیر زیادی بر بردار ویژگی مربوط به وی نداشته باشد. ویژگی استخراجی موثرتر و پایدارتر بوده و میتوان حالتهای متفاوتتری از چهره را مورد باز شناخت قرار داد.
پارامترهای مهم در تعیین نرخ بازشناخت:
نرخ باز شناخت در تمامی روشهای موجود، به چند عامل مهم وابسته است، که به آنها اشاره میشود:
الف- اندازه تصاویر چهره
هر چند تصاویر بزرگتر باشند، حاوی اطلاعات بیشتری از چهره بوده واین فراوانی اطلاعات در بردار استخراجی نیز صدق میکند، ولذا طبقهبندی و جداپذیری کلاسها بهتر انجام گرفته و نرخ بازشناخت افزایش مییابد. البته اگر تصاویر بزرگ و تعداد آنها زیاد باشد، حجم و حافظه زیادی برای پردازش و نگهداری تصاویر، لازم خواهد بود.
ب- تغییرات تصاویر آموزش هر شخص
اگر تغییرات تصاویر آموزشی در هر کلاس کم باشد، تغییرات بردار استخراجی و تداخل بین کلاسها کمتر بوده و نرخ شناسایی افزایش مییابد. اما باید توجه داشت که در این صورت، حالتهای محدودی از چهره (شبیه تصاویر آموزشی) قابل بازشناخت خواهد بود.
ج- تعداد اشخاص (کلاسها) در بانک تصاویر
با افزایش تعداد کلاسها، تداخل بین کلاسها بیشتر شده و از جداپذیری آنهاکاسته میگردد ونرخ شناسایی نسبت به تعداد کمتر کلاسها، پایین میآید.
د- بکار بردن سطح آستانه
آموزش متلب با بکار بردن سطح آستانه، برای فاصله کلاسها میتوان فاصله کلاسها میتوان دقت و نرخ بازشناخت را افزایش داد و این دقت را برای هر شخص(کلاس) به مقدار دلخواهی تعیین کرد، اما باید توجه کرد که با افزایش دقت در بازشناخت، تنوع چهره در بازشناخت کاهش مییابد.
شبیه سازی:
در این شبیه سازی چندین قسمت مورد توجه قرار می گیرد:
- استفاده از فیلتر gabor برای تشخیص و استخراج ویژگی های تصویر که این قسمت توسط کد زیر انجام می گیرد:
- if ~exist(‘gabor.mat’,’file’)
- fprintf (‘Creating Gabor Filters …’);
- create_gabor;
- end
- if exist(‘net.mat’,’file’)
- load net;
- else
- createffnn
- end
- if exist(‘imgdb.mat’,’file’)
- load imgdb;
- else
- IMGDB = loadimages;
- end
و مابقی قسمت های برنامه بصورت زیر کد می گردد:
while (1==1)
choice=menu(‘neural network’,…
‘loadimages’,…
‘ createffnn’,…
‘trainnet’,…
‘run program’,…
‘clear all’ ,…
‘close’)
if (choice ==1)
IMGDB = loadimages;
end
if (choice == 2)
createffnn
end
if (choice == 3)
net = trainnet(net,IMGDB);
end
if (choice == 4)
[file_name file_path] = uigetfile (‘*.jpg’);
if file_path ~= 0
im = imread ([file_path,file_name]);
try
im = rgb2gray(im);
end
tic
im_out = imscan (net,im);
toc
figure;imshow(im_out);
figure;
imcrop([7.5 21.5 18 28]);
imcrop([26.5 13.5 15 27]);
imcrop([47.5 24.5 18 27]);
imcrop([64.5 12.5 17 26]);
imcrop([82.5 23.5 18 28]);
imcrop([98.5 7.5 17 28]);
imcrop([119.5 21.5 18 27]);
end
end
if (choice == 5)
clear all;
clc;
close all;
return;
end
end
که برنامه حاصل از اجرای برنامه فوق بصورت زیر در می آید:
که این منو پس از اجرای کد اصلی به نمایش داده می شود:
مرحله اول:
- فراخواندن تصاویر به محیط متلب که شامل تصاویر صورت و بدن می باشد.
که این بعنوان دیتابیس اصلی برنامه می باشد: که با اجرای آن دیتابیس تشکیل می گردد.
- تشکیل شبکه عصبی شامل لایه های مخفی ،میانی و ورودی های سیستم
numInputs: 1
numLayers: 2
numOutputs: 1
numInputDelays: 0
numLayerDelays: 0
numFeedbackDelays: 0
numWeightElements: 216201
sampleTime: 1
- آموزش شبکه عصبی با استفاده از تعداد لایه های ورودی ،میانی و خروجی که در این قسمت ویژگی های استخراجی از فیلتر gabor به شبکه آموزش داده شده تا بتوان از شبکه بعنوان یه تشخیص دهنده صورت استفاده کرد:
که شبکه فوق را بصورت زیر می توانید مشاهده کنید:
که در شکل فوق تعد اد نرون های هر قسمت را می توانید مشاهده نمایید و تعداد تکرار ۴۰۰ عملکرد،گرادیان شبکه و بقیه پارامترها را می توانید مشاهده نمایید:
در این مرحله آموزش شبکه عصبی تمام شده است و نوبت نوبت به تست شبکه می رسد با اجرای گزینه run program پنجره ای باز می شود که با انتخاب عکس مورد نظر تست برنامه بر روی تصویر شروع می گردد که اجرای برنامه بصورت زیر در می آید:
که نشان دهنده عملیات شبکه عصبی برو روی تصویر و تشخیص چهره می باشد که با چک کردن تمامی نقاط تصویر شکل زیر نشان داده می شود:
و نهایتا شکل زیر حاصل می گردد:
فیلتر gabor استفاده شده از امفایل gabor.m استفاده می شود:
که از دستور
Psi = gabor (w,nu,mu,Kmax,f,sig)
برنامه را با عکس سیاه و سفید دیگری نیز تست می کنیم که نتایج خروجی بصورت زیر در می آید: