حذف نویز تصاویر _ گروهی از محققان سیستمی را توسعه داده اند که با استفاده از هوش مصنوعی و بدون نیاز به عکس های واضح از منبع، نویز تصاویر را از بین می برد.
شرح خبر
این گروه متشکل از محققان انویدیا، MIT و دانشگاه آلتو در توسعه این سیستم از یادگیری عمیق بهره برده اند که بر خلاف روش های قبلی نیازی به مشاهده نمونه های کامل از تصویر مورد نظر داشته و تنها با استفاده از داده های ناقص یا دو تصویر غیر واضح به افزایش کیفیت تصاویر می پردازد. علاوه بر این نتیجه نهایی افزایش کیفیت، حذف متون یا اصلاح تصویر نسبت به روش های قبلی به مراتب بهتر است.
یادگیری عمیق گونه ای از یادگیری ماشینی است که در آن سیستم با کمک هوش مصنوعی نحوه بازیابی تصاویر دارای نویز از طریق کنار هم قرار دادن تصاویر، متون یا ویدیوها را فرا می گیرد. یکی دیگر از قابلیت های جالب توجه سیستم جدید افزایش کیفیت تصاویر در عرض چند میلی ثانیه است. مبنای کار هوش مصنوعی در این سیستم بر شبکه عصبی استوار است که با استفاده از تصاویر دارای نویز آموزش دیده است. در این روش هوش مصنوعی علی رغم عدم نیاز به تصاویر واضح از منبع باید دوبار تصویر را مشاهده کند.
آزمایشات این گروه نشان داده که از تصاویر تخریب شده از طریق نویزهایی نظیر «گاوسی افزایشی»، «پواسون» یا ترکیب آنها می توان برای تولید تصاویر بهینه ای استفاده کرد که کیفیت آنها با تصاویر بازیابی شده از عکس های بدون مشکل تقریبا برابر است. کاربردهای علمی این سیستم مبتنی بر یادگیری عمیق شامل زمینه های پزشکی است که در آن می توان کیفیت اسکن های MRI و تصاویر دیگر را به شکل چشمگیری افزایش داد.
چند ماه قبل نیز تیم تحقیقاتی انستیتوی «ماکس پلانک» به رهبری دکتر مهدی سجادی، الگوریتمی را توسعه داده بودند که با بهره گیری از هوش مصنوعی وضوح تصاویر بی کیفیت را تا حد زیادی بهبود می بخشید.
محاسبات نرم (به انگلیسی: soft computing) به مجموعهای از شیوههای جدید محاسباتی در علوم رایانه، هوش مصنوعی، یادگیری ماشینی و بسیاری از زمینههای کاربردی دیگر اطلاق میشود. در تمامی این زمینهها به مطالعه، مدلسازی و آنالیز پدیدههای بسیار پیچیدهای نیاز است که شیوههای علمی دقیق در گذشته، در حل آسان، تحلیلی، و کامل آنها موفق نبودهاند.
نکتهها و چراییهای فلسفی
در مقایسه با تدابیر علمی نرم، روشهای علمی بهکاررفته در سدههای پیشین، تنها از عهدهٔ مدلسازی و آنالیز سامانههای نسبتاً ساده در مکانیک، فیزیک، و برخی از زمینههای کاربردی و مهندسیبرآمدهاند. مسائل پیچیدهتری همچون سامانههای وابسته به علوم زیستشناسی و پزشکی، علوم اجتماعی، علوم انسانی، علوم مدیریت و نظایر آنها بیرون از قلمرو اصلی و توفیقآفرین روشهایریاضی و تحلیلی دقیق باقی ماندهبودند. شایان ذکر است که خصایص سادگی و پیچیدگی اموری هستند نسبی، و بهطور یقین، اغلب مدلسازیهای ریاضی و علمی موفق در گذشته هم، به مفهوم مطلق کلام، بسیار پراهمیت و پیچیده بودهاند.
محاسبات نرم با تقبل نادقیق بودن و با محور قراردادن ذهن انسان بهپیش میرود. اصل هدایتکنندهٔ محاسبات نرم بهرهبرداری از خاصیت عدم دقیقبودن جهت مهارکردن مسئله و پایینآوردن هزینهٔ راهحل است.
محاسبات نرم را میشود حاصل تلاشهای جدید علمی دانست که مدلسازی، تحلیل، و در نهایت کنترل سیستمهای پیچیده را با سهولت و موفقیت زیادتری امکانپذیر میسازد. به عنوان مهمترین شاخههای این محاسبات، باید منطق فازی، شبکههای عصبی مصنوعی، و الگوریتم ژنتیک را بر شمرد.
برخلاف شیوههای محاسباتی سخت که تمامی همت و توان خود را به دقیقبودن، و “در جهتِ مدل نمودنِ کاملِ حقیقت”، معطوف میدارند، روشهای نرم، براساس تحمل نادقیقنگریها، حقایق جزئی و ناکامل، و فقدان اطمینان، استوار گردیدهاند. درک هرچه روشنتر از چرایی، چگونگی، و نیز فلسفهٔ اینگونه محاسباتِ جدید است که افقهای جدید در علوم پیچیدهٔ آینده را روشن میسازد.
یکی از بزرگترین زمینههای کاربرد محاسبات نرم در ایجاد و گسترش وب معنیگرا خواهد بود.
محاسبات نرم در مقایسه با محاسبات سخت به زبان سادهٔ علمی، روشهای سخت، برآمده از طبیعت و نحوهٔ رفتار ماشین است؛ ولی، در مقابل، شیوههای نرم، به انسان و تدابیر اتخاذشده از سویذهن او به منظور حل و فصلِ مسائل، اختصاص پیدا میکند.
شناسایی و نحوه کنترل رفتار یک پدیده و سیستم، از مباحث مهم و کلیدی در امر سیستم کنترل می باشد. اصولاً جهت شناسایی و مدل سازی رفتار یک سیستم به معادله ریاضی آن رجوع می شود. بسیاری از پدیده ها رفتار پیچیده ای دارند و براحتی نمی توان معادله ریاضی آن را بدست آورد. مثلاً نحوه کنترل نوسان بار جرثقیل هوایی جهت قرار دادن بار در نقطه مطلوب، بسیار پیچیده است و اغلب به ۱۰۰% دقیق نیز نخواهد بود و حداقل نیازمند یک معادله دیفرانسل درجه ۵ جهت پیاده سازی آن خواهیم بود.
در صورتی که فقط یک متغیر دیگر بخواهیم به سیستم فوق اضافه نماییم، ممکن است این معادله دیفرانسیل پیچیده تر نیز بشود. بدست آوردن خود این معادله ریاضی دردسر فراوانی دارد، پیاده سازی آن در یک سیستم کنترل الکترونیکی چالش بزرگتری است.
مغز انسان، هرگز برای برخورد با چالش ها و مسائل روزمره پیرامونش، خود را درگیر فرمول و محاسبات پیچیده نمی کند. انسان براساس یادگیری ها و آموخته های خود تصمیماتی می گیرد که منجر به کنترل مسائل پیچیده خواهد بود. اما همین انسان در صورتی که بخواهد نحوه برخورد با یک فرد متخلف را مدل نماید و آن را به یک کامپیوتر بسپارد، حداقل نیاز به دانش معادلات دیفرانسیل، معادلات لاپلاس و … می باشد. اینگونه محاسبات خشک و مبتنی بر معادلات دقیق ریاضیات تحت عنوان “محاسبات سخت” نامیده می شوند.
از طرف دیگر روش هایی وجود دارند که می توانند رفتار پیچیده ترین و مغشوش ترین پدیده ها را نیز با دقت بالایی (نه بصورت ۱۰۰ %دقیق) مدل سازی نمایند. این محاسبات که تحت عنوان “محاسبات نرم” شناخته می شوند، مبتنی بر استنتاج ذهن انسان، شبیه سازی عملکرد نرون های مغز، شبیه سازی رفتار پدیده های اجتماعی طبیعت (الگوریتم های تکاملی مثل ژنتیک، فاخته، کلونی مورچه و…) است.
شبکه های عصبی مصنوعی، سیستم های فازی و الگوریتم های تکاملی از مهمترین شاخه های محاسبات نرم محسوب می شوند. یک راننده ماهر جرثقیل هوایی جهت کنترل نوسان بار، هرگز در ذهنش یک معادله درجه ۵ را بکار نمی گیرد. او با استفاده از یک سیستم استنتاج فازی ذهنی (تعدادی اگر-آنگاه) به خوبی این سیستم پیچیده را با استفاده از تجربیاتش کنترل می نماید. در واقع می توان این تجربیات فرد متخصص را بصورت قوانین فازی درآورد و به سیستم کنترل سپرد.
در سال های اخیر، کاربرد محاسبات نرم در هوش مصنوعی، داده کاوی و سیستم های کنترل هوشمند بسیار پر رنگ و چاره ساز بوده است.
ربات يك ماشين الكترومكانيكي هوشمند است با خصوصيات زير: – مي توان آن را مكرراً برنامه ريزي كرد. – چند كاره است. – كارآمد و مناسب براي محيط است.
اجزاي يك ربات
– وسايل مكانيكي و الكتريكي: شاسي، موتورها، منبع تغذيه، … – حسگرها (براي شناسايي محيط): دوربين ها، سنسورهاي sonar، سنسورهاي ultrasound، … – عملكردها (براي انجام اعمال لازم) بازوي روبات، چرخها، پاها، … – قسمت تصميم گيري (برنامه اي براي تعيين اعمال لازم): حركت در يك جهت خاص، دوري از موانع، برداشتن اجسام، … – قسمت كنترل (براي راه اندازي و بررسي حركات روبات): نيروها و گشتاورهاي موتورها براي سرعت مورد نظر، جهت مورد نظر، كنترل مسير، ..
تاريخچه رباتيك:
– ۲۷۰ ق م : زماني كه يونانيان به ساخت مجسمه هاي متحرك ميپرداختند. – حدود سال ۱۲۵۰ م: بيشاپ آلبرتوس ماگنوس (Bishop Albertus Magnus) ضيافتي ترتيب داد كه درآن، ميزبانان آهني از مهمانان پذيرايي مي كردند. با ديدن اين روبات، سنت توماس آكويناس (Thomas Aquinas) برآشفته شد، ميزبان آهني را تكه تكه كرد و بيشاب را ساحر و جادوگر خواند. – سال ۱۶۴۰ م: دكارت ماشين خودكاري به صورت يك خانم ساخت و آن را Ma fille Francine ” مي ناميد.اين ماشين كه دكارت را در يك سفر دريايي همراهي مي كرد، توسط كاپيتان كشتي به آب پرتاب شد چرا كه وي تصور مي كرد اين موجود ساخته شيطان است. – سال ۱۷۳۸ م: ژاك دواكانسن (Jacques de Vaucanson) يك اردك مكانيكي ساخت كه از بيش از ۴۰۰۰ قطعه تشكيل شده بود. اين اردك مي توانست از خود صدا توليد كند، شنا كند، آب بنوشد، دانه بخورد و آن را هضم و سپس دفع كند. امروزه در مورد محل نگهداري اين اردك اطلاعي در دست نيست. – سال ۱۸۰۵ م: عروسكي توسط ميلاردت (Maillardet) ساخته شد كه مي توانست به زبان انگليسي و فرانسوي بنويسد و مناظري را نقاشي كند. – سال ۱۹۲۳ م: كارل چاپك (Karel Capek) براي اولين بار از كلمه روبات (robot) در نمايشنامه خود به عنوان آدم مصنوعي استفاده كرد. كلمه روبات از كلمه چك robota گرفته شده است كه به معني برده و كارگر مزدور است. موضوع نمايشنامه چاپك، كنترل انسانها توسط روباتها بود، ولي او هرگونه امكان جايگزيني انسان با روبات و يا اينكه روباتها از احساس برخوردار شوند، عاشق شوند، يا تنفر پيدا كنند را رد مي كرد. – سال ۱۹۴۰ م: شركت وستينگهاوس (Westinghouse Co.) سگي به نام اسپاركو (Sparko) ساخت كه هم از قطعات مكانيكي و هم الكتريكي در ساخب آن استفاده شده بود. اين اولين باري بود كه از قطعات الكتريكي نيز همراه با قطعات مكانيكي استفاده مي شد. – سال ۱۹۴۲ م: كلمه روباتيك (robatics) اولين بار توسط ايزاك آسيموف در يك داستان كوتاه ارائه شد. ايزاك آسيموف (۱۹۲۰-۱۹۹۲) نويسنده كتابهاي توصيفي درباره علوم و داستانهاي علمي تخيلي است. – دهه ۱۹۵۰ م: تكنولوژي كامپيوتر پيشرفت كرد و صنعت كنترل متحول شد. سؤلاتي مطرح شدند. مثلاً: آيا كامپيوتر يك روبات غير متحرك است؟ – سال ۱۹۵۴ م: عصر روبات ها با ارائه اولين روبات آدم نما توسط جرج دوول (George Devol) شروع شد. – سال ۱۹۵۶ م: پس از توسعه فعاليتهاي تكنولوژي يك كه بعد از جنگ جهاني دوم، يك ملاقات تاريخي بين جورج سي.دوول(George C.Devol) مخترع و كارآفرين صاحب نام، و ژوزف اف.انگلبرگر (Joseph F.Engelberger) كه يك مهندس با سابقه بود، صورت گرفت. در اين ملاقات آنها به بحث در مورد داستان آسيموف پرداختند. ايشان سپس به موفقيتهاي اساسي در توليد روباتها دست يافتند و با تأسيس شركتهاي تجاري، به توليد روبات مشغول شدند. انگلبرگر شركت Unimate برگرفته از Universal Automation را براي توليد روبات پايه گذاري كرد. نخستين روباتهاي اين شركت در كارخانه جنرال موتورز (General Motors) براي انجام كارهاي دشوار در خودروسازي به كار گرفته شد. انگلبرگر را “پدر روباتيك” ناميده اند. – دهه ۱۹۶۰ م: روباتهاي صنعتي زيادي ساخته شدند. انجمن صنايع روباتيك اين تعريف را براي روبات صنعتي ارائه كرد: “روبات صنعتي يك وسيلة چند كاره و با قابليت برنامه ريزي چند باره است كه براي جابجايي قطعات، مواد، ابزارها يا وسايل خاص بوسيلة حركات برنامه ريزي شده، براي انجام كارهاي متنوع استفاده مي شود.” – سال ۱۹۶۲ م: شركت خودروسازي جنرال موتورز نخستين روبات Unimate را در خط مونتاژ خود به كار گرفت. – سال ۱۹۶۷ م: رالف موزر (Ralph Moser) از شركت جنرال الكتريك (General Electeric) نخستين روبات چهارپا را اختراع كرد. – سال ۱۹۸۳ م: شركت Odetics يك روبات شش پا ارائه كرد كه مي توانست از موانع عبور كند و بارهاي سنگيني را نيز با خود حمل كند. – سال ۱۹۸۵ م: نخستين روباتي كه به تنهايي توانايي راه رفتن داشت در دانشگاه ايالتي اهايو (Ohio State Uneversity) ساخته شد. – سال ۱۹۹۶ م: شركت ژاپني هندا (Honda) نخستين روبات انسان نما را ارائه كرد كه با دو دست و دو پا طوري طراحي شده بود كه مي توانست راه برود، از پله بالا برود، روي صندلي بنشيند و بلند شود و بارهايي به وزن ۵ كيلوگرم را حمل كند روباتها روز به روز هوشمندتر مي شوند تا هرچه بيشتر در كارهاي سخت و پر خطر به ياري انسانها بيايند. امروزه، ۹۰% روباتها، روباتهاي صنعتي هستند، يعني روباتهايي كه در كارخانه ها، آزمايشگاهها، انبارها، نيروگاهها، بيمارستانها، و بخشهاي مشابه به كارگرفته مي شوند.در سالهاي قبل، اكثر روباتهاي صنعتي در كارخانه هاي خودروسازي به كارگرفته مي شدند، ولي امروزه تنها حدود نيمي از روباتهاي موجود در دنيا در كارخانه هاي خودروسازي به كار گرفته مي شوند.مصارف روباتها در همه ابعاد زندگي انسان به سرعت در حال گسترش است تا كارهاي سخت و خطرناك را به جاي انسان انجام دهند.براي مثال امروزه براي بررسي وضعيت داخلي رآكتورها از روبات استفاده مي شود تا تشعشعات راديواكتيو به انسانها صدمه نزند.
۳ قانون روباتيك مطرح شده توسط آسيموف:
۱- روبات ها نبايد هيچگاه به انسانها صدمه بزنند. ۲- روباتهابايد دستورات انسانها را بدون سرپيجي از قانون اوّل اجرا كنند. ۳- روباتها بايد بدون نقض قانون اوّل و دوم از خود محافظت كنند.
انواع ربات ها :
رباتهاي امروزي كه شامل قطعات الكترونيكي و مكانيكي هستند در ابتدا به صورت بازوهاي مكانيكي براي جابجايي قطعات و يا كارهاي ساده و تكراري كه موجب خستگي و عدم تمركز كارگر و افت بازده ميشد بوجود آمدند. اينگونه رباتها جابجاگر (manipulator) نام دارند. جابجاگرها معمولا در نقطه ثابت و در فضاي كاملا كنترل شده در كارخانه نصب ميشوند و به غير از وظيفه اي كه به خاطر آن طراحي شده اند قادر به انجام كار ديگري نيستند. اين وظيفه ميتواند در حد بسته بندي توليدات, كنترل كيفيت و جدا كردن توليدات بي كيفيت, و يا كارهاي پيچيده تري همچون جوشكاري و رنگزني با دقت بالا باشد. نوع ديگر رباتها كه امروزه مورد توجه بيشتري است رباتهاي متحرك هستند كه مانند رباتهاي جابجا كننده در محيط ثابت و شرايط كنترل شده كار نميكنند. بلكه همانند موجودات زنده در دنياي واقعي و با شرايط واقعي زندگي ميكنند و سير اتفاقاتي كه ربات بايد با انها روبرو شود از قبل مشخص نيست. در اين نوع ربات هاست كه تكنيك هاي هوش مصنوعي ميبايست در كنترلر ربات(مغز ربات) به كار گرفته شود.
رباتهاي متحرك به دسته هاي زير تقسيم بندي ميشوند:
۱-رباتهاي چرخ دار با انواع چرخ عادي و يا شني تانك و با پيكربندي هاي مختلف يك, دو يا چند قسمتي ۲-رباتهاي پادار مثل سگ اسباب بازيAIBO ساخت سوني كه در شكل بالا نشان داده شد يا ربات ASIMO ساخت شركت هوندا ۳-رباتهاي پرنده ۴-رباتهاي چند گانه(هايبريد) كه تركيبي از رباتهاي بالا يا تركيب با جابجاگرها هستند و …
مزاياي روباتها:
۱- روباتيك و اتوماسيون در بسياري از موارد مي توانند ايمني، ميزان توليد، بهره و كيفيت محصولات را افزايش دهند. ۲- روباتها مي توانند در موقعيت هاي خطرناك كار كنند و با اين كار جان هزاران انسان را نجات دهند. ۳- روباتها به راحتي محيط اطراف خود توجه ندارند و نيازهاي انساني براي آنها مفهومي ندارد. روباتها هيچگاه خسته نمي شوند. ۴- دقت روباتها خيلي بيشتر از انسانها است آنها در حد ميلي يا حتي ميكرو اينچ دقت دارند. ۵- روباتها مي توانند در يك لحظه چند كار را با هم انجام دهند ولي انسانها در يك لحظه تنها يك كار انجام مي دهند.
معايب روباتها:
۱- روباتها در موقعيتهاي اضطراري توانايي پاسخگويي مناسب ندارند كه اين مطلب مي تواند بسيار خطرناك باشد. ۲- روباتها هزينه بر هستند. ۳- قابليت هاي محدود دارند يعني فقط كاري كه براي آن ساخته شده اند را انجام مي دهند.
کلمه ربات توسط Karel Capek نویسنده نمایشنامه ( R.U.R عقل ربات های جهانی) در سال ۱۹۲۰ ابداع شد. ریشه این کلمه، کلمه چک اسلواکی (robotnic) به معنی کارگر میباشد.
امروزه معمولاً کلمه ربات به معنی هر ماشین ساخت بشر که بتواند کار یا عملی که بهطور طبیعی توسط انسان انجام میشود را انجام دهد، استفاده میشود.
رباتیک چیست ؟
رباتیک شاخه ای از مهندسی مکانیک، مهندسی برق، مهندسی الکترونیک و علوم کامپیوتر است که به طراحی، ساخت، بهره برداری و استفاده از ربات می پردازد. رباتیک فناوری جدیدی نیست ولی توانایی کاربردش در تمام عرصههای علوم و تاثیرش در فناوریهای دیگر اهمیت زیادی دارد.
منظور از ربات های صنعتی چیست ؟
امروزه، ۹۰% رباتها، رباتهای صنعتی هستند، یعنی رباتهایی که در کارخانه ها، آزمایشگاهها، انبارها، نیروگاهها، بیمارستانها، و بخشهای مشابه به کارگرفته می شوند.در سالهای قبل، اکثر رباتهای صنعتی در کارخانه های خودروسازی به کارگرفته می شدند، ولی امروزه تنها حدود نیمی از رباتهای موجود در دنیا در کارخانه های خودروسازی به کار گرفته می شوند.
رباتها از چه ساخته میشوند؟
رباتها دارای سه قسمت اصلی هستند:
مغز که معمولاً یک کامپیوتر است.
محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخها، چرخ دندهها و …
سنسور که میتواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.با این سه قسمت، یک ربات میتواند با اثرپذیری و اثرگذاری در محیط کاربردیتر شود.
جنبه های رباتیک
نمی توان گفت که انواع مختلفی از رباتها وجود دارند. آنها با توجه به محیط ها و کاربردهای مختلف ساخته می شوند که باعث می شود دارای اشکال و نرم افزارهای مختلفی باشند ، اما در ساخت همه ی آنها سه موضوع مشترک وجود دارد :
قطعات مکانیکی مانند قاب ، فرم ، طراحی شکل ربات
قطعات الکتریکی مانند مدارهای کنترلی و باتری
کد های برنامه نویسی که باعث می شود یک ربات تحت شرایط خاص چگونه عمل کند.
تأثیر رباتیک در جامعه
علم رباتیک در اصل در صنعت بهکار میرود و ما تأثیر آن را در محصولاتی که هر روزه استفاده میکنیم، میبینیم. که این تأثیرات معمولاً در محصولات ارزانتر دیده میشود.
رباتها معمولاً در مواردی استفاده میشوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خطر فعالیت نمایند مثل اکتشافات در مکانهای خطرناک مانند آتشفشانها که میتوان بدون به خطر انداختن انسانها انجام داد.
قوانین سهگانه رباتیک
ایزاک آسیموف نویسنده داستانهای علمی تخیلی قوانین سهگانه رباتیک را به صورت زیر تعریفکرده است: ۱ـ یک ربات نباید به هستی انسان آسیب برساند یا به واسطه بیتحرکی، زندگی یک انسان را به مخاطره بیاندازد. ۲ـ یک ربات باید از دستوراتی که توسط انسان به او داده میشود، اطاعت کند؛ جز در مواردی که با قانون یکم در تضاد هستند. ۳ـ یک ربات باید تا جاییکه با قوانین یکم و سوم در تضاد نباشد از خود محافظت کند.
مشکلات رباتیک
یک ربات مانند هر ماشین دیگری، میتواند بشکند یا به هر علتی خراب شود. ضمناً آنها ماشینهای قدرتمندی هستند که به ما اجازه میدهند کارهای معینی را کنترل کنیم.
خوشبختانه خرابی رباتها بسیار نادر است زیرا سیستم رباتیک با مشخصههای امنیتی زیادی طراحی میشود که میتواند آسیب آنها را محدود کند.
در این حوزه نیز مشکلاتی در رابطه با انسانهای شرور و استفاده از رباتها برای مقاصد شیطانی داریم. مطمئناً رباتها میتوانند در جنگهای آینده استفاده شوند. این میتواند هم خوب و هم بد باشد. اگر انسانها اعمال خشونت آمیز را با فرستادن ماشینها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسانها به جنگ با یکدیگر باشد. رباتها میتوانند برای دفاع از یک کشور در مقابل حملات استفاده میشوند تا تلفات انسانی را کاهش دهد. آیا جنگهای آینده میتواند فقط یک بازی ویدئویی باشد که رباتها را کنترل میکند؟
مزایای رباتیک
معمولاً یک ربات میتواند کارهایی که ما انسانها میخواهیم انجام دهیم را ارزانتر انجام دهد. رباتها میتوانند کارها را دقیقتر از انسانها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت بخشند. رباتها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند. برای مثال امروزه برای بررسی وضعیت داخلی رآکتورها از ربات استفاده می شود تا تشعشعات رادیواکتیو به انسانها صدمه نزند. رباتها روز به روز هوشمندتر می شوند تا هرچه بیشتر در کارهای سخت و پر خطر به یاری انسانها بیایند.
نرم افزارهای حوزه ی رباتیک
RobotWorks : این نرم افزار میتواند واسط رباتیک و گذرگاه شبیه سازی ربات را برای نرم افزار محبوب SolidWorks ایجاد نماید. با استفاده از RobotWorks قادر خواهید بود ربات های صنعتی خود را در نرم افزار SolidWorks طراحی کرده و حرکات و اطلاعات مربوط به آنها را به صورت سه بعدی ( در نرم افزار RobotWorks ) مشاهده نمایید .
EASY-ROB : EASY-ROB یک نرم افزار کاربردی در زمینه ی شبیه سازی بازو های رباتیک است که کاربران با استفاده از آن میتوانند ضمن مشاهده ی رفتار دقیق بازو، اطلاعات مربوط به ساخت آن را نیز از نرم افزار استخراج نمایید.
RoboCupRescue : وجود بلایای طبعیی همچون سیل، زلزله و… و خرابی هایی که بعد از رخ دادن آنها دامن گیر انسان ها میشود باعث شد، تا بشر به کاربرد ربات ها در زمینه ی امداد و نجات توجه بیشتر داشته باشد، در این بین گروه های مختلفی در زمینه ی طراحی و ساخت ربات های امداد گر شروع به فعالیت کردند یکی از این گروه ها تیم تحقیقاتی RoboCupRescue میباشد.
Microsoft Robotics Developer Studio : این نرم افزار یکی از نرم افزارهای قوی در زمینه شبیه سازی ربات ها است.شما با استفاده از این نرم افزار، می توانید به راحتی بخش مکانیک ربات خود را شبیه سازی نمایید.
Webots : نرم افزار Webots برای مدلسازی و برنامه نویسی و شبیه سازی ربات های متحرک مورد استفاده قرار می گیرد.کتابخانه های این محصول، به شما امکان می دهد که برنامه های کنترلی خودتان را به منظور ساخت ربات های واقعی بر روی این ربات ها به اجرا در بیاورید. همچنین خود نرم افزار هم این امکان رو به شما می دهد که ربات های مختلفی را در یک محیط طراحی کنید و برای هر کدام می توانید ویژگی های متفاوتی را تعریف کنید، همانند، شکل، رنگ، تکسچر، جرم، اصطکاک و غیره. همچنین شما می توانید هر ربات را با تعداد زیادی از سنسورها و محرک ها مجهز کنید. شما قادر خواهید بود که برای آنها برنامه نویسی کنید و نتایج را بر روی ربات های واقعی پیاده کنید. بیش از ۵۰۰۰ دانشگاه و مرکز تحقیقاتی از این نرم افزار استفاده می کنند.
تاثیرات شغلی رباتیک
بسیاری از مردم از اینکه رباتها تعداد شغلها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیهای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت تکنولوژی مانند رباتها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهرهورتر میشود.
آینده رباتیک
جمعیت رباتها به سرعت در حال افزایش است. این رشد توسط ژاپنیها که رباتهای آنها تقریباً دو برابر تعداد رباتهای آمریکا است، هدایت شده است. همه ارزیابیها بر این نکته تأکید دارد که رباتها نقش فزایندهای در جوامع مدرن ایفا خواهند کرد. آن ها به انجام کارهای خطرناک، تکراری، پر هزینه و دقیق ادامه میدهند تا انسانها را از انجام آنها باز دارند.
رباتیک شاخه ای میان رشته ای از مهندسی و علم است که شامل مهندسی مکانیک ، مهندسی برق و علوم رایانه و چند رشته دیگر میشود . رباتیک شامل طراحی ، ساخت ، راه اندازی و استفاده از رباتها می شود، همچنین مانند سیستم های رایانه ای ، کنترل ، بازخورد حسگرها و پردازش اطلاعات نیز در این گروه قرار می گیرند.
برای آشنایی بیشتر با ربات میتوانید به نوشته ربات چیست مراجعه نمایید.
این فناوریها استفاده می شوند تا ماشینها را به گونه ای ارتقا دهند که جایگزین انسان گردند. رباتها می توانند در هر موقعیت و برای هر منظوری به کار بروند ولی امروزه بسیاری از آنها در محیط های خطرناک ( مانند تشخیص و غیر فعال سازی بمبها ) ، فرآیندهای تولید یا مکانهایی که انسان قادر به حیات نیست ، استفاده می شوند. رباتها می توانند به هر شکل و قیافه ای باشند ولی بعضی از آنها طراحی می شوند تا شبیه انسان به نظر برسند. گفته میشود که این کار به این دلیل صورت می گیرد تا رفتارهای این رباتها که از مردم عادی تقلید میشود ، بیشتر مورد قبول قرار گیرد. تلاش میشود که رباتهای انسان نما بتوانند راه رفتن ، حرف زدن ، شناختن و مخصوصا هر چیزی را که انسان میتواند انجام دهد ، تقلید کنند . خیلی از رباتهای امروزی که از طبیعت الهام گرفته شده اند ، در پهنه رباتهای مقلد موجودات زنده قرار می گیرند.
سیستم دست رباتی سایه
ایده ایجاد ماشینهایی که بتوانند به شکل خودکار کار کنند ، به دوران قدیم بازمی گردد ولی تحقیق اساسی در مورد به کاربرد رساندن و استفاده های بالقوه از رباتها تا قرن بیستم انجام نشده بود. در طول تاریخ بارها خاطر نشان شده است که یک روز رباتها خواهند توانست رفتار انسانها را تقلید کنند و کارها را به شیوه مشابه انسان انجام دهند . امروزه رباتیک یک حوزه از علم با رشد سریع است. ، همزمان با ادامه پیشربتهای تکنولوژی ؛ تحقیق ، طراحی و ساخت رباتهای جدید در خدمت اهداف عملی متعددی در حوزه های خانگی ، صنعتی و نظامی انجام می گیرد. بسیاری از رباتها برای انجام شغلهای خطرناک برای مردم انجام وظیفه می کنند ، مانند کار کردن در خنثی سازی بمب ، یافتن بازمانده های زیر آوارهای غیر پایدار ، مین یابی یا جستجوی کشتی های غرق شده .
رباتیک همچنین به عنوان یک هدف آموزشی در مجموعه چند گانه علم ، تکنولوژی ، مهندسی و ریاضی نیز به کار می رود.
ریشه شناسی
رباتیک از کلمه ربات مشتق شده است . خود کلمه ربات برای اولین بار توسط نویسنده ای از اهالی چکسلواکی به نام کارل چاپک و در نمایشنامه ای به اسم کارخانه ربات سازی روسوم در سال ۱۹۲۰ معرفی شد. کلمه روبات از واژه اسلاوی ” روبوتا ” به دست آمده است که در اصل به معنی کارگر به کار می رود. نمایشنامه در مورد یک کارخانه است که آدم های مصنوعی به نام ربات ها تولید می کند ؛ موجوداتی که می توانند با انسانها اشتباه گرفته شوند و این بسیار مشابه ایده های مدرن امروزی در مورد انسان نماها است. کارل چاپک این کلمه را متعلق به خودش نمی داند ، وی یک نامه کوتاه به قسمت ریشه شناسی لغات در فرهنگ انگلیسی آکسفورد نوشته است که در آن برادرش جوزف چاپک را به عنوان ابداع کننده اصلی این کلمه نام برده است.
مطابق فرهنگ انگلیسی آکسفورد کلمه رباتیک اولین بار در نوشته ای توسط آیزاک آسیموف ، در قسمتی از یک داستان کوتاه علمی تخیلی به نام “دروغگو” به کار برده شد. این داستان اولین بار در مجله علمی تخیلی استوندینگ چاپ شد. در آن هنگام آسیموف خودش نمی دانست که این کلمه به نام او ثبت خواهد شد ؛ وی فکر می کرد همان گونه که علم و تکنولوژی مربوط به وسایل الکترونیکی را الکترونیک می نامند ، پس رباتیک به علم و تکنولوژی مربوط به رباتها اشاره خواهد داشت . آسیموف در بعضی از آثارش خاطر نشان می کند که اولین کاربرد کلمه رباتیک در داستان کوتاه او به نام “سرگردانی” ( مجله علمی تخیلی استوندینگ ، مارس ۱۹۴۲ ) بوده است ولی باید توجه کرد که چاپ اصلی داستان “دروغگو” ده ماه پیش از “سرگردانی” بوده است ، بنابراین عموما داستان قدیمی تر به عنوان منشا کلمه شناخته می شود.
اگر فردی علاقهمند به تکنولوژی هستید یا اخبار روز دنیا را در زمینههای مختلف علمی دنبال میکنید، حتما متوجه شدهاید، همان گونه که امروزه رباتها در بسیاری از مسائل مانند: ” صنعت، پزشکی، آتش نشانی ، حتی در خانهها و ...” به کمک انسانها امده و بسیاری از مشکلات را حل کرده است، تاثیر وسیعی در زندگی آینده انسانها خواهند داشت.
امروزه همان طور که شاهد آن هستیم، خانوادهها چه در ایران و چه در خارج کشور فرزند خود را تشویق به حضور در کلاسهای رباتیک و ساخت رباتها میکنند و همچنین مسابقات رباتها که در زمینههای مختلفی به انجام میرسد، با استقبال خوب و رو به رشدی از سوی اکثر کشورها مواجه میشود.همچنین رشتهی دانشگاهی مهندسی رباتیک و هوش مصنوعی در خارج از کشور با استقبال خوبی از سوی علاقه مندان به این حوزه رو به رو است و زمینههای تحقیقاتی و کاری فراوانی برای مهندسین و فارغ التحصیلان این رشته تدارک دیده اند، زیرا این موضوع برای آنها روشن است، که زندگی امروز و فردای ما، جدا از رباتها امکان پذیر نیست.
برای آشنایی بیشتر با هوش مصنوعی میتوانید به نوشته هوش مصنوعی چیست مراجعه نمایید.
دکتر کارو لوکاس قوکاسیان ،دانشمند برجسته ایرانی و از پژوهشگران به نام سیستمهای هوشمند در ایران بود. زمینهی پژوهشهای او پیشبینی سریهای زمانی، مدلهای عاطفی و منطق فازی است. وی همچنین به عنوان «پدر علم رباتیک ایران» شناخته میشود.صحبتهای ایشان در زمینه رباتیک این جمله را تصدیق میکند که :
یکی از مهمترین دستاوردهای علمی بشر، علم رباتیک است که با رشد روز افزون دانش بشری، بیشتر وارد زندگی انسانها شده و آن را دستخوش تغییر میکند.
رباتیک دقیقا یعنی چه؟
رباتیک علم مطالعه فن آوری مرتبط با طراحی ساخت و اصول کلی و کاربرد رباتها است، که با هدف راحتی انسان و افزایش وقت مفید او به وجود آمده است، به عبارت دیگر رباتیک علم و فن آوری ماشینهای قابل برنامه ریزی، با کاربردهای عمومی میباشد.
هر دستگاه الکترومکانیکی که عمل خاصی را انجام دهد ربات نامیده میشود که میتواند جهت انجام یک وظیفه خاص برنامه ریزی شود.
کلمه ربات اولین بار توسط Karel Capek نویسنده نمایشنامه R.U.R روباتهای جهانی روسیه در سال ۱۹۲۱ ابداع شد. ریشه این کلمه، کلمه چک اسلواکی (robotnic) به معنی کارگر میباشد. تفاوت ربات با انسان از بسیاری جهات قابل چشم پوشی نیست. مثلا خستگی ناپذیری و انجام یک کار تکراری با دقت فراوان و یا کارهایی که توان زیادی نیاز دارند و بازوهای انسان توان لازم برای انجام آن را ندارند به راحتی از عهده رباتها بر میآید.
رباتها میتوانند بسیار ساده و یا با ساختاری پیچیده باشند ولی در همه حالتها ربات، ترکیب علوممکانیک و الکترونیک است.
برخلاف تصور عمومی از رباتها که به عنوان رباتهای انسان نما که تقریباً قابلیت انجام هر کاری را دارند، بیشتر دستگاههای رباتیک در مکانهای ثابتی در کارخانهها بسته شده اند و در فرایند ساخت با کمک کامپیوتر، اعمال قابل انعطاف، ولی محدودی را انجام میدهند.این دستگاه حداقل شامل یک کامپیوتر برای نظارت بر اعمال و عملکرد اسباب انجام دهنده عمل مورد نظر و همچنین ممکن است دارای حسگرها و تجهیزات جانبی باشد.
انواع رباتها
احتمالا این سوال برایتان بهوجود آمده که ایده اصلی ساخت رباتها چگونه شکل می گیرد و هر ربات از چه قسمتهایی تشکیل شده است.
دو نکته در به وجود آمدن و ایده اصلی ربات اهمیت دارد، ابتدا اینکه یک مشکل یا سختی کار وجود دارد و باید حل گردد. دوم اینکه در طبیعت موجودی آن را حل کرده یا نه؟ مثلا تونل زدن زیر خاک یک مشکل بیان میگردد. و در طبیعت یک کرم کوچولو به راحتی میتواند زیر خاک حرکت نماید این دو باعث طراحی و ساخت یک ربات میگردد که به صورت اتوماتیک تونل کنده و پیش میرود.
رباتها همانند کامپیوترها قابلیت برنامه ریزی دارند.بسته به نوع برنامهای که شما به آنها میدهید، کارها وحرکات مختلفی را انجام میدهند. رشتهی دانشگاهی نیز تحت عنوان رباتیک وجود دارد که به مسائلی از قبیل: “سنسورها، مدارات ، فیدبکها،پردازش اطلاعات و بست و توسعه رباتها” میپردازد.رباتها انواع مختلفی دارند از قبیل: “روباتهای شمشیر باز، ربات دنبال کننده خط یا مسیریاب، کشتی گیر، فوتبالیست، رباتهای پرنده و رباتهای خیلی ریز تحت عنوان «میکرو رباتها» و «نانو رباتها» نیز وجود دارند. رباتها برای انجام کارهای سخت و دشواری که بعضی مواقع انسانها از انجام آنها عاجز یا انجام آنها برای انسان خطرناک هستند; مثل: “رباتهایی که در نیروگاههای هستهای وجود دارند” ،استفاده میشوند.کاری که رباتها انجام میدهند، توسط میکرپروسسورها (microprocessors) و میکرو کنترلها(microcontroller) کنترل میشود.
شما با تسلط در برنامه نویسی میکرو پروسسورها و میکروکنترلها، میتوانید دقیقا به ربات بگویید همان کاری را که انتظار دارید، انجام دهد.
بعضی از رباتها، ماشینهای مکانیکی نسبتاً سادهای هستند که کارهای اختصاصی مانند جوشکاری و یا رنگ افشانی را انجام میدهند، که سایر سیستمهای پیچیده تر که بطور همزمان چند کار انجام میدهند، از دستگاههای حسی، برای جمع آوری اطلاعات مورد نیاز برای کنترل کارشان نیاز دارند.حسگرهای یک ربات ممکن است بازخورد حسی ارائه دهند، طوریکه بتوانند اجسام را برداشته و بدون آسیب زدن، در جای مناسب قرار دهند. ربات دیگری ممکن است دارای نوعی دید باشد.، که عیوب کالاهای ساخته شده را تشخیص دهد. بعضی از رباتهای مورد استفاده در ساخت مدارهای الکترونیکی، پس از مکان یابی دیداری علامتهای تثبیت مکان بر روی برد، میتوانند اجزا بسیار کوچک را در جای مناسب قرار دهند.
رباتها دارای سه قسمت اصلی هستند:
۱. مغز که معمولا یک کامپیوتر است.
۲. محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخها، چرخدندهها و …
۳. سنسور که میتواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور و تماسی یا حرکتی باشد.
رباتهایی که امروزه بسیار در حال تکاملند، رباتهای انسان نما (human robotic) هستند، آنها قادرند اعمالی شبیه انسان را انجام دهند.حتی بعضی از آنها همانند انسان دارای احساسات نیز هستند.برخی دیگر اشکال خیلی سادهای دارند.آنها دارای چرخ یا بازویی هستند که توسط میکروکنترلرها یا میکروپروسسورها کنترل میشوند.در واقع میکروکنترلر یا میکرو پروسسور به مانند مغز انسان در ربات کار میکند.برخی از رباتها مانند انسانها وجانوران خون گرم در برخورد و رویارویی با حوادث و مسائل مختلف به صورت هوشمند از خود واکنش نشان میدهند.یک نمونه از این رباتها، ربات مامور است.
برخی رباتها نیز یکسری کارها را به صورت تکراری با سرعت و دقت بالا انجام میدهند، مثل رباتهایی که در کارخانههای خودروسازی استفاده میشوند.این گونه رباتها، کارهایی از قبیل جوش دادن بدنه ماشین ، رنگ کردن ماشین را با دقتی بالاتر از انسان بدون خستگی و وقفه انجام میدهند.بیشتر رباتها امروزه در کارخانهها برای ساخت محصولاتی مانند اتومبیل؛ الکترونیک و همچنین برای اکتشافات زیرآب یا در سیارات دیگر مورد استفاده قرار میگیرد.
بازار کار مهندس رباتیک
همانطور که در قبل گفته شد، پیش بینی میشود که رباتیک یکی از ۱۰ صنعت برتر آینده باشد. کاربرد محصولات رباتیک از محدوده کارخانجات فراتر رفته و در حال ورود به کاربردهای روزمره است.
امروزه کمتر صنعتی را میتوان یافت که در آن از ربات استفاده نشود . بازوهای رباتیکی که بدون استراحت قطعات و محصولات را از نقطهای به نقطهی دیگر جابهجا میکنند، رباتهای جوشکار ، رباتهای رنگرز ، رباتهای بسته بند ، رباتهای تراشکار ، رباتهای چاپگر ، رباتهای کنترل کیفیت ، رباتهای سوراخکار ، رباتهای کنترل دما ، رباتهای هشداردهندهی نشت گاز ، رباتهای غربال ، سانتریفوژهای خودکار و … همگی نمونههایی از رباتها در کارخانهها هستند.کارخانجات برای افزایش سرعت و کیفیت و دقت و هزینهی پایین تر به سمت رباتیکی کردن تمامی قسمتهای کارخانه پیش میروند و در بعضی از قسمتها که برای انسان خطرناک است مانند جوشکاری و رنگ پاشی و سموم شیمیایی ناچار به استفاده از ربات میشوند.
مهندسی رباتیک ارتباط زیادی با مهندسی مکانیک، مهندسی کامپیوتر و مهندسی الکترونیک و علوم کامپیوتر دارد. مهندس رباتیک باید برای ساخت روباتها در این علوم مهندسی مرتبط مسلط باشد به عنوان مثال باید در برنامه نویسی و تنظیم الگوریتم بهینه، طراحی مدارهای الکتریکی و الکترونیکی، طراحی کامپیوتری مدارها، طراحی سیستم آیرودینامیکی و … تبحر و تسلط کافی داشته باشد.مهندس رباتیکبه کسب و کارهای مختلف راه حلهای خودکار و اتوماتیک ارائه میکند تا بتوانند کارآمدتر کار کنند. کار دیگر مهندس رباتیک رفع مشکلات موجود در برنامههای رباتها و ارائه خدمات فنی به مشتریان است.
رباتیک با مکاترونیک تفاوت های بسیاری دارد که در مقاله مهندسی مکاترونیک میتوانید جزییات آن را مطالعه نمایید.
مهندس رباتیک فردی است که پاسخگوی نیاز صنعت در تحقیق و توسعه، طراحی، تولید، نگهداری و تعمیرات رباتها میباشد.
یکی از شاخههای اصلی مهندسی رباتیک را میتوان بخش تحقیقات دانست. بنابراین در بخش رباتیک به متخصصانی نیاز است که تحقیقات کرده ، مفاهیم و کاربردهای جدید را یافته و راههای پیشرفت مفاهیم و کاربردهای موجود را بیابند. میتوان گفت مهندسی رباتیک زمینهای جذاب برای آنانی است که در حوزه تکنولوژی علاقه و استعداد خوبی دارند.
کارمهندس رباتیک، تحقیق و توسعه طرحها، ساخت نمونه روباتها و بررسی کاربردهای مختلف آنها از حوزههای نظامی و خودرو تا حوزه پزشکی و کمک به افراد ناتوان برای رفع مشکلاتشان میباشد. همچنین مهندس رباتیک، رباتهای موجود و توانمندیهایشان را ارتقا داده و اصلاحات لازم را روی آنها انجام میدهد.
آینده شغلی مهندس رباتیک
مهندس رباتیک میتواند در دو حوزه صنعت و آموزش و پژوهش مشغول به کار شود. صنایع خودرو، هوافضا، تولید تجهیزات الکترونیکی، هستهای، معدن، نساجی، کامپیوتر، کشاورزی و … نمونههایی از حوزهی صنعت هستند. علاقهمندان به مشاغل آموزشی وپژوهشی میتوانند با کسب مدارک عالی در این حوزه، در دانشگاهها و مراکز آموزش عالی تدریس کنند. از آنجایی که مهندسی رباتیک رشتهای نوپا در کشورمان ایران میباشد، فرصتهای شغلی خوبی در بخش آموزش عالی وجود دارد.
امروزه بسیاری از صنایع کشور از جمله کارخانههایی مانند فولاد ، خودروسازی ، مواد غذایی و … تقریبا تمام اتوماتیک هستند. اما متاسفانه تمام رباتهای آن وارداتی است و حتی در برخی موارد نصب و کنترل و تعمیر آنها بر عهدهی متخصصان خارجی میباشد. شرکتهای فعال داخلی در حوزه رباتیک صرفا به واردات و در برخی از موارد تعمیرات روباتها میپردازند.
علیرغم شرکت فعال گروههای دانش آموزی و دانشجویی در مسابقات مختلف رباتیک و کسب مقامهای برتر، توجه کافی و هدفمند به استفاده ازاین نیروها در صنایع و بخشهای مختلف کشور برای طراحی، تولید و تعمیر و نگهداری داخلی رباتهای مورد نیاز نمیشود. در سالهای قبل این مسابقات فقط در حد کسب یک مقام بوده ، نه ارتباطی با صنایع کشور داشته و نه تاثیری در تبدیل کردن ایران به یکی از قطبهای رباتیک ایران. کشوری مثل ژاپن که به صورت فعال در بحث تحقیقات رباتیک کار میکند و به دنبال ساخت روباتهای انسان نما است، از لحاظ صنعتی و تولید ربات نیز بسیار پیشرفت کرده است تا جایی که یکی از بزرگترین صادرکنندههای ربات در جهان میباشد.
از دیگر مشکلاتی که در این حوزه وجود دارد، عدم شناخت و آگاهی لازم مردم به خصوص کارفرمایان و صاحبان صنایع از شغل مهندسی رباتیک است. به عنوان مثال برخی از کارفرمایان هنوز اطلاعات کاملی از رشتهی مهندسی رباتیک و توانمندیهای مهندسان رباتیک ندارند و در استخدامهای خود از مهندسان دیگر مانند برق و مکانیک استفاده میکنند.
در کنار این موارد حوزه رباتیک در جهان و ایران یک بخش جدید و رو به رشد است. در کشور ما نیز چند سالی است که رشتهی تخصصی مهندسی رباتیک ایجاد و فارغ التحصیلانی را به بازارکار ارائه کرده است. البته در بخش آموزش ضعفهایی وجود دارد که برای پیشرفت حوزه رباتیک باید رفع شود. یکی از مهم ترین آنها تعداد محدود دانشگاههای دارنده رشتهی مهندسی رباتیک میباشد.
جالب است بدانید که میزان متوسط درآمد سالیانهی یک مهندس رباتیک در آمریکا در سال ۲۰۱۳، حدود ۷۱.۰۰۰ دلار آمریکا و در انگلستان حدود ۵۸.۷۰۰ دلار آمریکا اعلام شده است .
اطلاعات و آمار دقیقی از میزان حقوق مهندسان رباتیک در بخش دولتی و خصوصی کشور در دسترس نمیباشد، ولی در بخش خصوصی میزان حقوق و درآمد مهندسان رباتیک متفاوت است. برای یک مهندس مکاترونیک در یک شرکت، بسته به مهارت و تخصص او در آشنایی با سیستمها و نرم افزارهای کامیپوتری درآمد ماهانه ۲ الی ۳ میلیون تومان برای شروع کار به او پرداخت میشود.
مهارت در نرمافزارهای تخصصی مهندسی رباتیک
با توجه به آنکه شرط ورود به هر شغلی تخصص و مهارت در زمینهی آن شغل است یکی از مهارتهای لازم در مهندسی رباتیک یادگیری نرمافزارهای تخصصی این رشته است.
مهمترین نرمافزارهای تخصصی و کاربردی مهندسی رباتیک
قبلا عامل های خردمند (عقلایی) را به عنوان مرکز ثقل رهیافت هوش مصنوعی مشخص کردیم. در این بخش ، این فرضیه را دقیق تر بررسی میکنیم. خواهیم دید که مفهوم عقلانیت (خردگرایی) میتواند به دامنه وسیعی از عاملهایی که در هر محیطی عمل میکنند، اعمال شود. با توجه به اینکه بعضی از عامل ها بهتر از عامل های دیگر رفتار میکنند، به ایده ی “عامل خردمند” یا “عامل عقلایی” میرسیم. “عامل خردمند” عاملی است که حتی الامکان خوب عمل میکند. عملکرد عامل به ماهیت محیط بستگی دارد. بعضی از محیط ها دشوارتر از محیط های دیگر هستند.
عامل ها و محیط ها
عامل هر چیزی است که قادر است محیط خود را از طریق حسگرها (سنسور ها) درک کند و از طریق محرک ها عمل کند. عامل انسانی دارای چشم، گوش و اعضای دیگری برای حس کردن، و دست، پا و دهان و اعضای دیگر به عنوان محرک هایی برای عمل کردن است. عامل روباتیک ممکن است شامل دوربین ها و مادون قرمر و فاصله سنج برای سنسورها و موتورهای متعددی به عنوان محرک ها باشد. عامل نرم افزاری “بسته های شبکه” ، محتویات فایل و ورودی های صفحه کلید را به عنوان ورودی حسی دریافت میکند و از طریق نوشتن در صفحه نمایش، نوشتن در فایل ها و ارسال بسته های شبکه، عمل میکند. از واژه ادراک (percept) برای ورودی های ادراکی عامل در هر لحظه استفاده میکنیم. دنباله ی ادراک یا توالی ادراک عامل، سابقه ی کامل هر چیزی است که عامل تاکنون درک کرده است. به طورکلی، انتخاب فعالیتی (کنشی) توسط عامل در هر لحظه، میتواندبه کل دنباله ی ادراک تا آن زمان بستگی داشته باشد. اگر بتوانیم فعالیت انتخابی عامل را برای هر دنباله ی ادراکی مشخص کنیم، همه چیز را در مورد عامل مطرح کرده ایم. از نظر ریاضی، میگوییم رفتار عامل توسط تابع عامل توصیف میشود که هر دنباله ی ادراک را به یک فعالیت نقش میکند.
تابع عامل را میتوانیم به صورت جدول نشان دهیم تا هر عاملی را تشریح کند. برای اغلب عامل ها، این جدول بسیار بزرگ خواهد بود، ولی میتوانیم حدی را برای طول دنباله ی ادراک در نظر بگیریم. برای ساخت جدول عامل، تمام دنباله های ادراک را در نظر گرفته فعالیت هایی را که عامل در پاسخ به آنها انجام میدهد، ذخیره میکنیم، البته این جدول یک شی ء خارجی است که عامل را مشخص میکند. تابع عامل مربوط به عامل مصنوعی، به طور داخلی توسط برنامه ی عامل پیاده سازی می شود. این دو ایده را از هم تفکیک میکنیم. تابع عامل یک توصیف ریاضی انتزاعی است، و برنامه عامل، پیاده سازی دقیقی است که در معماری عامل اجرا می شود.
تأکید میکنیم که فرضیه ی عامل، ابزاری برای تحلیل سیسیتم هاست، نه یک ویژگی خاص برای تقسیم دنیا به عامل و غیر عامل ها. ماشین حساب را میتوان عاملی در نظر گرفت که با توجه به “دنباله ادراک” ، “=۲+۲” نماد “۴” را نمایش میدهد. اما این تحلیل منجر به درک ماشین حساب نمیشود. از جهاتی تمام حوزه های مهندسی را می توان طراحی کننده ی محصولات مصنوعی دانست که با دنیا تعامل دارند؛ AI (از نظر مؤلفین) در انتهای این طیف واقع است، که در آنجا، محصولات مصنوعی، منابع محاسباتی ارزشمندی دارند و محیط کار ، نیازمند تصمیم گیری مهم است.
رفتار خوب : مفهوم خردمندی یا عقلانیت
عامل خردمند، عاملی است که رفتار خوب انجام میدهد- از نظر ادراکی، به معنای این است که هر عنصر جدول مربوط به تابع عامل، به درستی پر میشود. روشن است که انجام “رفتار درست”، بهتر از انجام “رفتار نادرست” است، اما معنای “رفتار درست” چیست؟ پاسخ به این پرسش قدیمی را، به روش قدیمی ارائه می دهیم: به در نظر گرفتن نتایج رفتار عامل. وقتی یک عامل در محیطی قرار گرفت، بر اساس آنچه که از محیط دریافت می کند، دنباله ای از فعالیت ها را انجام میدهد. این دنباله از فعالیت ها، موجب میشود که محیط از حالتی به حالت دیگر برود، یعنی محیط از دنباله ای از حالت ها عبور میکند. اگر این دنباله از حالتها مطلوب باشد، آنگاه این عامل به درستی عمل کرده است. برای تعیین مطلوب بودن دنباله ای از فعالیت ها، از مفهوم معیار کارایی استفاده میکنیم، که هر دنباله از حالت های محیط را ارزیابی میکند.
توجه کنید که حرف از حالتهای محیط زدیم نه حالتهای عامل. اگر موفقیت را بر اساس نظر عامل در مورد رضایت خود از کارایی اش تعریف کنیم، عامل می تواند خودش را فریب دهد و کارایی خود را بالا بداند و از آنجا نتیجه بگیریم که با خردمندی کامل عمل کرده است. مخصوصا عامل های انسانی، در مواردی که قرار است راجع به موضوعی تصمیم گیری کنند که در آن تصمیم گیری ، سودی به آنها نمیرسد، سابقه ی بدی دارند (سعی می کنند همه چیز را به نفع خود تمام کنند).
روشن است برای تمام کارها و عامل ها، یک معیار کارایی ثابت وجود ندارد؛ معمولا طراح، یک معیار را برای شرایط خاصی ، مناسب می بیند. این کار، چندان آسان نیست.
• خردمندی یا عقلانیت (rationality)
خردمند بودن در هر زمان به چهار چیز بستگی دارد:
۱٫ معیار کارایی که ملاک های موفقیت را تعریف می کند.
۲٫ دانش قبلی عامل نسبت به محیط.
۳٫ فعالیتهایی که عامل میتواند انجام دهد.
۴٫ دنباله ی ادراک عامل در این زمان.
به این ترتیب میتوانیم عامل خردمند را بصورت زیر تعریف کنیم:
برای هر دنباله از ادراک ممکن، عامل خردمند (عقلایی) باید فعالیتی را انتخاب کند که انتظار میرود معیار کارایی اش را به حداکثر برساند. این کار با توجه به شواهدی که از طریق این دنباله ادراک به دست می آید و دانش درونی عامل، صورت می گیرد.
• همه چیزدانی، یادگیری و خود مختاری
باید بین “همه چیزدانی” و خردمندی تمایز قائل شویم. عامل “همه چیزدان”، خروجی واقعی فعالیت های خودش را می داند و می تواند بر اساس آن عمل کند. اما “همه چیزدان” بودن عامل، غیرممکن است. این مثال را در نظر بگیرید: من روزی در حال قدم زدن با احمد هستم و دوست قدیمی خود را در آن طرف خیابان می بینم. هیچ ترافیکی وجود ندارد و “خردمندی” حکم میکند که در عرض خیابان حرکت کنم. در همین حال، در فاصله ۳۳۰۰۰ فوتی، یک هواپیمای مسافری با هواپیمای باری برخورد میکند و قبل از اینکه به آن طرف خیابان بروم، نقش بر زمین میشوم. آیا عبور از عرض خیابان، عقلایی (خردمندی) نبود؟ بعید است کسی بگوید که عبور از عرض خیابان حماقت بوده است.
این مثال نشان میدهد که خردمندی با “کمال مطلوب” متفاوت است. خردمندی، کارایی مورد انتظار را به حداکثر میرساند، در حالیکه کمال مطلوب، کارایی واقعی را به حداکثر می رساند. دست برداشتن از خواسته ی “کمال مطلوب”، فقط به معنای منصف بودن نسبت به عامل ها نیست. موضوع این است که، اگر انتظار داشته باشیم عامل، بهترین فعالیت را انجام دهد، نمیتوان عاملی طراحی کرد که با این مشخصات جور درآید، مگر اینکه کارایی جام جهان نما یا ماشین های زمان را بهبود بخشیم.
تعریفی که ما از خردمندی ارائه دادیم، نیاز به “همه چیزدانی” ندارد. زیرا انتخاب عقلایی (در یک زمان) فقط به “دنباله ادراک” در آن زمان بستگی دارد. باید مطمئن باشیم که ندانسته اجازه ندهیم که عامل به فعالیت های غیرهوشمند بپردازد. انجام فعالیت به منظور اصلاح ادراک های آینده، که گاهی جمع آوری اطلاعات نام دارد، بخش مهمی از خردمندی است. مثال دیگری از جمع آوری اطلاعات، از طریق اکتشاف صورت میگیرد. این تعریف، مستلزم آن است که عامل نه تنها باید اطلاعات را جمع آوری کند، بلکه باید از آنچه که درک میکند، یاد بگیرد. پیکربندی اولیه ی عامل می تواند دانشی از محیط را ارائه کند، اما هر چه که عامل تجربه بیشتری کسب میکند، ممکن است پیکربندی آن تغییر کند. موارد زیادی وجود دارد که محیط از قبل شناخته شده است. در این موارد لازم نیست عامل درک کند یا بیاموزد، زیرا به درستی عمل خواهد کرد. البته چنین عاملهایی خیلی آسیب پذیر هستند.
اگر عامل به جای ادراکات خود، براساس دانش قبلی طراح خود رفتار کند، می گوییم عامل خودمختار نیست. عامل خردمند باید خودمختار باشد. باید یاد بگیرد که نقص دانش قبلی را چگونه جبران کند. به عنوان یک موضوع عملی، عامل در ابتدا به خودمختاری کامل نیاز ندارد: وقتی عامل تجربه ای ندارد یا تجربه کمی دارد، باید به طور تصادفی عمل کند، مگر اینکه طراح به آن کمک کند. لذا، همان طور که تکامل حیوانات ، واکنش های ذاتی را برای آنها ایجاد میکند تا بیشتر زنده بمانند و به یادگیری خود بیفزایند، منطقی است که بتوان یک عامل هوش مصنوعی را ایجاد کرد که علاوه بر دانش اولیه، قدرت یادگیری داشته باشد. پس از تجربیات کافی با محیط خود ، رفتار عامل خردمند میتواندمستقل از دانش اولیه اش باشد. لذا، توانایی یادگیری منجر به طراحی عاملی میشود که در محیط های مختلف، موفق است.
اگر فروشنده دوره گرد از نقطه A شروع کند و فواصل بین نقاط مشخص باشد، کوتاهتربن مسیر که از تمام نقاط یکبار بازدید میکند و به A بازمیگردد کدام است؟
مسئله فروشنده دوره گرد (به انگلیسی: Travelling salesman problem، بهاختصار: TSP) مسئلهای مشهور است که ابتدا در سده ۱۸مسائل مربوط به آن توسط ویلیام همیلتون و توماس کرکمن مطرح شد و سپس در دهه ۱۹۳۰ شکل عمومی آن به وسیله ریاضیدانانی مثلکارل منگر از دانشگاه هاروارد و هاسلر ویتنی از دانشگاه پرینستون مورد مطالعه قرار گرفت.
شرح مسئله بدین شکل است:
تعدادی شهر داریم و هزینه رفتن مستقیم از یکی به دیگری را میدانیم. مطلوب است کمهزینهترین مسیری که از یک شهر شروع شود و از تمامی شهرها دقیقاً یکبار عبور کند و به شهر شروع برگردد.
تعداد جوابهای شدنی مسئله، برابر است با {\displaystyle {\frac {1}{2}}(n-1)!} برای n>۲ که n تعداد شهرها میباشد. در واقع این عدد برابر است با تعداددورهای همیلتونی در یک گراف کامل با n رأس.
مسئلههای مرتبط
مسئله فروشنده دوره گرد یا Traveling Salesman Problem (به اختصار TSP)، یکی از مسائل بسیار مهم و پرکاربرد در علوم کامپیوتر و تحقیق در عملیات است.
سه روش کلی برای کد کردن راه حلهای مسئله TSP ارائه شدهاست که در الگوریتمهای مختلفی قابل استفاده هستند. راه حلهای سه گاه عبارتند از:
الف) نمایش جواب به صورت رشته گسسته جایگشتی که در الگوریتمهای زیر قابل استفاده است: الگوریتم ژنتیک یا Genetic Algorithms (به اختصار GA) شبیهسازی تبرید یا Simulated Annealing (به اختصار SA) جستجوی ممنوعه یا Tabu Search (به اختصار TS) جستجوی همسایگی متغیر یا Variable Neighborhood Search (به اختصار VNS) بهینهسازی کلونی مورچگان یا Ant Colony Optimization (به اختصار ACO) جستجوی هارمونی یا Harmony Search (به اختصار HS) و سایر الگوریتمهای بهینهسازی گسسته
ب) نمایش جواب به صورت کلیدهای تصادفی یا Random Key که در الگوریتمهای زیر قابل استفاده است: الگوریتم ژنتیک یا Genetic Algorithms (به اختصار GA) بهینهسازی ازدحام ذرات یا Particle Swarm Optimization (به اختصار PSO) الگوریتم رقابت استعماری یا Imperialist Competitive Algorithm (به اختصار ICA) تکامل تفاضلی یا Differential Evolution (به اختصار DE) بهینهسازی مبتنی بر جغرافیای زیستی یا Bio-geography Based Optimization (به اختصار BBO) استراتژیهای تکاملی یا Evolution Strategies (به اختصار ES) برنامهریزی تکاملی یا Evolutionary Programming (به اختصار EP) و سایر الگوریتمهای بهینهسازی پیوسته
پ) نمایش جواب به شکل ماتریسهای شبیه فرومون که توسط تمامی الگوریتمهای اشاره شده در مورد (ب) قابل استفاده میباشد.
مسئله معادل در نظریه گراف به این صورت است که یک گراف وزندار کامل داریم که میخواهیم کموزنترین دور همیلتونی را پیدا کنیم.
مسئله تنگراه فروشنده دورهگرد (به انگلیسی: Bottleneck traveling salesman problem، بهاختصار: bottleneck TSP) مسئلهای بسیار کاربردی است که در یک گراف وزندار کموزنترین دور همیلتونی را میخواهد که شامل سنگینترین یال باشد.
تعمیمیافته مسئله فروشنده دورهگرد دارای ایالتهایی است که هر کدام حداقل یک شهر دارند و فروشنده باید از هر ایالت دقیقاً از یک شهر عبور کند. این مسئله به «مسئله سیاستمدار مسافر» نیز شهرت دارد.
الگوریتمها
مسئله فروشنده دوره گرد جزء مسائل انپی سخت است. راههای معمول مقابله با چنین مسائلی عبارتند از:
طراحی الگوریتمهایی برای پیدا کردن جوابهای دقیق که استفاده از آنها فقط برای مسائل با اندازه کوچک صورت میگیرد.
استفاده از الگوریتمهای مکاشفهای که جوابهایی بهدست میدهد که احتمالاً درست هستند.
پیدا کردن زیرمسئلههایی از مسئله یا به عبارت دیگر تقسیم مسئله به مسئلههای کوچکتر، تا بتوان الگوریتمهای مکاشفهای بهتر و دقیقتری ارائه داد.
الگوریتمهای دقیق
سرراستترین راه حل امتحان کردن تمامی جایگشتهای ممکن برای پیدا کردن ارزانترین مسیر است که چون تعداد جایگشتها !n است، این راه حل غیرعملی میشود. با استفاده از برنامهنویسی پویا مسئله میتواند با مرتبه زمانی{\displaystyle n^{2}2^{n}} حل شود. راههای دیگر استفاده از الگوریتمهای انشعاب و تحدید برای ۴۰ تا ۶۰ شهر، استفاده از برنامهنویسی خطی برای کوچکتر از ۲۰۰ شهر و استفاده از روش برش-صفحه برای اندازههای بزرگ است.
الگوریتمهای مکاشفهای
الگوریتمهای تقریبی متنوعی وجود دارند که خیلی سریع جوابهای درست را با احتمال بالا بهدست میدهند که میتوان آنها را به صورت زیر دستهبندی کرد:
مکاشفهای سازنده
بهبود تکراری
مبادله دوبهدو
مکاشفهای k-opt
مکاشفهای V-opt
بهبود تصادفی
پیچیدگی محاسباتی الگوریتم فروشنده دوره گرد
این الگوریتم بطور مستقیم در مرتبه زمانی(!O(n حل میشود اما اگر به روش برنامهنویسی پویا برای حل آن استفاده کنیم مرتبه زمانی آن (O(n^2*2^n خواهد شد که جز مرتبههای نمایی است. باید توجه داشت علیرغم آنکه مرتبه نمایی مذکور زمان بسیار بدی است اما همچنان بسیار بهتر از مرتبه فاکتوریل میباشد. شبه کد الگوریتم فوق به صورت زیر است که در آن تعداد زیر مجموعههای یک مجموعه n عضوی ۲ به توان n میباشد و for اول یک ضریب n را نیز حاصل میشود که به ازای تمام شهرهای غیر مبدأ میباشد و حاصل (n*(2^n را پدیدمیآورد؛ بنابراین برای جستجوی کمترین مقدار نیاز به یک عملیات خطی از مرتبه n داریم که در زمان فوق نیز ضرب میشود و در نهایت زمان (n^2)*(2^n) را برای این الگوریتم حاصل میکند.
C({1},1) = 0
for (S=2 to n)
for All Subsets S subset of {1,2,3,...} of size S and containing1
C(S,1) = &
for All J member of S , J<>1
C (S , J) = min { C (S - { J } , i) + D i,J: i member of S , i <> J }
return min j C ({1 . . . n}, J) + D J,1
شبه کد مسئله فروشنده دوره گرد
مسئله:یک تور بهینه برای یک گراف وزن دار و جهت دار مشخص نمایید. وزنها اعدادی غیر منفی هستند
ورودی:یک گراف وزن دار و جهت دار و n تعداد گرههای گراف. گراف با یک ارائه دو بعدی w مشخص میشود که سطرها و ستونهایش از ۱ تا n شاخص دهی شدهاند و در ان [w[i][j معرف وزن لبه از گره iام به گره jام است.۴
خروجی:یک متغیر minlength که مقدار ان طول تور بهینه است و یک ارائه دو بعدی p که یک تور بهینه را از روی ان میتوان ساخت . سطرهای p از ۱ تا n و ستونهای ان با تمامی زیر مجموعههای {v-{v1 شاخص دهی شدهاند . [P[i][A شاخص اولین گره بعد از vi بر روی کوتاهترین مسیر از viتاvj است که از تمام گرههای A دقیقاً یکبار میگذرد.
* Void travel ( int n ,
* const number W[][],
* index p[][],
* number&minlength
* )
* {
* Index i, j, k;
* number D[1..n][subset of V-{vi}];
* for (i= 2 ; i<=n;i++)
* D[i][∅} = w[i][1];
* for(k=1; k<=n-2 ; k++)
* for (all subsets A v-{v1} containing k vertices
* for (i such that j≠۱ and vi is not in A){
* D[i][A] = minimum (W[i][j]+ D[vj][A-{vj}]);
* P[i][A]= value of j that gave the minimum
* }
* D[1][v-{vi}]= minimum (W[1][j]+ D[vj][V-{v1}];
* P[1][V-{v1}]= value of j that gave the minimum ;
* Minlength = D[1][V-{v1}];
* }
الگوریتم جستجوی ممنوعه یا Tabu Search یا به اختصار TS، یکی از قویترین الگوریتمها در زمینه حل مسائل بهینهسازی، به خصوص مسائل بهینهسازی مبتنی بر گراف و مسائل بهینهسازی ترکیباتی (Combinatorial Optimization) است. این الگوریتم در اواخر دهه ۱۹۸۰ و توسط گلووِر (Glover) و همکارانش ارائه گردید. غالباً یکی از مسائلی که برای حل آنها از الگوریتم TS استفاده میشود، مسئله فروشنده دوره گرد یا TSP است. این الگوریتم پاسخهای بسیار مناسبی را برای انواع مسائل گسسته به خصوص مسئله TSP ارائه میکند!
در مسئله فروشنده دوره گرد در پی یافتن کوتاه ترین مسیر در بین مجموعه ای از شهر ها می باشیم، به گونه ای که هر شهر فقط یک بار در مسیر قرار گرفته و مسیر ساخته شده به شهر اولی منتهی شود.
این مسئله علاوه بر جنبه نظری از جنبه عملی نیز کاربرد فراوانی دارد به عنوان مثال در مواردی مانند مسیریابی، ساخت تراشه های الکترونیکی، زمان بندی کارها و غیره مورد استفاده قرار گیرد. اما در مواجهه با چالش حل مسائل بهینه سازی، که این نوع مسائل در دنیای واقعی بسیار زیاد هستند، روش های کلاسیک اغلب با مشکل مواجه می شوند. به همین دلیل معمولا از روشهای فرا ابتکاری همانند الگوریتم ژنتیک و سایر الگوریتم های تکاملی برای حل این نوع مسائل استفاده میشود
به صورت کلی مسئله فروشنده دوره گرد دارای ۳ حالت زیر می باشد.
۱- فروشنده دوره گرد متقارن
در حالت متقارن مسئله، تعدادی شهر داریم و هزینه رفتن مستقیم از یکی به دیگری را میدانیم .مطلوب است کم هزینهترین مسیری که از یک شهر شروع شود و از تمامی شهرها دقیقا یکبار عبور کند و به شهر شروع بازگردد.
۲- فروشنده دوره گرد نامتقارن
مسأله ي فروشنده ي دوره گرد نامتقارن, یک TSP است که فاصله بين رئوس آن, متقارن نيست. ATSP بسيار مشکلتر از TSP است، در حقيقت در حالي که TSP متقارن, حتي در گرافهاي با چندين هزار رأس, به طور بهينه, قابل حل است, تنها نمونههاي خاصي ازATSP را که ماتريس فاصلهي آنها, تقريباً متقارن است, تنها در گرافهاي داراي چندين دوجين رأس, ميتوان به طور بهينه حل کرد. به کاربردن هوش مصنوعی براي ATSP, راحت و سر راست است. چون هيچ تغييراتي در الگوريتم اصلي, لازم ندارد. پيچيدگي محاسباتي در حلقهي الگوريتم, برنامهي کاربردي TSP, يکسان است, زيرا تنها تفاوت آنها در فاصلهها و ماتريسهاي ردپا است که در اينجا ديگر متقارن نيستند.
۳- فروشنده دوره گرد با پنجره های زمانی
مسئله فروشنده دوره گرد با پنجره زمانی، شامل یافتن کوتاهترین طول توری است که به وسیله یک فروشنده دوره گرد طی می شود با این شرایط که فروشنده باید هر گره را فقط یکبار ملاقات کند و در پنجره زمانی معینی به آن سرویس دهد. به این معنا که اگر فروشنده زودتر از محدوده زمانی تعیین شده به آن گره برسد باید منتظر بماند تا بازه زمانی سرویس دهی مربوط به آن گره شروع شود. همچنین اگر دیرتر از پنجره زمانی برسد ارائه سرویس به آن گره دیگر امکان پذیر نخواهد بود.
Interpolation يا درون یابی (كه گاهي resampling نيز ناميده ميشود) يك روش گرافيكي براي افزايش يا كاهش تعداد پيكسلهاي يك تصوير ديجيتالي است. دوربينهاي ديجيتالي از اين روش براي زوم ديجيتال و يا افزايش مصنوعي ابعاد تصوير، نسبت به تصوير اصلي ثبت شده توسط حسگر خود استفاده ميكنند. كيفيت تصوير نهايي حاصل از درونيابي به پيچيدگي الگوريتم ساخت تصوير بستگي دارد. حالتهاي متفاوت درونيابي عبارتند است از:
Nearest Neighbor Interpolation
اين روش سادهترين عمليات درونيابي محسوب ميشود كه اساساً پيكسلهاي بزرگتري را ايجاد ميكند و رنگ هر پيكسل در تصوير جديد، با رنگ نزديكترين پيكسل در تصوير اصلي مطابقت دارد. به عنوان مثال اگر شما يك تصوير را ۲۰۰ درصد بزرگ كنيد، يك پيكسل تصوير به يك فضاي چهار پيكسلي (دو پيكسل در دو پيكسل) با رنگ پيكسل اوليه تبديل ميشود. بسياري از دوربينهاي ديجيتالي براي زومكردن روي يك سوژه از اين روش استفاده ميكنند. زيرا اين روش هيچ تأثيري بر اطلاعات رنگي تصوير نميگذارد. اصولاً بهتر است از اين روش براي افزايش ابعاد تصوير استفاده نشود. چرا كه موجب ايجاد حالت شطرنجي در تصوير ميگردد.
Bilinear Interpolation
اين روش ارزش يك پيكسل رنگي را براساس چهار پيكسل در جهتهاي عمودي و افقي پيكسل در تصوير اصلي معينميكند. تصوير جديد داراي خاصيت Anti-aliasing است و تقريباً هيچ اثري از پيكسلهاي شطرنجي در آن ديده نميشود.
Bicubic Interpolation
اين روش داراي پيچيدهترين الگوريتم درونيابي است و تصويري كه با اين روش به دست ميآيد، لبههاي بسيارنرمتري پيدا ميكند. در اين حالت پيكسل جديد براساس ارزش تخميني ۱۶ پيكسل (چهار پيكسل در چهار پيكسل) برآوردميشود.
شايان ذكر است كه اغلب دوربينها، چاپگرها و نرمافزارهاي گرافيكي براي تغيير تعداد پيكسلهاي يك تصوير از اين روش استفاده ميكنند. نرمافزار Photoshop CS دو نوع Sharper و Smoother اين درونيابي را نيز ارائه ميدهد.
Fractal Interpolation
اين روش براي بزرگ كردن تصوير در ابعاد خيلي بزرگ (بهعنوان مثال چاپ روي بدنه يك اتوبوس) روش بسيار مناسبي بهشمار ميرود. زيرا با دقت خوبي ميتواند شكل اجزاي تصوير را حفظ كند. لبههاي بسيار تميزتر و صافتري را نيز برجا ميگذارد. در اين حالت مناطق محوي كه در لبههاي تصوير در روشهاي قبل وجود داشتند، به ندرت ديده ميشوند. البته روشهاي ديگري هم وجود دارند كه جز در برنامههاي گرافيكي پيشرفته، بهندرت از آنها استفاده ميشود.
https://behsanandish.com/wp-content/uploads/article.jpg256256م. دلیریhttps://behsanandish.com/wp-content/uploads/logo-farsi-englisi-300x195-1.pngم. دلیری2020-02-13 10:00:592021-03-30 17:07:44درون یابی (Interpolation) چیست و انواع روش ها
https://behsanandish.com/wp-content/uploads/books.jpg256256محمد مهدی ابراهیمیhttps://behsanandish.com/wp-content/uploads/logo-farsi-englisi-300x195-1.pngمحمد مهدی ابراهیمی2020-02-11 10:00:422019-11-30 09:50:16معرفی کتاب و منابع جهت یادگیری پردازش تصویر
تو این مطلب می خواهیم بصورت عملی از شبکه های عصبی استفاده کنیم! واقعا خیلی جالبه می خوایم به کامپیوتر سه تا حرف الفبای انگلیسی رو یاد بدیم. نکته ی جالب تر این هست که حتی به کامپیوتر نمی گیم هر کدوم از حرف ها چی هستن! فقط بهش می گیم که این ها سه حرف مختلف هستند! و کامپیوتر خودش تشخیص می ده هر کدوم متعلق به کدوم گروه هست! به این نوع طبقه بندی اصطلاحا Unsupervised میگویند.
سوال : به نظر میرسه باید توی مثال هامون به کامپیوتر بگیم مثلا این A هست و این B هست! جواب : اون هم نوعی یادگیری هست که بهش اصطلاحا Supervised می گن. اما توی این مثال حالت جالب تر یعنی Unsupervised رو می خوایم بررسی کنیم. به این صورت که فقط به کامپیوتر می گیم ۳ دسته وجود داره و براش چندین مثال می زنیم و خودش مثال ها رو توی ۳ دسته قرار می ده! در نهایت ما مثلا می تونیم بگیم همه ی مثال هایی که در دسته ی دوم قرار گرفتن A هستند. شاید جالب باشه بدونید گوگل هم برای دسته بندی اطلاعات از همچین روشی استفاده می کنه! البته کمی پیشرفته تر. مثلا ۱۰۰ متن اقتصادی و ۱۰۰ متن ورزشی به کامپیوتر میده و از کامپیوتر می خواد اونها رو به ۲ بخش تقسیم بندی بکنه! ورودی لغت های اون متن ها هستند. “
ابزار مورد نیاز برای این که شروع کنیم به چند مورد نیاز داریم:
در مورد هوش مصنوعی و شبکه های عصبی یکم اطلاعات داشته باشید.
برنامه ای برای تولید الگو که ورودی شبکه ی عصبی ما خواهد بود. این برنامه رو میتونید از اینجا تهیه کنید.
نرم افزار JOONE Editor. عبارت JOONE مخفف Java Object Oriented Neural Engine هست. که یک ابزار قدرت مند برای بوجود آوردن و آموزش انواع شبکه های عصبی در Java هست. توی این آموزش ما از ویرایشگر این ابزار استفاده می کنیم که محیطی گرافیکی برای تولید شبکه های عصبی داره و کار با اون بسیار ساده هست. این ابزار از اینجا قابل دریافت هست. بدیهیه که برای نصب این ابزار ابتدا باید جاوا روی کامپیوتر شما نصب باشه.
حالا می خوایم یک سری الگو تولید کنیم. الگو همون مثال هایی هست که گفتیم برای کامپیوتر می زنیم تا بتونه یاد بگیره. برای این کار از برنامه ای که در شماره ی ۲ ابزارها معرفی کردم استفاده می کنیم. این برنامه خیلی ساده کار می کنه و فقط الگو ها رو از حالت تصویری به ۰ و ۱ تبدیل می کنه. روش کار به این صورت هست که اول تصویر رو به یک ماتریس ۸ در ۸ تقسیم می کنه. یعنی ۶۴ قسمت. وقتی دکمه ی سمت چپ ماوس پایینه در صورتی که ماوس از هر کدوم از اون ۶۴ بخش رد بشه اون بخش رو داخل ماتریس علامت گذاری می کنه (مقدار اون قسمت رو True می کنه). وقتی دکمه ی Learn زده می شه برنامه مقدار تمام قسمت ها رو از بالا به پایین داخل یک فایل ذخیره می کنه. مقدار هر قسمت می تونه ۰ یا False و ۱ یا True باشه. ” در صورتی که سورس این برنامرو خواستید کافیه توی بخش نظرات بگید تا براتون میل کنم. کار با این برنامه خیلی آسون هست همونطور که توی شکل مشخصه.
کافیه الگویی که دوست دارید رو داخل فضای سفید بکشید و دکمه ی Learn رو بزنید. Textbox پایینی برای تغییر دادن آدرس فایلی هست که اطلاعات توی اون ذخیره میشه. و Textbox بالایی برای اینه که بگید این الگو چه حرفی هست که توی این مطلب نیازی به پر کردن اون نیست چون ما بحثمون یادگیری Unsupervised هست. توی مطالب بعدی برای یادگیری Supervised به این فیلد نیاز خواهیم داشت. خوب من برای اینکه مثال پیچیده نشه ۳ حرف رو می خوام به کامپیوتر یاد بدم. A و C و Z! برای این کار برای هر کدوم از حروف چهار مثال وارد می کنم و دکمه ی Learn رو می زنم. توی شکل زیر می تونید هر ۱۲ الگو رو ببینید.
فایل خروجی مربوط به این الگوهای مثال از اینجا قابل دریافت هست.همونطور که می بینید هر ردیف به نظر من و شما عین هم هستند. اما اگر کمی بیشتر دقت کنیم می بینیم جای مربع های مشکی با هم فرق دارن. به نظر شما کامپیوتر هم خواهد فهمید هر ردیف نشاندهنده ی یک حرف مجزا هست؟ تشکیل شبکه ی عصبیخوب! حالا می خواهیم ساختار شبکه ی عصبی رو طراحی کنیم. برای این کار از JOONE Editor کمک می گیریم. صفحه ی اول این نرم افزار به این شکل هست:
توی این مثال ما از یک لایه ی ورودی خطی ۶۴ نورونی استفاده می کنیم که هر نورون یک قسمت از ماتریسی که در بخش قبل گفتیم رو به عنوان ورودی می گیره. به عنوان خروجی هم از یک لایه ی ۳ نورونی WinnerTakeAll استفاده می کنیم. در این نوع خروجی یکی از نورون ها ۱ و بقیه ۰ خواهند بود که برای تقسیم بندی بسیار مناسب هست.
برای شروع ابتدا یک لایه ی FileInput ایجاد می کنیم. توسط این ابزار می تونیم یک فایل رو به عنوان ورودی به شبکه بدیم. روی FileInput کلیک راست کرده و در Properties اون فایل درست شده در مرحله ی قبلی رو به عنوان fileName انتخاب می کنیم و به عنوان Advanced Column Selector مقدار ۱-۶۴ رو وارد می کنیم تا برنامه متوجه بشه باید از ستون های ۱ تا ۶۴ به عنوان ورودی استفاده کنه.
ایجاد یک لایه ی خطی:
مرحله ی بعدی ایجاد یک Linear Layer یا لایه ی خطی هست. بعد از ایجاد این لایه Properties اون باید به شکل زیر باشه:
همونطور که می بینید تعداد ردیف ها ۶۴ مقداردهی شده که دلیلش این هست که ۶۴ ورودی داریم. حالا با انتخاب FileInput و کشیدن نقطه ی آبی رنگ سمت راست اون روی Linear Layer خروجی FileInput یعنی اطلاعات فایل رو به عنوان ورودی Linear Layer انتخاب می کنیم. تا این لحظه ما یک لایه ی ۶۴ نورونه داریم که ورودی اون مقادیر مثال های تولید شده در مرحله ی قبل هست.
ایجاد لایه ی WinnerTakeAll :
خوب توی این مرحله لایه ی خروجی که یک لایه ی WinnerTakeAll هست رو تولید می کنیم. Properties این لایه باید به شکل زیر تغییر پیدا کنه تا اطمینان پیدا کنیم الگوها به سه دسته تقسیم میشن:
حالا باید بین لایه ی خطی و لایه ی WinnerTakeAll ارتباط برقرار کنیم. برای این کار باید از Kohonen Synapse استفاده کنیم و Full Synapse جواب نخواهد داد. پس روی دکمه ی Kohonen Synapse کلیک کرده و بین لایه ی خطی و لایه ی WinnerTakeAll ارتباط ایجاد می کنیم. در آموزش های بعدی فرق انواع سیناپس ها رو بررسی خواهیم کرد.آموزش شبکه
تا این لحظه شبکه باید به این شکل باشه. حالا می تونیم آموزش شبکرو شروع کنیم. برای این کار در منوی Tools بخش Control Panel رو انتخاب می کنیم. و در صفحه ی جدید learningRating و epochs و training pattern و learning رو به شکل زیر تغییر می دیم.
epochs تعداد دفعاتی که مرحله ی آموزش تکرار میشرو تعیین می کنه. learningRate ضریبی هست که در یادگیری از اون استفاده می شه. بزرگ بودن اون باعث میشه میزان تغییر وزن نورون ها در هر مرحله بیشتر بشه و سرعت رسیدن به حالت مطلوب رو زیاد می کنه اما اگر مقدار اون خیلی زیاد شه شبکه واگرا خواهد شد. training patterns هم تعداد الگو هایی که برای آموزش استفاده می شن رو نشون می ده که در این مثال ۱۲ عدد بود. بعد از اینکه تمام تغییرات رو ایجاد کردیم دکمه ی Run رو می زنیم و منتظر می شیم تا ۱۰۰۰۰ بار عملیات یادگیری انجام بشه.
تبریک می گم! شما الان به کامپیوتر سه حرف A و C و Z رو یاد دادید! اما خوب حالا باید ببینید کامپیوتر واقعا یاد گرفته یا نه. برای این کار از یک لایه ی FileOutput استفاده می کنیم تا خروجی شبکرو داخل یک فایل ذخیره کنیم. Properties لایه ی FileOutput باید بصورت زیر باشه:
همونطور که می بینید به عنوان fileName مقدار c:\output.txt رو دادیم. یعنی خروجی شبکه در این فایل ذخیره میشه. حالا کافیه لایه ی WinnerTakeAll رو به لایه ی FileOutput متصل کنیم. بعد از متصل کردن این دو لایه شکل کلی باید بصورت زیر باشه:
برای اینکه فایل خروجی ساخته بشه باید یک بار این شبکرو اجرا کنیم. برای این کار مجددا در منوی Tools بخش Control Panel رو انتخاب می کنیم و در اون learning رو False و epochs رو ۱ می کنیم تا شبکه فقط یک بار اجرا شه. پس از تغییرات این صفحه باید به شکل زیر باشه:
حالا با توجه به اینکه من اول چهار مثال A رو وارد کردم و بعد به ترتیب چهار مثال C و چهار مثال Z رو ببینیم خروجی این شبکه به چه شکل شده. باور کردنی نیست! خروجی به این شکل در اومده:
همونطور که می بینید ۴ خط اول که مربوط به A هستن ستون اولشون ۱ هست و در چهار خط دوم ستون دوم و در چهار خط سوم ستون سوم! این یعنی کامپیوتر بدون اینکه کسی به اون بگه کدوم مثال ها کدوم حرف هست خودش فهمیده و اون ها رو دسته بندی کرده. سوال : ممکنه چون پشت هم دادید مثال هر حرف رو اینطوری نشده؟ جواب : نه! کامپیوتر که نمی دونسته من می خوام مثال های هر حرف رو پشت سر هم بدم! من برای راحتی خودم این کار رو کردم. شما می تونی ورودی هاتو غیر مرتب بدی! سوال : دلیل خاصی داره که در A ستون اول ۱ هست و … جواب : نه! ممکن بود برای A ستون دوم ۱ بشه و یا هر حالت دیگه. شما اگر امتحان کنید ممکنه تفاوت پیدا کنه. اما مهم اینه در تمام A ها یک ستون خاص مقدارش ۱ و بقیه ی ستون ها مقدارشون صفر می شه. پس یعنی کامپیوتر تونسته به خوبی تقسیم بندی کنه.
حالا می خوایم شبکرو با سه مثال جدید تست کنیم که در مثال های آموزشی نبوده! برای این کار من با استفاده از برنامه ی تولید الگو ۳ مثال جدید درست می کنم و به عنوان فایل ورودی در شبکه فایل جدید رو انتخاب می کنم. توی شکل زیر سه مثال جدید رو می تونید ببینید:
برای جذابیت علاوه بر این سه مثال ۲ مثال دیگه هم که حروف خاصی نیستند گذاشتم!
خوب حالا بگذارید ببینیم کامپیوتر چه جوابی می ده. با توجه به اینکه اول مثال C بعد مثال Z و بعد مثال A رو وارد کردم. دو مثال بعدی هم به ترتیب مثال بد خط سمت چپ و مثال بد خط سمت راست هستند. و اما جواب:
کامپیوتر سه مورد اول رو به خوبی C و Z و A تشخیص داده. و دو مورد بد خط هم به ترتیب از چپ به راست Z و C تشخیص داده! حتی برای انسان هم سخته فهمیدن اینکه مورد های چهارم و پنجم چی هستند اما اگر خوب دقت کنید می بینید به مواردی که کامپیوتر خروجی داده نزدیک تر هستند. کامپیوتر شعور نداره! اما ما سعی کردیم طریقه ی عملکرد مغز رو به صورت خیلی ابتدایی و به ساده ترین نحو توش شبیه سازی کنیم! ” تو این مطلب دیدیم که کامپیوتر تونست بدون اینکه ما براش مثال هایی بزنیم و بگیم هر کدوم چه حرفی هستند و فقط با دادن تعداد دسته ها، مثال ها رو به سه دسته همونطوری که انسان ها تقسیم می کنند تقسیم کنه. همونطور که گفتیم به این نوع دسته بندی، دسته بندی Unsupervised میگن. منبع
https://behsanandish.com/wp-content/uploads/source-1.jpg256256م. دلیریhttps://behsanandish.com/wp-content/uploads/logo-farsi-englisi-300x195-1.pngم. دلیری2020-02-08 10:00:492021-03-30 15:59:13شناخت حروف توسط شبکه عصبی