فریم ورک داروین (Darwin Framework)

فریم ورک داروین (Darwin Framework)

این فریم ورک بر اساس الگوریتم ژنتیک (Genetic Algorithm) ساخته شده است و نام گذاری آن به افتخار چارلز داروین می باشد. اولین نسخه از این فریم ورک در سال 2003 عرضه شد و نسخه بعدی آن که پایدارتر بوده و دارای تغییرات جزئی نسبت به نسخه اول آن است در ماه مارچ 2007 با عنوان نسخه 1.2 عرضه شده است.لایسنس این فریم ورک BSD است بدین معنی که برای هر دو کاربرد آکادمیک و تجاری همیشه رایگان و توسعه پذیر است. این فریم ورک در حوزه الگوریتم های تکاملی، یادگیری ماشین، بینایی ماشین و علوم مرتبط به کار می رود. البته شایان ذکر است بین علوم هوش مصنوعی مرز دقیقی وجود ندارد و می توان این فریم ورک که دارای پویایی بسیاری است را با توسعه، در هر حوزه ای به کار گرفت. از مهمترین خصوصیات این فریم ورک می توان به موارد زیر اشاره کرد:

  • توسعه از کد، یعنی کاربر می تواند مطابق با نیازش و داده ها، ساختار فریم ورک را تغییر دهد.

  • جدایی کلاس های فریم ورک (هسته فریم ورک) از کلاس های نرم افزار.

  • حفظ تشابه با مکانیزم با مکانیزم تکامل طبیعی.

فریم ورک داروین برای محاسبات تکاملی سریع و کارآمد بهینه نشده است، اما می توان از آن برای ذخیره سازی مناسب نتایج محاسبه شده استفاده کرد. جدیدترین نسخه این فریم ورک با نام داروین 2 موجود است که نسخه آن 2.1.9 می باشد که دارای 342 کلاس فریم ورکی است که همراه با تست های واحدها و منابعش، شامل 34000 خط کد می شود. سه هسته فریم ورکی مهم که در نسخه آخر آن به روزرسانی کامل شده اند عبارتند از BeanPot  با 4800 خط کد، toString  با 1200 خط کد و Jexpression با 4200 خط کد.

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

فریم ورک داروین بر پایه جاوا نوشته شده است و در کامپایلرهای جاوا، C و ++C قابل استفاده در سیستم عامل های لینوکس، ویندوز و مکینتاش می باشد. در تصویر 1 می توان ساختار پایه که نرم افزار داروین و پروژه ها با کتابخانه داروین پیوند داده می شوند را مشاهده کرد که مانند یک third-party و مجموعه کوچکی از کتابخانه های خارجی است.

 

تصویر 1 – ساختار پایه داروین

 

افراد زیر کمک شایانی به کدهای داروین کرده اند:

  • Paul Baumstarck (drwnBitArray کلاس)

  • David Breeden (drwnThreadPool کلاس)

  • Jason Corso (drwnHistogram کلاس)

  • Ian Goodfellow (drwnThreadPool کلاس)

  • Stephen Gould (توسعه دهنده هسته داروین)

  • Hendra Gunadi (drwnTRWSInference کلاس)

  • Kevin Guo (drwnGrabCutInstance کلاس)

  • Robin Liang (drwnInPaint کلاس)

  • Jimmy Lin (drwnSLICSuperpixels تابع)

تصویر 2 وابستگی کتابخانه های داروین را نمایش می دهد. بخش های خط تیره، قسمت های اختیاری هستند، قابل ذکر است که در بعضی از پروژه ها برای اینکه توابع به درستی کار کنند به این ساختار کلی نیاز مبرمی می باشد.

 

تصویر 2 – وابستگی کتابخانه های داروین

 

کتابخانه drwnBase تعدادی کلاس ابزاری برای هسته مانند پردازش خط فرمان، کد پروفایل و پیام ورود به سیستم که در ادامه سیستم، سراسر استفاده شده است را فراهم می کند. تمامی نرم افزارهایی که از فریم ورک داروین استفاده می کنند می بایست فایل سرآیند drwnBase.h را در فراخوانی داشته باشند.

کتابخانه drwnIO، توابع ورودی / خروجی مانند واحد ذخیره سازی داده به صورت فشرده شده یا فشرده نشده که توسط کتابخانه دیگری به نام zlib عملیات فشرده سازی انجام می شود را فراهم می کند. فایل سرآیند آن به شکل drwnIO.h می باشد.

کتابخانه drwnML یک سری توانایی های یادگیری ماشین برای بهینه سازی، طبقه بندی، رگرسیون و مدل سازی توزیع احتمال را فراهم می آورد. تمامی نرم افزارهایی که نیاز به استفاده از توانایی های یادگیری ماشین دارند می بایست فایل سرآیند drwnML.h را فراخوانی کنند.

کتابخانه drwnPGM، زیرساخت های لازم برای استنتاج و آموزش در مدل های گرافیکی احتمالاتی فراهم می کند. نرم افزارهایی که از PGM که مخفف شده Probabilistic Graphical Models است، استفاده می کنند می بایست فایل سرآیند drwnPGM.h را فراخوانی نمایند.

کتابخانه drwnVision عملیات بینایی ماشین در سطح بالا را ارائه می دهد. در زمان استفاده از این کتابخانه نیاز به کتابخانه های OpenCV می باشد (http://code.opencv.org) که استفاده از این کتابخانه در کاربردهای غیر از عملیات بینایی ماشین و نیاز نداشتن به توابع داخلی آن، اختیاری است. شکل فرخوانی فایل سرآیند drwnVision.h است.

 

کاربردها و پروژه ها

فریم ورک داروین به صورت از پیش تعریف شده دارای پروژه های زیادی در حوزه یادگیری ماشین و بینایی ماشین (در صورت استفاده از OpenCV می توان از آن ها استفاده کرد) می باشد. یکی از کاربردهای جالب این فریم ورک این است که می تواند با رابط mex فایل ها در برنامه MATLAB ارتباط برقرار کند و از این فریم ورک مانند OpenCV و OpenGL در MATLAB هم بهره برد که در برنامه های یادگیری ماشین، بینایی ماشین، الگوریتم های تکاملی، تشخیص الگو و غیره استفاده کرد.

 

دانلود و نصب

فریم ورک داروین وابستگی ای به کتابخانه های خارجی دارد که بعضی از آن ها مانند RapidXML و RapidJSON را در خود به صورت پیش فرض جای داده است اما کتابخانه های بزرگ مانند OpenCV و Eigen – در صورت نیاز در کاربردهای مختلف – می بایست به صورت جداگانه نصب شوند. سورس کد داروین در لینک http://github.com/sgould/drwn موجود است. آخرین نسخه این برنامه که پایدارترین نسخه حال حاضر فریم ورک داروین است را پیشنهاد می کنیم از لینک https://github.com/sgould/drwn/releases/tag/v1.9.0 دانلود بفرمایید. نسخه های پایدار دیگر را هم می توانید از لینک http://drwn.anu.edu.au/drwnDownloadsDoc.html دانلود نمایید.

جهت دانلود کتابخانه های دیگر برای ارتباط با فریم ورک داروین می توانید به این لینک ها مراجعه نمایید.

برای دانلود کتابخانه Eigen از لینک http://eigen.tuxfamily.org

برای دانلود کتابخانه C++ STL از لینک http://www.sgi.com/tech/stl

برای دانلود کتابخانه OpenCV از لینک http://code.opencv.org

برای دانلود کتابخانه RapidXML از لینک http://rapidxml.sourceforge.net – البته به صورت پیش فرض در اکثر نسخه های پایدار فریم ورک داروین موجود است اما فایل های کتابخانه جداگانه آن در صورت نیاز در لینک فوق می باشد.

برای دانلود کتابخانه RapidJSON از لینک http://github.com/miloyip/rapidjson – البته به صورت پیش فرض در اکثر نسخه های پایدار فریم ورک داروین موجود است اما فایل های کتابخانه جداگانه آن در صورت نیاز در لینک فوق می باشد.

 

منبع:

سایت رسمی فریم ورک داروین به آدرس http://drwn.anu.edu.au

http://www.nn4e.com/nn4efree/articles/561_4.jpg

http://www.nn4e.com/nn4efree/articles/561_4.jpg

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *