সুচিপত্র:

রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট: 6 টি ধাপ
রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট: 6 টি ধাপ

ভিডিও: রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট: 6 টি ধাপ

ভিডিও: রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট: 6 টি ধাপ
ভিডিও: Raspberry Pi - UK Traffic Light System 2024, নভেম্বর
Anonim
রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট
রাস্পবেরি পাই 4 ট্রাফিক সাইন স্বীকৃতি রোবট

এই নির্দেশযোগ্য আমার বিশ্ববিদ্যালয় প্রকল্পের উপর ভিত্তি করে। উদ্দেশ্য ছিল এমন একটি সিস্টেম তৈরি করা যেখানে একটি নিউরাল নেটওয়ার্ক একটি ছবি বিশ্লেষণ করে এবং তারপর স্বীকৃতির উপর ভিত্তি করে একটি আরডুইনো রোবটকে রোজের মাধ্যমে চলতে বলবে।

উদাহরণস্বরূপ যদি একটি ডান দিকের টার্ন স্বীকৃত হয় তবে রোবটটি ডানদিকে ঘুরবে, যদি একটি বাঁদিকে বাম চিহ্ন স্বীকৃত হয় তবে রোবটটি বাম দিকে ঘুরবে, যদি কোনটিই স্বীকৃত না হয় তবে রোবটটি এগিয়ে চলবে। যে ডেটাসেটটি ব্যবহার করা হবে তা হল INI (2019) (Institut Fur Neuroinformatik) থেকে আনুষ্ঠানিক ট্রাফিক চিহ্ন স্বীকৃতি, এই ডেটাসেটে 43 টি ক্লাস আছে তবে মাত্র দুটি প্রয়োজন; ডেটাসেটে 00033 এবং 00034 ফোল্ডারগুলি বাম এবং ডানদিকে ঘুরানোর চিহ্ন।

ধাপ 1: প্রয়োজনীয়তা

প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা
প্রয়োজনীয়তা

এই প্রকল্পের প্রয়োজনীয়তাগুলি নিম্নরূপ:

একটি আরডুইনো রোবট। (মূলত একটি arduino uno, একটি মোটর ড্রাইভার এবং মোটর) (যদি আপনি একটি রোবট ব্যবহার না করছেন প্রয়োজন নেই)

একটি রাস্পবেরি পাই 4।

একটি পাই ক্যামেরা।

সফ্টওয়্যার প্রয়োজন:

পাইথন।

OpenCV 4।

টেন্সরফ্লো।

arduino IDE (যদি আপনি রোবট ব্যবহার না করেন তবে প্রয়োজন নেই)

রোজ (যদি আপনি রোবট ব্যবহার না করেন তবে প্রয়োজন নেই)

আপনার প্রিয় পাইথন আইডিয়া যাই হোক না কেন (রাস্পবেরি পাইতে, আমি থনি ব্যবহার করি)।

ওপেনসিভি এবং টেন্সরফ্লো সেট আপ করতে, অ্যাড্রিয়ানের নির্দেশাবলী অনুসরণ করুন। লিঙ্ক:

আমি যতটা সম্ভব তার টিউটোরিয়ালগুলি দেখার পরামর্শ দিচ্ছি, সেগুলি সত্যিই আকর্ষণীয় এবং উভয়ই নতুনদের জন্য এবং মধ্যস্থতাকারীদের জন্যও দরকারী।

ধাপ 2: ডেটা প্রশিক্ষণ

ট্রেন স্ক্রিপ্টটি ডেটাসেট অ্যাক্সেস করার জন্য ডিজাইন করা হয়েছে যা 43 টি শ্রেণীর প্রায় 50, 000 ইমেজ সংগ্রহ করে। স্ক্রিপ্টটি বিভিন্ন লাইব্রেরি ব্যবহার করে পাইথনে লেখা হয়েছে: ওএস - এটি পাইথন স্ক্রিপ্টটিকে সঠিক ডিরেক্টরিতে সংযুক্ত করার জন্য যেখানে ডেটাসেট অবস্থিত। ম্যাটপ্লটলিব - এটি প্রশিক্ষণ মডেল থেকে ডেটা প্রদর্শনের জন্য। টেন্সরফ্লো এবং কেরাস - এগুলি হল কৃত্রিম নিউরাল নেটওয়ার্ক মডেল তৈরিতে ব্যবহৃত লাইব্রেরি, এগুলি মডেল ডিজাইন করতে ব্যবহৃত হয়। নম্পি - এই লাইব্রেরিটি ছবিগুলিকে একটি অ্যারেতে পরিণত করার জন্য যা পরে একটি পূর্বাভাস পুনরুদ্ধারের জন্য মডেলের মাধ্যমে রাখা যেতে পারে।

ডেটাসেট থেকে একটি মডেল তৈরির জন্য সংযুক্ত স্ক্রিপ্ট হল পাইথন কোড। এটি একটি (5, 5) ইনপুট এবং রিলু এর একটি সক্রিয়করণের সাথে কনভোলিউশনাল 2D নিয়ে গঠিত তারপর পুলিং, একবার এটি হয়ে গেলে ইনপুট একই অ্যাক্টিভেশন এবং পুলিং সহ একটি (3, 3) ইনপুট দিয়ে অন্য কনভোলিউশনের মধ্য দিয়ে যায়। চ্যাপ্টা হওয়ার আগে এটি শেষবারের মতো ঘটে এবং তারপরে ক্লাসের পরিমাণে ঘনত্ব প্রয়োগ করা হয়, এই ক্ষেত্রে 43।

পরবর্তী ধাপটি ছিল মডেলটি কম্পাইল করা। এটি সেই অংশ যা অপটিমাইজার সেট করে, একটি এসজিডি সবচেয়ে উপযুক্ত ছিল কারণ এটি অ্যাসাইনমেন্টে ব্যবহৃত অপ্টিমাইজারের অনুরূপ ছিল। এছাড়াও কম্পাইলারের মধ্যে ক্ষতি সেট করা প্রয়োজন, একটি sparse_categorical_crossentropy ক্ষতি নির্বাচন করা সবচেয়ে উপযুক্ত কারণ বিভাগগুলি পূর্ণসংখ্যা হিসাবে এবং মডেলটি প্রতিটি শ্রেণীর জন্য 0 থেকে 1. এর মধ্যে একটি ভাসা হিসাবে একটি পূর্বাভাস দেবে। 1% 100% নির্ভুলতা।

একবার কম্পাইলার সম্পন্ন হলে, ইমেজ ইনপুট প্রক্রিয়াকরণ শুরু করার জন্য মডেলের জন্য একটি জেনারেটর প্রয়োগ করতে হবে। জেনারেটর একাধিক অংশ নিয়ে গঠিত: প্রশিক্ষণ_সেট - এটি প্রশিক্ষণের জন্য ব্যবহৃত ডেটাসেটের লিংক, ধাপ_পার_পোচ - এটি প্রতি যুগের জন্য প্রয়োজনীয় সংখ্যক ধাপ, যুগে - এইগুলি ডেটার একটি সম্পূর্ণ সেটের মাধ্যমে প্রোগ্রামটি কতবার পুনরাবৃত্তি করবে, validation_data - এটি যাচাইকরণের জন্য ব্যবহৃত ডেটাসেটের লিঙ্ক, যাচাইকরণ_ পদক্ষেপ - যাচাইকরণের জন্য ব্যবহৃত ধাপের সংখ্যা, বৈধতা প্রতিটি যুগের শেষে ঘটে।

সাধারণত, প্রতিটি ডেটাসেটের সম্পূর্ণ মুছা প্রতি যুগের জন্য সম্পূর্ণ হওয়া প্রয়োজন। অতএব উদাহরণস্বরূপ 1024 ছবির একটি ডেটাসেটের প্রয়োজন হবে: ব্যাচ সাইজ = 32, ধাপ প্রতি যুগ = 32, যুগ = 1। হাত, ক্লাসের সংখ্যার চেয়ে বড় ব্যাচের আকার থাকা ভাল, কারণ ব্যাচের আকার যদি ছোট হয় তবে প্রতিটি ধাপে প্রতিটি শ্রেণীর একটি চিত্র অন্তর্ভুক্ত করা যাবে না।

একবার মডেলটি প্রশিক্ষণ শেষ করলে, matplotlib ব্যবহার করে প্রোগ্রামটি আউটপুটের একটি গ্রাফ তৈরি করবে, এটি শুরু থেকে শেষ পর্যন্ত প্রশিক্ষণের ইতিহাস দেখায়। গ্রাফটিতে নির্ভুলতা, বৈধতা নির্ভুলতা, ক্ষতি এবং বৈধতা ক্ষতি রয়েছে, প্রশিক্ষণটি কীভাবে এগিয়েছে তা দেখানোর জন্য এটি প্রতি যুগের মধ্যে বিভক্ত। চূড়ান্ত পর্যায়ে মডেলটিকে.h5 ফাইল হিসাবে সংরক্ষণ করা যা ভবিষ্যদ্বাণী প্রক্রিয়ার জন্য পরে অ্যাক্সেস করা যায়। মডেলটি সংরক্ষণ করার অর্থ হল যে প্রতিবার ভবিষ্যদ্বাণী প্রোগ্রাম চালানো হয় প্রশিক্ষণ প্রোগ্রামটি আবার চালানোর দরকার নেই। একটি রাস্পবেরি পাইতে প্রশিক্ষণ কর্মসূচী প্রতি যুগে 10 মিনিট পর্যন্ত সময় নিতে পারে।

প্রশিক্ষণ স্ক্রিপ্ট সংযুক্ত করা হয়েছে:

ধাপ 3: পাই ক্যামেরা ভবিষ্যদ্বাণীগুলি বাস্তবায়ন করা

পরবর্তী প্রোগ্রাম হল ভবিষ্যদ্বাণী এবং প্রকাশকের স্ক্রিপ্ট।

প্রথম পর্যায়ে model.load () ব্যবহার করে মডেল লোড করা। দ্বিতীয় পর্যায় হল ওপেনসিভি ব্যবহার করে পাই ক্যামেরা থেকে ফ্রেমের মাধ্যমে পুনরাবৃত্তি করা এবং তারপরে প্রশিক্ষণ পর্যায়ে ব্যবহৃত ইনপুট আকারের 32 32 32 পিক্সেল হিসাবে ফ্রেমের আকার পরিবর্তন করুন। একবার এটি হয়ে গেলে নতুন আকারের ফ্রেমটি মডেলের মাধ্যমে রাখা হয় model.predict () যা একটি ম্যাট্রিক্স আউটপুট করে, ম্যাট্রিক্সের প্রতিটি উপাদান 0 থেকে 1 পর্যন্ত একটি ফ্লোট, উপাদান সূচকটি যে শ্রেণীর প্রতিনিধিত্ব করে তার সমান, তাই প্রথম উপাদান হল ক্লাস ওয়ান এবং সংখ্যা হল সেই শ্রেণীর ছবিটির নিশ্চিত হওয়ার পূর্বাভাস। যেমন

দ্রষ্টব্য: যদি আপনি রোবট সাইড ব্যবহার না করেন। শুধু লাইনগুলি সরান:

"আমদানি রস্পি"

ডিফ টকার (দিকনির্দেশ):

বার্তা = স্ট্রিং ()

pub = rospy. Publisher ('রোবট', স্ট্রিং, queue_size = 10)

rospy.init_node ('বক্তা', বেনামী = সত্য)

বার্তা = দিক

rospy.loginfo (বার্তা)

pub.publish (বার্তা)"

"বক্তা (দিকনির্দেশ)"

পাই ক্যামেরার স্ক্রিপ্ট সংযুক্ত।

ধাপ 4: আরডুইনো রোবট

শেষ ধাপ হলো রোবট প্রোগ্রামের স্ক্রিপ্ট।

এটি C ++ এ লেখা এবং arduino uno এর জন্য একটি.ino ফাইল। প্রোগ্রামের জন্য প্রয়োজন রোস লাইব্রেরি যা লাইব্রেরি ম্যানেজারে আইডির মধ্যে পাওয়া যাবে। একবার এটি আমদানি করা হলে সেখানে উদাহরণ ফাইল রয়েছে, আমি নেতৃত্বাধীন ব্লিংক ফাইলে প্রসারিত করতে বেছে নিয়েছি কারণ এটি আমার প্রয়োজনের অনুরূপ উদ্দেশ্য করবে। বিদ্যুৎ সংযোগ বিচ্ছিন্ন না হওয়া পর্যন্ত প্রোগ্রামটি লুপ অব্যাহত রাখে, প্রথমে এটি টপিক রোবট শোনে, যখন এটি সেই টপিক থেকে একটি কমান্ড পায় তখন কমান্ডটি কী বলে তা দেখতে একটি if স্টেটমেন্ট থাকবে। যদি কমান্ডটি বামে থাকে তবে স্ক্রিপ্টটি বাঁদিকে বাঁক পদ্ধতি চালায়, যদি কমান্ডটি সঠিক হয় তবে এটি টার্ন ডান পদ্ধতি চালাবে এবং অন্যথায় এটি ফরওয়ার্ড পদ্ধতি চালাবে। এই তিনটি পদ্ধতি একে অপরের সাথে খুব মিল, তারা ডিজিটাল পিনগুলিকে LOW (স্থল) বা 100 (PWM) হতে বলে, যাতে রোবটটি খুব দ্রুত হয় না যাতে মোটর চালককে বলে দেওয়া যায় যে শুধু একটু ভোল্টেজ আউট। এই আউটপুটগুলির ক্রম হল যা রোবটকে বাম এবং ডানে ঘুরিয়ে দেয় বা এগিয়ে যায়, এটি মোটরগুলিতে যাওয়া ভোল্টেজের ওরিয়েন্টেশনের কারণে।

Arduino এর জন্য.ino স্ক্রিপ্ট সংযুক্ত।

ধাপ 5: পরীক্ষা

পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক

ছবি সংযুক্ত তাই শুরু থেকে শেষ পর্যন্ত প্রকল্প। প্রথম ছবিটি প্রক্রিয়াধীন প্রশিক্ষণ দেখায়। একবার এটি সম্পূর্ণ হয়ে গেলে তৈরি মডেলের একটি প্রিন্ট আউট দেখানো হয়। তৃতীয় চিত্রটি প্রশিক্ষণ স্ক্রিপ্ট থেকে একটি পূর্বাভাস দেখায়। এটি প্রশিক্ষণ স্ক্রিপ্টের শেষ পর্যায়। যদি আপনি ফোল্ডারে দেখেন যে প্রশিক্ষণ স্ক্রিপ্ট রয়েছে, একটি গ্রাফ এবং একটি মডেল তৈরি করা হয়েছে। গ্রাফটি এখানে চিত্র 4 এর মতো হওয়া উচিত, এটি শুরু থেকে শেষ পর্যন্ত প্রশিক্ষণের ইতিহাস দেখায়।

পাই ক্যামেরা স্ক্রিপ্ট চালানোর সময় চূড়ান্ত চিত্রটি হল, পাই ক্যামেরা থেকে একটি লাইভ স্ট্রিম। প্রতিটি ফ্রেমে একটি ভবিষ্যদ্বাণী করা হয় এবং ভবিষ্যদ্বাণী টার্মিনালে মুদ্রিত হয়। ফ্রেম দেখায় ক্যামেরা কি দেখছে।

এই প্রকল্পের জন্য আমার বিশ্ববিদ্যালয়ের রিপোর্ট সংযুক্ত। প্রকল্পের আরো বিস্তারিত জানার জন্য দয়া করে পড়ুন।

ধাপ 6: সমস্ত অতিরিক্ত ফাইল

সমস্ত অতিরিক্ত ফাইল
সমস্ত অতিরিক্ত ফাইল

এর মধ্যে কিছু ছিল যা আমি পথে তৈরি করা ফাইলগুলি পরীক্ষা করেছিলাম।

প্রস্তাবিত: