بخشی از مقاله
استفاده از تکنيک هاي پردازش موازي با استفاده از پردازنده هاي گرافيکي در تشخيص هويت با کمک الگوهاي عنبيه
خلاصه : در اين مقاله روش جديدي براي تشخيص هويت با کمک الگوهاي عنبيه ارائه شده است . براي شناسايي مرزهاي داخلي و خارجي عنبيه - مرز عنبيه با مردمک و مرز عنبيه با صلبيه - از تبديل هاف دايره اي و سپس تبديل مختصات دکارتي به قطبي و نرمال سازي آن و تبديل به کد کردن آن قسمت از عنبيه که نرمال سازي شده و سپس موازي سازي کد با استفاده از برنامه نويسي 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 و دستيابي محدود شده براي اتاق هاي شاهد پليس هستند. سه مرحله اصلي در سيستم تشخيص عنبيه پيش پردازش تصوير، استخراج ويژگي و تطبيق الگو هستند. يک سيستم تشخيص عنبيه ي کامل به مراحل زير تقسيم مي شود.