مقاله استفاده از تکنیک های پردازش موازی با استفاده از پردازنده های گرافیکی در تشخیص هویت با کمک الگوهای عنبیه

word قابل ویرایش
12 صفحه
دسته : اطلاعیه ها
12700 تومان
127,000 ریال – خرید و دانلود

استفاده از تکنیک های پردازش موازی با استفاده از پردازنده های گرافیکی در تشخیص هویت با کمک الگوهای عنبیه
خلاصه : در این مقاله روش جدیدی برای تشخیص هویت با کمک الگوهای عنبیه ارائه شده است . برای شناسایی مرزهای داخلی و خارجی عنبیه – مرز عنبیه با مردمک و مرز عنبیه با صلبیه – از تبدیل هاف دایره ای و سپس تبدیل مختصات دکارتی به قطبی و نرمال سازی آن و تبدیل به کد کردن آن قسمت از عنبیه که نرمال سازی شده و سپس موازی سازی کد با استفاده از برنامه نویسی CUDA استفاده کردیم . به علت برتری سرعت محاسباتی GPU نسبت به CPU از تکنیک پردازش موازی که از جمله آن CUDA است بهره می گیریم . این سبب افزایش کارایی و سرعت محاسبات تشخیص هویت افراد با کمک الگوهای عنبیه است . نتایج پیاده سازی روش فوق روی تصاویر موجود در بانک تصاویر CASIA
نشان دهنده این است که روش فوق دارای ٩۵ درصد صحت می باشد.
کلمات کلیدی : نرمال سازی عنبیه ، پردازش موازی، CUDA،GPU .

١ – مقدمه
تشخیص هویت با کمک الگوهـای عنبیـه موضـوع جدیـدی اسـت کـه موضوع کار محققان متعددی در سال های اخیر بوده است . اما آنچه در این مقاله مورد نظر است افزایش کارایی و سرعت محاسـبات تـشخیص هویت افراد با کمک الگوهای عنبیه است کـه بـدین منظـور از تکنیـک های پـردازش مـوازی کـه موضـوع جدیـدی در حـوزه پـردازش هـای کامپیوتری است بهره می گیریم . یکی از شاخه هـای پـردازش مـوازی، برنامه نویسی روی کارت های گرافیک با استفاده از مدل برنامه نویسی موازی CUDA است . CUDA تکنولوژی جدیـدی از محاسـبات همـه منظوره روی واحد پردازش گرافیک است که این امکان را بـه کـاربران می دهد که برنامه های کلی GPU را به آسانی بسط و توسـعه دهنـد.
CUDA همچنین به خوبی روی پردازنده های چند هسته ای نگاشـت می شود. به علت برتری سرعت محاسباتی GPU نسبت بـه CPU از این تکنیک در تشخیص هویت با کمک الگوهـای عنبیـه اسـتفاده مـی کنیم . مسئله ای که وجود دارد این است که بـه منظـور اعمـال برنامـه نویسی CUDA روی الگوهـای عنبیـه ابتـدا بایـد تـصاویر مربـوط بـه الگوهای عنبیه موجود در یک پایگاه داده خاص ، کـه مـا از پایگـاه داده استفاده می کنیم را به منظور تعیین مرزهای عنبیه و مردمـک در هـر الگوی چشم بررسی کرد که ما بـدین منظـور از تکنیـک تبـدیل هـاف دایره ای استفاده می کنیم . بعد از تعیـین مرزهـای عنبیـه و نهایتـا بـا ایجاد بردار ویژگی، کدهای ایجاد شده را به CUDA تبدیل می کنـیم که این کار با استفاده از زبان MATLAB یا با کمک زبان C انجام می شود. برای این کار از قابلیـت هـای GPU Computing اسـتفاده مـی کنیم . Nicholas روش تطبیق الگوی عنبیه موازی شده روی GPU با کمک برنامه نویسی CUDA ارائه کرده است [١ ] .
Zhiyi ویژگی های ممتاز CUDA را تحلیل می کند و چند الگوریتم پردازش تصویر توسط CUDA از قبیل حذف ابرها، شناسایی لبه و رمزگذاری و رمزگشایی DCT [٢[ Garland تجارب بدست آمده از بکارگیری CUDA برای مجموعه ای از مشکلات و سرعت موازی روی کدهای ترتیبی اجرا شده روی معماری CPU سنتی حاصله از اجرای محاسبات کلیدی روی GPU را بررسی می کند[۴].

٢- آشنایی با الگوریتم های موازی
استفاده از تکنیک های پردازش موازی به چند روش از جمله استفاده از قابلیت های GPU Computing و یا استفاده از برنامه نویسی CUDA روی کارت های گرافیکی تقسیم می شوند.
CPU و سیستم عامل کامپیوترهای مدرن را برای حل یک مشکل سخت در محاسبات حمایت می کنند. همانطور که شما از کامپیوتر استفاده می کنید، سیستم عامل تمام فعالیت های شما، ارتباطات پس زمینه را دنبال می کند و اطلاعاتی که شما بکار می برید یعنی در حالیکه به موزیک گوش می دهید، در وب جستجو می کنید و ایمیل می خوانید را سازماندهی می کند. معماری استاندارد CPU در مدیریت چند وظیفه گسسته برتری دارد، اما در پردازش وظایفی که می تواند به چند عنصر کوچکتر تقسیم شود کارا نیست و بطور موازی تحلیل می شود. این دقیقا همان مشکلی است که توسط واحد های پردازش گرافیکی GPU حل شده است . GPU پتانسیل بالایی برای حل مشکلات بطور سریع و ارزان دارد. هدف محاسبات با GPU ها، بکارگیری توان محاسباتی عظیم ذاتی در GPU برای حل بعضی از سخت ترین و مهم ترین مشکلات در محاسبات کارایی بالا است .
با بیش از ١٢٨ پردازشگر و پهنای باند حافظه خیلی بالا، GPU ها منابع باور نکردنی برای هردوی پردازش گرافیکی و غیر گرافیکی را پیشنهاد می کنند. دلیل اصلی این امر آنست که GPU برای محاسبات -متمرکز، محاسبات موازی قوی که برای ترجمه گرافیک مورد نیاز است معماری شده اند. بنابراین روی یک GPU ترانزیستورهای بیشتری برای پردازش داده برای کنترل جریان و ذخیره داده اختصاص داده شده اند.
حین پردازش با CPU ها یک برنامه پردازش واحد را بترتیب بصورت حلقه روی داده ها بکار می بریم ، در حالیکه پردازش داده موازی با GPU عناصر داده را به هزاران نخ پردازش موازی نگاشت می کند.
تعداد زیادی از کاربردها که مجموعه داده های بزرگ مانند آرایه ها یا توده ها را پردازش می کنند می تواند یک مدل برنامه نویسی داده موازی برای افزایش سرعت محاسبات بکار برد. این کاربردها تصویر برداری پزشکی، تشخیص الگو، پردازش واحد، شبیه سازی فیزیکی، زیست شناسی محاسباتی را شامل می شود. GPU DRAM می تواند به روش کلی خوانده شود، برنامه های GPU می تواند عناصر داده را از هر بخش DRAM جمع آوری کند اما بطور کلی برنامه های GPU نمی تواند اطلاعات را به هر بخش DRAM پراکنده کند، که این مقدار زیادی از انعطاف پذیری برنامه نویسی قابل بازخوانی روی CPU که در دسترس است را حذف می کند[۶].
روش دوم یعنی CUDA که مخفف معماری وسیله یکپارچه محاسباتی(Compute Unified Device Architecture) است ، معماری سخت افزار و نرم افزاری جدیدی برای انتشار و مدیریت محاسبات روی GPU بعنوان یک وسیله محاسباتی داده -موازی بدون نیاز به نگاشت آنها به یک گرافیک API است . این برای سری
٨ GeForce، ۵۶٠٠.۴۶٠٠ Quadro FX و Tesla قابل دسترس است . CUDA می تواند پردازش داده موازی بالا و ارزانتر از اجرای سخت افزاری را ، مثلا در پردازش تصاویر بزرگ مانند تصاویر هواپیما یا ماهواره فراهم کند. پشته نرم افزاری CUDA متشکل از چندین لایه از جمله یک درایور سخت افزاری، یک واسط برنامه نویسی کاربردی (API) و زمان اجرای آن ، و دو کتابخانه ریاضی سطح بالا با کاربرد معمولی ، CUFFT و CUBLAS است .
CUDA، آدرس دهی حافظه DRAM شامل هر دوی عملیات پراکندن و جمع کردن را طبق شکل ١ برای برنامه نویسی انعطاف پذیرتر نشان می دهد. از منظر برنامه نویسی این به معنای قابلیت خواندن و نوشتن داده در هر مکان در DRAM درست مانند CPU است . CUDA بصورت ذخیره داده موازی یا حافظه اشتراکی روی تراشه با دستیابی خواندن و نوشتن خیلی سریع نمایان می شود که نخ هایی را برای تسهیم داده با یکدیگر بکار می برد.

شکل ١- عملیات جمع آوری و پراکندن در حافظه
مدل برنامه نویسی CUDA دو هدف طراحی کلیدی را دنبال می کند.
اولا زبان برنامه نویسی استاندارد ترتیبی را با کمینه ترین مجموعه چکیده ها برای شرح موازی سازی به خصوص برای ++C.C بسط می دهد. ثانیا برای نوشتن کد موازی مقیاس پذیر که می تواند بین داده ها هزار نخ همزمان و صدها هسته پردازشگر اجرا شود طراحی می شود.
یک برنامه CUDA در برنامه میزبان که شامل یک یا چند نخ ترتیبی است سازماندهی می شود که روی CPU میزبان اجرا می شود و یک یا چند هسته موازی که برای اجرا روی یک وسیله پردازش موازی مانند GPU متناسب می شود. یک هسته یک برنامه ترتیبی عددی را روی مجموعه ای از نخ های موازی اجرا می کند. برنامه نویس این نخ ها را به شبکه ای از بلوک های نخ سازماندهی می کند. نخ های یک بلوک نخ واحد، اجازه دارند با یکدیگر از طریق مرزها همگام شوند و با سرعت بالا، به حافظه on-chip تسهیم شده در هر بلوک برای ارتباطات درون نخی دستیابی داشته باشند. نخ های بلوک های مختلف در یک شبکه می توانند از طریق عملیات در فضای حافظه عمومی تسهیم شده قابل دیدن برای تمام نخ ها هماهنگ شوند.
در سال های اخیر کارایی GPU در نرخی سریع تر از کارایی CPU ها بهبود داشته است . در سال ٢٠٠٧ پیشرفته ترین NVIDIA GPU، ۶ برابر سریع تر از پیشرفته ترین CPU اینتل تولید شد.
در مقایسه با GPU قبلی CUDA GPU مزایای زیر را دارد:
محیط برنامه نویسی کلی: CUDA ابزار برنامه نویسی و کامپایلر C را بکار می برد که برنامه ها را سازگار و قابل حمل و نقل می سازد.
قابلیت محاسبه موازی قدرتمندتر: کارت گرافیک های CUDA ترانزیستورهای بیشتری برای محاسبه ، نه برای ذخیره داده یا کنترل جریان بکار می گیرند.
پهنای باند بیشتر: بعنوان مثال ٨٨٠٠ GeForce پهنای باند GB.s بین GPU و حافظه وسیله ، و GB.s بین حافظه میزبان و حافظه وسیله از طریق باس PCI-E x١۶ دارد.
عملیات دستوری: CUDA GPU عملیات بیتی و صحیح را پشتیبانی می کند.
معماری سخت افزاری بصورت زیر است . کارت های CUDA شامل تعداد زیادی چند-پردازشگر SM( SIMD) و هر SM همچنین دارای چند- پردازنده جاری است . هر SM دارای چهار نوع حافظه از جمله constant memory ،texture memory و global memory است که می تواند با host memory بجز حافظه اشتراکی روی تراشه ارتباط برقرار کند. این کارت ها حافظه های on-chip و کش را برای تسریع دستیابی به حافظه بکار می برند.
معماری سخت افزار دارای سه ویژگی جدید است :
حافظه سراسری خواندن .نوشتن : GPU می تواند داده را از هر مکان یا حافظه سراسری جمع آوری کند، و همچنین داده را به هر مکان تقریبا به همان انعطاف پذیری CPU بپراکند.
حافظه اشتراکی on-chip : این می تواند نخ ها را در یک چند- پردازنده بسازد که داده ها را سریع می گیرند، بطوریکه از دستیابی به حافظه سراسری بارها اجتناب می کنند. واکشی یک داده از حافظه اشتراکی ۴ سیکل ساعت هزینه دارد، درحالیکه از حافظه سراسری نیازمند ۴٠٠ تا ۶٠٠ سیکل ساعت است .
همگام سازی نخ : نخ ها در یک گروه نخ می توانند همگام باشند، بنابراین می تواند ارتباط برقرار کنند و در حل مشکلات پیچیده باهم همکاری کنند.
این مراحل در شکل ٢ نشان داده شده است [٢] .

شکل ٢- مدل سخت افزاری CUDA
در شکل ٣، GPU مجتمع شده و برنامه CPU بوسیله NVCC کامپایل می شود و آنگاه کد GPU و کد CPU جدا می شوند.

شکل ٣- رویه کامپایل CUDA
برای محاسبه داده موازی، ما می توانیم مد یکسانی برای برنامه نویسی با زبان C بکار بریم . مراحل اصلی مد کلی در زیر آمده است :
کپی داده از حافظه میزبان به حافظه وسیله : بدلیل محدودیت پهنای باند، انتقال داده بین حافظه میزبان و حافظه وسیله سرعت کلی را محدود می کند. بنابراین یک روش موثر برای الحاق داده ها به یک بافت یا الگو، انجام داده ها بوسیله توابع texture است .
CPU هسته را برای اجرا زمان بندی می کند. که این مرحله اساسا شامل سه گام زیر است .
• ست کردن پیکر بندی اجرای هسته . تجزیه داده ورودی و اختصاص بلوک های داده به هر بلوک نخ .
• خواندن داده از حافظه سراسری به حافظه اشتراکی . بدلیل سرعت زیاد حافظه اشتراکی ما باید بهترین استفاده را از حافظه اشتراکی ببریم . اگر بعضی از استراتژی بهینه سازی را بپذیریم ، سرعت خواندن و پهنای باند حافظه تواند بطور قابل توجهی بهبود می یابد.
• آغاز محاسبات هسته .
بازنویسی نتایج به حافظه میزبان ، انجام پس پردازش .
به منظور محاسبات موازی توسط CUDA، باید به دو نکته توجه کرد.
اختصاص داده به هر نخ مهم است . بنابراین اگر الگوریتم های اختصاص بهتری برای داده ورودی یافت شوند، کارایی الگوریتم های تصویر بهبود خواهد یافت . بعلاوه ، پهنای باند حافظه وسیله میزبان مانعی برای سرعت کلی است ، بنابراین سرعت خواندن داده ورودی نیز خیلی مهم است .
CUDA قدرت محاسباتی اولیه قابل دسترس و آسان برای برنامه نویسی با اجازه اینکه کاربر کد طبیعی C را بنویسد ایجاد می کند که آنگاه بوسیله هزاران یا میلیون ها نخ اجرا می شود. نخ ها در یک سلسله مراتب دو سطحی از بلوک ها و شبکه ها سازماندهی می شود.
نخ ها بصورت موازی با نخ های دیگر در بلوک نخشان اجرا می شوند و می توانند از طریق حافظه اشتراکی با مرزهای ساده برای همزمانی باهم مرتبط باشند. این مجموعه مینیمم از الحاقات به C با این وجود قدرت عظیم برنامه نویسی موازی را نمایش می دهد[۵].

٣- تشخیص عنبیه
تشخیص عنبیه بعلت قابلیت اعتماد و نرخ تشخیص تقریبا دقیق در حوزه های امنیتی بالا تحقیق محبوبی در سال های اخیر بشمار می آید. کاربردهای آن شامل کنترل حاشیه ها در هواپیما ها و بندرگاه ها، کنترل دستیابی در آزمایشگاه ها و کارخانجات ، شناسایی در ماشین های ATM و دستیابی محدود شده برای اتاق های شاهد پلیس هستند. سه مرحله اصلی در سیستم تشخیص عنبیه پیش پردازش تصویر، استخراج ویژگی و تطبیق الگو هستند. یک سیستم تشخیص عنبیه ی کامل به مراحل زیر تقسیم می شود.

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 12700 تومان در 12 صفحه
127,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد