এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট 1/2: 16 টি ধাপ (ছবি সহ)
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট 1/2: 16 টি ধাপ (ছবি সহ)
Anonim
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২

কিছুদিন আগে, আমি জিমে আমার ডান হাতের কব্জিতে আঘাত পেয়েছিলাম। পরে যতবার আমি আমার কম্পিউটার মাউস ব্যবহার করেছি, খাড়া কব্জি কোণের কারণে এটি অনেক ব্যথা করেছে।

তখনই এটা আমাকে আঘাত করেছিল "এটা কি খুব ভালো হবে না যদি আমরা কোনো পৃষ্ঠকে ট্র্যাকপ্যাডে রূপান্তরিত করতে পারি" এবং আমি জানি না কেন কিন্তু কিছু কারণে আমি তার সম্পর্কে ভেবেছিলাম, তার সিনেমা, আমি আপনাকে এটা বুঝতে দেব বাইরে এটি একটি উত্তেজনাপূর্ণ চিন্তা ছিল কিন্তু আমি জানতাম না যে আমি এটি করতে পারব কিনা, আমি এটি চেষ্টা করার সিদ্ধান্ত নিয়েছি।

এই নিবন্ধটি এটি থেকে কী এসেছে তা ধারণ করে।

আমরা শুরু করার আগে আমার একটি দাবিত্যাগ আছে-

এই নিবন্ধের শেষে, আমি কোনো পৃষ্ঠকে ট্র্যাকপ্যাডে রূপান্তর করতে পারিনি কিন্তু আমি অনেক কিছু শিখিনি এবং আমার অস্ত্রাগারে বড় সরঞ্জাম যুক্ত করেছি। আমি আশা করি আপনার সাথেও তাই হবে '

চল শুরু করি.

ধাপ 1: ভিডিও

Image
Image

এখানে একটি ছোট 5 মিনিটের ভিডিও রয়েছে যা সমস্ত ধাপগুলি অন্তর্ভুক্ত করে। দেখা যাক.

ধাপ 2: হার্ডওয়্যার

হার্ডওয়্যার
হার্ডওয়্যার

আমি প্রায় 45 সেন্টিমিটার উচ্চতায় রাস্পবেরি পাই ক্যামেরা সহ একটি রাস্পবেরি পাই সেটআপ করি। এটি আমাদের ক্যামেরার নীচে প্রায় 25x25 সেমি এলাকা পর্যবেক্ষণ করে।

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

এই লিঙ্কটি দেখুন অথবা আমার রাস্পবেরি পাই প্লেলিস্টগুলির মধ্যে একটি আপনার মাথাবিহীন পাইটি চালু এবং চালানোর জন্য।

এই সেটআপটি অনুসরণ করে, আমাদের এমন একটি কোডের প্রয়োজন যা ক্যামেরা পর্যবেক্ষণ করছে এমন এলাকায় কোন হাত আছে কিনা তা নির্ধারণ করে এবং যদি তা হয় তবে এটি কোথায়।

ধাপ 3: কোডের টুকরা

কোডের টুকরা
কোডের টুকরা
কোডের টুকরা
কোডের টুকরা

টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরা। তারা প্রোগ্রামিং বিভাগের অধীনে পড়ে যেখানে আমরা সিদ্ধান্ত নেওয়ার নিয়মগুলি সংজ্ঞায়িত করি না কিন্তু আমরা নিউরাল নেটওয়ার্ককে পর্যাপ্ত ডেটা দেখাই যা এটি নিজেই নিয়মগুলি বের করে।

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

ধাপ 4: ছবি পাওয়া

ছবি পাওয়া
ছবি পাওয়া

আমি আমার রাস্পবেরি পাইতে রিমোট লগ-ইন করেছি এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে ছবিগুলির গুচ্ছ ক্যাপচার করেছি।

sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame%04d.jpg

আমি হাত দিয়ে images০ টি ছবি এবং images০ টি ছবি ধারণ করেছি যার মধ্যে হাত নেই। একটি নিউরাল নেটওয়ার্ককে সঠিকভাবে প্রশিক্ষণের জন্য 160 টি ছবি যথেষ্ট নয় কিন্তু ধারণার প্রমাণের জন্য যথেষ্ট হওয়া উচিত।

160 টি ইমেজ ছাড়াও, আমাদের নেটওয়ার্ক প্রশিক্ষিত হয়ে গেলে তা পরীক্ষা করার জন্য আমি আরও 20 টি ছবি ক্যাপচার করেছি।

একবার ডেটাসেট প্রস্তুত হয়ে গেলে আমি নিউরাল নেটওয়ার্কের জন্য কোড লেখা শুরু করি।

ধাপ 5: ব্যবহৃত সরঞ্জাম এবং ভাষা

ব্যবহৃত সরঞ্জাম এবং ভাষা
ব্যবহৃত সরঞ্জাম এবং ভাষা
ব্যবহৃত সরঞ্জাম এবং ভাষা
ব্যবহৃত সরঞ্জাম এবং ভাষা

আমি পাইরাথন ডিপ লার্নিং লাইব্রেরিতে কেরাস নামে আমার নিউরাল নেটওয়ার্ক লিখেছি এবং অ্যানাকোন্ডা নেভিগেটর থেকে জুপাইটার নোটবুকে কোড লেখা হয়েছে।

ধাপ 6: প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা

প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে
প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করা হচ্ছে

প্রথম (ছবি #1) আমি এই প্রকল্পের জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি অন্তর্ভুক্ত করেছি, যার মধ্যে পিআইএল, ম্যাটপ্লটলিব, নম্পি, ওএস এবং কেরাস রয়েছে। পাইথন নোটবুকের দ্বিতীয় ঘরে (চিত্র #2) আমি ডেটাসেটের পথ নির্ধারণ করি এবং নমুনা গণনা মুদ্রণ করি। এখন আমাদের সমস্ত ছবিগুলিকে একটি অসম্পূর্ণ অ্যারেতে লোড করতে হবে, অতএব তৃতীয় ঘরে (চিত্র #2) আমি 82 (হাতের নমুনার সংখ্যা) +75 (নন -হ্যান্ড নমুনার সংখ্যা) অর্থাৎ 157x100x100x3 এর একটি অসম্পূর্ণ অ্যারে তৈরি করেছি। 157 হল আমার মোট ছবিগুলির সংখ্যা, 100x100 হল আমাদের আকারের চিত্রের মাত্রা এবং 3 টি ছবিতে লাল, সবুজ এবং নীল রঙের স্তরগুলির জন্য।

চতুর্থ এবং পঞ্চম কক্ষে, আমরা হাত ধারণকারী ছবি লোড করি যার পরে এমন চিত্র থাকে যা অসম্পূর্ণ অ্যারেতে হাত থাকে না। ষষ্ঠ ঘরে, আমরা প্রতিটি মানকে 255 দিয়ে ভাগ করি তাই 0 থেকে 1 পর্যন্ত মান পরিসীমা সীমিত করে। (চিত্র #3)

সংযুক্ত ছবিগুলি যথেষ্ট ভাল না হলে আমি দু sorryখিত। কোডটি দেখার জন্য এখানে GITHUB সংগ্রহস্থলের লিঙ্ক রয়েছে। আপনার পথের সাথে ডিরেক্টরি পাথের নাম প্রতিস্থাপন করতে ভুলবেন না:)।

বরাবর চলন্ত.

পরবর্তী আমরা প্রতিটি ইমেজ লেবেল প্রয়োজন, তাই, আমরা 157 দৈর্ঘ্যের একটি মাত্রিক numpy অ্যারে তৈরি। প্রথম 82 টি এন্ট্রি 1 তে সেট করা আছে এবং অবশিষ্ট 75 টি এন্ট্রি 0 তে পৌঁছে দেওয়া হচ্ছে নিউরাল নেটওয়ার্ককে বোঝাতে যে প্রথম 82 টি ইমেজ এক শ্রেণীর এবং বাকিগুলো অন্য ক্লাসের। (ছবি #4)

এখন একটি নিউরাল নেটওয়ার্ক তৈরি করা যাক।

ধাপ 7: নিউরাল নেটওয়ার্ক

নিউরাল নেটওয়ার্ক
নিউরাল নেটওয়ার্ক
নিউরাল নেটওয়ার্ক
নিউরাল নেটওয়ার্ক

নবম কোষে, আমরা আমাদের নিউরাল নেটওয়ার্ককে সংজ্ঞায়িত করি। এতে কনভোলিউশন লেয়ারের তিনটি পুনরাবৃত্তি রয়েছে এবং যথাক্রমে 8, 12 এবং 16 কনভোলিউশন ফিল্টার সহ ম্যাক্সপুল লেয়ার রয়েছে। এর পরে আমাদের দুটি ঘন নিউরাল জাল রয়েছে। এই ধাপের জন্য দুটি ছবি সংযুক্ত করা হচ্ছে। প্রথমটি হচ্ছে স্ন্যাপ অব কোড যা নিউরাল নেটওয়ার্ক তৈরি করে এবং দ্বিতীয়টি হল আউটপুট ডাইমেনশন এবং অপারেশন এনোটোটেড সহ নিউরাল নেটওয়ার্কের সচিত্র চিত্র।

ধাপ 8: নিউরাল নেটওয়ার্ক প্রশিক্ষণ

নিউরাল নেটওয়ার্ক প্রশিক্ষণ
নিউরাল নেটওয়ার্ক প্রশিক্ষণ

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

ধাপ 9: নিউরাল নেটওয়ার্ক পরীক্ষা করা

নিউরাল নেটওয়ার্ক পরীক্ষা করা
নিউরাল নেটওয়ার্ক পরীক্ষা করা

একবার নিউরাল নেটওয়ার্ক প্রশিক্ষিত হলে, আমাদের পরীক্ষার ডেটা সেট প্রস্তুত করতে হবে। আমরা পরীক্ষার সেট তৈরির জন্য পরীক্ষার ডেটার উপর 3 য়, 4 র্থ, 5 ম এবং 6 ষ্ঠ সেলে প্রশিক্ষণ সেট প্রস্তুত করার জন্য সম্পন্ন পদ্ধতি পুনরাবৃত্তি করি। আমরা পরীক্ষার সেটের জন্য লেবেলও প্রস্তুত করি কিন্তু এবার আমরা এই ডেটা সেটে মডেল চালাই ভবিষ্যদ্বাণী পেতে এবং প্রশিক্ষণ না দেওয়ার জন্য।

ধাপ 10: ফলাফল এবং পরবর্তী অংশ …

ফলাফল এবং পরবর্তী অংশ …
ফলাফল এবং পরবর্তী অংশ …

আমি 88% পরীক্ষার নির্ভুলতা পেয়েছি কিন্তু এটিকে এক চিমটি লবণের সাথে নিয়েছি কারণ এই মডেলটি প্রশিক্ষণ এবং পরীক্ষা করার জন্য ব্যবহৃত ডেটাসেট খুব ছোট এবং এই মডেলটিকে সঠিকভাবে প্রশিক্ষণের জন্য অপর্যাপ্ত।

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

পরবর্তী অংশে, আমরা আরেকটি নিউরাল নেটওয়ার্ককে প্রশিক্ষণ দেব যা আমাদের হাতের সনাক্ত করা ছবিতে হাতের অবস্থান বলবে।

সমস্ত প্রশ্ন স্বাগত।

যদি কেউ আমার ছোট্ট ডেটাসেট ব্যবহার করতে আগ্রহী হয় তাহলে আমাকে মন্তব্য করুন। আমি এটা উপলব্ধ করা হবে।

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

সম্পাদনা:- পরবর্তী ধাপগুলি দ্বিতীয় অংশের জন্য।

ধাপ 11: অবজেক্ট ডিটেকশন

অবজেক্ট ডিটেকশন
অবজেক্ট ডিটেকশন

পূর্ববর্তী ধাপে আমরা একটি NN তৈরি করেছি যা আমাদের বলে যে পরীক্ষার ছবিতে হাত আছে কি না। আচ্ছা এরপর কি? যদি NN চিত্র ধারণকারী হাত হিসাবে শ্রেণীবদ্ধ করে তবে আমরা হাতের অবস্থান জানতে চাই। একে কম্পিউটার ভিশন সাহিত্যে অবজেক্ট ডিটেকশন বলে। সুতরাং আসুন NN কে প্রশিক্ষণ দেই যা ঠিক একই কাজ করে।

ধাপ 12: ভিডিও

Image
Image

একটি 3 মিনিটের ভিডিও বাকি সব ধাপ ব্যাখ্যা করে। দেখা যাক.

ধাপ 13: লেবেলিং

লেবেলিং
লেবেলিং
লেবেলিং
লেবেলিং
লেবেলিং
লেবেলিং

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

Csv ফাইলের সংযুক্ত ছবিতে প্রতিটি ছবির লেবেল রয়েছে। অনুগ্রহ করে মনে রাখবেন যে চিত্রের মাত্রার সাথে স্থানাঙ্কগুলি স্বাভাবিক করা হয় অর্থাৎ যদি উপরের X স্থানাঙ্কটি 640 পিক্সেলের প্রস্থের ছবিতে 320 তম পিক্সেলের হয়, আমরা এটিকে 0.5 হিসাবে চিহ্নিত করব।

ধাপ 14: GUI লেবেল করা

GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা
GUI লেবেল করা

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

ধাপ 15: লাইব্রেরি প্রয়োজন

লাইব্রেরি দরকার
লাইব্রেরি দরকার
লাইব্রেরি দরকার
লাইব্রেরি দরকার
লাইব্রেরি দরকার
লাইব্রেরি দরকার

প্রথমে আমাদের সমস্ত প্রয়োজনীয় লাইব্রেরি লোড করতে হবে। যা রয়েছে

  • ইমেজ ম্যানিপুলেশনের জন্য পিআইএল,
  • চক্রান্ত করার জন্য matplotlib,
  • ম্যাট্রিক্স অপারেশনের জন্য অস্পষ্ট,
  • অপারেটিং সিস্টেম নির্ভর কার্যকারিতার জন্য এবং
  • নিউরাল নেটওয়ার্কের জন্য কেরাস।

ধাপ 16: অবশিষ্ট কোষ

অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ
অবশিষ্ট কোষ

২ য়,, য়, 4th র্থ এবং ৫ ম সেলে আমরা ছবিগুলিকে অসম্পূর্ণ অ্যারেতে লোড করি এবং csv ফাইল থেকে লেবেল হিসেবে কাজ করার জন্য একটি চার মাত্রিক অ্যারে তৈরি করি। 6 নং কক্ষে আমরা আমাদের নিউরাল নেটওয়ার্ক তৈরি করি। এর স্থাপত্যটি স্নায়ু নেটওয়ার্কের অনুরূপ যা শ্রেণীবিভাগের জন্য ব্যবহৃত হয় আউটপুট স্তর মাত্রা ছাড়া যা 4 এবং 1 নয়। 8 নং কক্ষে আমরা আমাদের স্নায়বিক নেটওয়ার্কের প্রশিক্ষণ শুরু করি একবার প্রশিক্ষিত হয়ে আমি এই মডেলটি পরীক্ষা সেটে দৌড়ালাম যাতে বাউন্ডিং বক্সের ওভারলেং কোঅর্ডিনেটগুলির উপর বন্ডিং বক্সের পূর্বাভাস পাওয়া যায় যা তারা দেখতে বেশ সঠিক।

পড়ার জন্য ধন্যবাদ.

প্রস্তাবিত: