সুচিপত্র:

রক পেপার কাঁচি এআই: 11 টি ধাপ
রক পেপার কাঁচি এআই: 11 টি ধাপ

ভিডিও: রক পেপার কাঁচি এআই: 11 টি ধাপ

ভিডিও: রক পেপার কাঁচি এআই: 11 টি ধাপ
ভিডিও: গাজীপুরে সড়কের পাশে গলাকাটা লাশ! জানা যায়নি নাম-পরিচয় | Gazipur Deadbody 2024, নভেম্বর
Anonim
রক পেপার কাঁচি এআই
রক পেপার কাঁচি এআই

কখনও একা একা বিরক্ত বোধ করেছেন? আসুন বুদ্ধি দিয়ে চালিত একটি ইন্টারেক্টিভ সিস্টেমের বিরুদ্ধে রক, কাগজ এবং কাঁচি খেলি।

ধাপ 1: এই প্রকল্পে ব্যবহৃত জিনিসগুলি

হার্ডওয়্যার উপাদান

  • রাস্পবেরি পাই 3 মডেল বি+ × 1
  • রাস্পবেরি পাই ক্যামেরা মডিউল V2 × 1
  • SG90 মাইক্রো-সার্ভো মোটর × 1

সফটওয়্যার অ্যাপস

  • রাস্পবেরি পাই রাস্পবিয়ান
  • ওপেনসিভি
  • টেন্সরফ্লো

ধাপ 2: আইডিয়া?

Image
Image

বিভিন্ন ডোমেইনে বিভিন্ন প্রজেক্টে কাজ করার পর, আমি একটি মজাদার প্রজেক্ট বানানোর পরিকল্পনা করেছি, এবং আমি একটি রক-পেপার-কাঁচি গেম তৈরির সিদ্ধান্ত নিয়েছি:)

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

এই গেমটির জন্য যে নিয়মগুলি বিবেচনা করতে হবে:

  • রক কাঁচি blunts
  • কাগজ পাথর coversেকে রাখে
  • কাঁচি কাটার কাগজ

উপরোক্ত তিনটি শর্তের ভিত্তিতে বিজয়ী নির্ধারণ করা হবে। এখানে প্রকল্পের একটি দ্রুত ডেমো দেখুন।

ধাপ 3: শুরু করা?

শুরু হচ্ছে ?
শুরু হচ্ছে ?
শুরু হচ্ছে ?
শুরু হচ্ছে ?

রাস্পবেরি পাই

আমি একটি রাস্পবেরি পাই 3 মডেল বি+ ব্যবহার করেছি যার দারুণ উন্নতি রয়েছে এবং এটি আগের রাস্পবেরি পাই 3 মডেল বি এর চেয়ে বেশি শক্তিশালী।

রাস্পবেরি পাই 3 বি+ 1.4GHz 64-বিট কোয়াড-কোর প্রসেসর, ডুয়াল ব্যান্ড ওয়্যারলেস ল্যান, ব্লুটুথ 4.2/বিএলই, দ্রুত ইথারনেট এবং পাওয়ার-ওভার-ইথারনেট সাপোর্ট (পৃথক PoE HAT সহ) এর সাথে সংযুক্ত।

বিশেষ উল্লেখ: Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz, 1GB LPDDR2 SDRAM, 2.4GHz এবং 5GHz IEEE 802.11.b/g/n/ac ওয়্যারলেস ল্যান, ব্লুটুথ 4.2, BLE, গিগাবিট ইথারনেট USB 2.0 এর উপর (সর্বাধিক থ্রুপুট M০০ এমবিপিএস), বর্ধিত -০-পিন জিপিআইও হেডার, ফুল-সাইজ এইচডিএমআই USB ইউএসবি ২.০ পোর্ট, রাস্পবেরি পাই ক্যামেরা সংযোগের জন্য সিএসআই ক্যামেরা পোর্ট, রাস্পবেরি পাই টাচস্ক্রিন ডিসপ্লে সংযোগের জন্য ডিএসআই ডিসপ্লে পোর্ট--পোল স্টেরিও আউটপুট এবং কম্পোজিট ভিডিও পোর্ট, মাইক্রো এসডি পোর্ট আপনার অপারেটিং সিস্টেম লোড করার জন্য এবং ডেটা সংরক্ষণ করার জন্য 5V/2.5A ডিসি পাওয়ার ইনপুট, পাওয়ার-ওভার-ইথারনেট (PoE) সাপোর্ট (আলাদা PoE HAT প্রয়োজন)।

Servo মোটর

আমরা একটি SG-90 servo মোটর ব্যবহার করি, একটি উচ্চ টর্ক মোটর যা 2.5kg (1cm) পর্যন্ত লোড সামলাতে পারে।

ইউএসবি ক্যামেরা

ইমেজ প্রসেসিংয়ের সাথে গেমটিকে ইন্টারেক্টিভ করার জন্য একটি ইউএসবি ক্যামেরা

কিছু জাম্পার তারগুলি স্টেপার মোটর এবং রাস্পবেরি পাইতে তারের জন্য ব্যবহৃত হয়।

ধাপ 4: রাস্পবিয়ানকে এসডি কার্ডে বার্ন করুন?

রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?
রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?
রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?
রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?
রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?
রাস্পবিয়ানকে এসডি কার্ডে বার্ন করবেন?

রাস্পবিয়ান হল রাস্পবেরি পাইতে চলমান পছন্দের লিনাক্স বিতরণ। এই নির্দেশিকায়, আমরা লাইট সংস্করণ ব্যবহার করব, কিন্তু ডেস্কটপ সংস্করণ (যা একটি গ্রাফিক্যাল পরিবেশের সাথে আসে) পাশাপাশি ব্যবহার করা যেতে পারে।

  • Etcher ডাউনলোড করে ইন্সটল করুন।
  • একটি এসডি কার্ড রিডারকে এসডি কার্ডের সাথে সংযুক্ত করুন।
  • Etcher খুলুন এবং আপনার হার্ড ড্রাইভ থেকে Raspberry Pi.img অথবা.zip ফাইলটি নির্বাচন করুন যা আপনি SD কার্ডে লিখতে চান।
  • আপনি যে এসডি কার্ডে আপনার ছবি লিখতে চান তা নির্বাচন করুন।
  • আপনার নির্বাচন পর্যালোচনা করুন এবং 'ফ্ল্যাশ!' এসডি কার্ডে ডেটা লেখা শুরু করতে।

ডিভাইসটিকে আপনার নেটওয়ার্কে সংযুক্ত করুন

  • খালি ফাইল ssh যোগ করে SSH অ্যাক্সেস সক্ষম করুন, আবার আপনার SD কার্ডে বুট ভলিউমের মূলে রাখা।
  • রাস্পবেরি পাইতে এসডি কার্ড োকান। এটি প্রায় 20 সেকেন্ডের মধ্যে বুট হবে। আপনার এখন আপনার রাস্পবেরি পাইতে এসএসএইচ অ্যাক্সেস থাকা উচিত। ডিফল্টরূপে, এর হোস্টনাম হবে raspberrypi.local। আপনার কম্পিউটারে, একটি টার্মিনাল উইন্ডো খুলুন এবং নিম্নলিখিতটি টাইপ করুন:

ssh [email protected]

ডিফল্ট পাসওয়ার্ড হল রাস্পবেরি

এখানে আমি রাস্পবেরি পাই এর সাথে ইন্টারফেস করার জন্য একটি পৃথক মনিটর ব্যবহার করেছি।

ধাপ 5: ডেটাসেট সংগ্রহ করা?

ডেটাসেট সংগ্রহ করা?
ডেটাসেট সংগ্রহ করা?
ডেটাসেট সংগ্রহ করা?
ডেটাসেট সংগ্রহ করা?

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

আমরা পিপ ইনস্টল ব্যবহার করে রাস্পবেরি পাইতে বেশ কয়েকটি লাইব্রেরি ইনস্টল করি

কমান্ড

sudo apt-get update && sudo apt-get upgrade আপডেট করুন টেনসারফ্লো পিপ ইনস্টল করুন ওয়ার্কজেগ পিপ ইনস্টল করুন কেরাস-অ্যাপ্লিকেশন পিপ ইনস্টল করুন কেরাস-প্রিপ্রোসেসিং পিপ ইনস্টল করুন কেরাস-স্কুইজিনেট পিপ ইনস্টল এস্টর পিপ ইনস্টল করুন টেনসরবোর্ড পিপ ইনস্টল করুন pip install protobuf pip install PyYAML pip install six

যদি আপনি OpenCVpackage এর সাথে কোন সমস্যার সম্মুখীন হন, আমি দৃ strongly়ভাবে এই প্যাকেজগুলি ইনস্টল করার সুপারিশ করি।

sudo apt-get libhdf5-dev ইনস্টল করুন

sudo apt-get libhdf5-serial-dev sudo apt-get libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get libqtgui4 sudo apt-install libqt4-test ইনস্টল করুন

আমরা এই প্রকল্পের জন্য সমস্ত প্রয়োজনীয় নির্ভরতা ইনস্টল করেছি। ডেটা-সেট যথাযথ লেবেলের অধীনে ছবির সংগ্রহ এবং ব্যবস্থা দ্বারা তৈরি করা হয়।

এখানে আমরা নিচের স্নিপেট ব্যবহার করে লেক রক, পেপার এবং কাঁচির জন্য ডেটা সেট ইমেজ তৈরি করি।

roi = ফ্রেম [100: 500, 100: 500]

save_path = os.path.join (img_class_path, '{}.jpg'.format (count + 1)) cv2.imwrite (save_path, roi)

ছবিটি প্রতিটি লেবেলের জন্য ধরা হয় (রক, কাগজ, কাঁচি এবং কিছুই নয়)।

ধাপ 6: একটি NN ডিজাইন করা এবং মডেলকে প্রশিক্ষণ দেওয়া ⚒️⚙️

একটি NN ডিজাইন করা এবং মডেলকে প্রশিক্ষণ দেওয়া ⚒️⚙️
একটি NN ডিজাইন করা এবং মডেলকে প্রশিক্ষণ দেওয়া ⚒️⚙️

এই প্রকল্পের মূল হল একটি ইমেজ ক্লাসিফায়ার যা তিনটি বিভাগের মধ্যে একটিকে শ্রেণীবদ্ধ করে। এই ক্লাসিফায়ার তৈরির জন্য, আমরা SqueezeNet নামক প্রাক-প্রশিক্ষিত CNN (কনভোলিউশনাল নেটওয়ার্ক) ব্যবহার করি।

এখানে আমরা SqueezeNet মডেল তৈরি করতে কেরাস এবং TensorFlow ব্যবহার করি যা অঙ্গভঙ্গি চিহ্নিত করতে পারে। আগের ধাপে আমরা যে ছবিগুলি তৈরি করেছি তা মডেলকে প্রশিক্ষণ দিতে ব্যবহৃত হয়। উল্লেখিত যুগের (চক্র) কোনটির জন্য উৎপন্ন ডেটাসেট ব্যবহার করে মডেলটিকে প্রশিক্ষণ দেওয়া হয়।

মডেলটি নীচে দেখানো হিসাবে হাইপারপ্যারামিটারগুলির সাথে কনফিগার করা হয়েছে।

মডেল = ক্রমিক ([SqueezeNet (input_shape = (227, 227, 3), include_top = false), ড্রপআউট (0.5), Convolution2D (NUM_CLASSES, (1, 1), প্যাডিং = 'বৈধ'), সক্রিয়করণ ('রেলু'), GlobalAveragePooling2D (), সক্রিয়করণ ('সফটম্যাক্স')])

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

10 যুগের পরে সর্বোচ্চ নির্ভুলতার সাথে মডেলটি তৈরি করতে মোটামুটি 2 ঘন্টা সময় লেগেছিল।

আপনার সোয়াপ স্পেস বাড়ানোর জন্য, /etc /dphys-swapfile খুলুন এবং তারপর CONF_SWAPSIZE ভেরিয়েবল সম্পাদনা করুন:

# CONF_SWAPSIZE = 100

CONF_SWAPSIZE = 1024

লক্ষ্য করুন যে আমি 100MB থেকে 1024MB এ সোয়াপ বাড়িয়ে দিচ্ছি সেখান থেকে, সোয়াপ পরিষেবা পুনরায় চালু করুন:

$ sudo /etc/init.d/dphys-swapfile স্টপ

$ sudo /etc/init.d/dphys-swapfile শুরু

বিঃদ্রঃ:

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

ধাপ 7: মডেল পরীক্ষা

মডেল টেস্টিং
মডেল টেস্টিং
মডেল টেস্টিং
মডেল টেস্টিং
মডেল টেস্টিং
মডেল টেস্টিং

একবার মডেল তৈরি হয়ে গেলে, এটি "রক-পেপার-কাঁচি-মডেল.এইচ 5" আউটপুট ফাইল তৈরি করে। এই ফাইলটি উৎস হিসেবে ব্যবহার করা হয় পরীক্ষা করার জন্য যে সিস্টেমটি বিভিন্ন হাতের অঙ্গভঙ্গি সনাক্ত করতে পারে এবং কর্মের পার্থক্য করতে সক্ষম।

নিম্নরূপ মডেলটি পাইথন স্ক্রিপ্টে লোড করা হয়েছে

মডেল = load_model ("rock-paper-scissors-model.h5")

ক্যামেরা পরীক্ষার চিত্রটি পড়ে এবং প্রয়োজনীয় রঙের মডেল রূপান্তরিত করে, এবং তারপর চিত্রটির আকার পরিবর্তন করে 227 x 227 পিক্সেল (মডেল প্রজন্মের জন্য ব্যবহৃত একই আকার)। মডেলগুলি প্রশিক্ষণের জন্য যে চিত্রগুলি ব্যবহার করা হয়েছিল তা উত্পন্ন মডেলটি পরীক্ষা করতে ব্যবহার করা যেতে পারে।

img = cv2.imread (filepath)

img = cv2.cvtColor (img, cv2. COLOR_BGR2RGB) img = cv2.resize (img, (227, 227))

একবার মডেলটি লোড হয়ে গেলে এবং ছবিটি ক্যামেরা দ্বারা অর্জিত হলে, মডেলটি লোড করা স্কেইজনেট মডেল ব্যবহার করে ধারণকৃত চিত্রের পূর্বাভাস দেয় এবং ব্যবহারকারীর চলাফেরার পূর্বাভাস দেয়।

pred = model.predict (np.array ())

move_code = np.argmax (pred [0]) move_name = mapper (move_code) print ("পূর্বাভাস: {}"। ফরম্যাট (move_name))

Test.py স্ক্রিপ্ট চালান বিভিন্ন টেস্ট ইমেজ সহ মডেলটি পরীক্ষা করতে।

python3 test.py

এখন মডেল হাতের অঙ্গভঙ্গি সনাক্ত করতে এবং বুঝতে প্রস্তুত।

ধাপ 8: রক-পেপার-কাঁচি খেলা

রক-পেপার-কাঁচি খেলা
রক-পেপার-কাঁচি খেলা

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

cap = cv2. VideoCapture (0) # ক্যামেরা থেকে ছবি ক্যাপচার করতে

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

python3 play.py

ধাপ 9: Servo মোটর ইন্টিগ্রেশন?

অবশেষে, এই প্রকল্পে servo মোটর যোগ করুন। Servo মোটর হল Raspberry Pi এর GPIO পিন 17, যার ঘূর্ণন কোণ নিয়ন্ত্রণ করার জন্য PWM ফাংশন আছে।

এই প্রকল্পে ব্যবহৃত Servo মোটর SG-90। এটি ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার বিপরীতে 180 to পর্যন্ত ঘূর্ণন করতে পারে

সংযোগগুলি নিম্নরূপ দেওয়া হয়েছে।

সার্ভো মোটর - রাস্পবেরি পাই

Vcc - +5V

GND - GND

সংকেত - GPIO17

এই প্রকল্পে লাইব্রেরি যেমন RPi. GPIO এবং সময় ব্যবহার করা হয়।

RPi. GPIO GPIO হিসাবে আমদানি করুন

আমদানির সময়

GPIO পিন তারপর নিম্নলিখিত লাইন ব্যবহার করে PWM কনফিগার করা হয়

servoPIN = 17

GPIO.setmode (GPIO. BCM) GPIO.setup (servoPIN, GPIO. OUT)

GPIO পিন 17 50Hz এর ফ্রিকোয়েন্সি এ PWM হিসাবে ব্যবহার করার জন্য কনফিগার করা হয়েছে। PWM এর ডিউটি সাইকেল (টন ও টফ) সেট করে সার্ভো মোটরের কোণ অর্জন করা হয়

কর্তব্য = কোণ/18 + 2

GPIO.output (servoPIN, True) p. ChangeDutyCycle (দায়িত্ব) time.sleep (1) GPIO.output (servoPIN, False) p. ChangeDutyCycle (0)

এটি প্রতিটি নাড়ির জন্য পছন্দসই ধাপ কোণ তৈরি করবে, যা ঘূর্ণনের পছন্দসই কোণ দেবে।

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

ধাপ 10: প্রকল্পের কাজ?

Image
Image

এবং এখন, এটি খেলার সময়। আসুন প্রকল্পের কাজ দেখি।

আপনি যদি এই প্রকল্পটি নির্মাণে কোন সমস্যার সম্মুখীন হন, তাহলে নির্দ্বিধায় আমাকে জিজ্ঞাসা করুন। অনুগ্রহ করে নতুন প্রকল্পগুলি প্রস্তাব করুন যা আপনি আমাকে পরবর্তী করতে চান।

যদি এটি সত্যিই আপনাকে সাহায্য করে এবং আকর্ষণীয় প্রকল্পগুলির জন্য আমার চ্যানেলটি অনুসরণ করে তবে একটি থাম্বস আপ দিন।:)

ভিডিওটি ভালো লাগলে শেয়ার করুন।

আপনি সাবস্ক্রাইব করতে পেরে খুশি:

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

ধাপ 11: কোড - প্রকল্প রেপো

কোডটি গিটহাব রিপোজিটরিতে যুক্ত করা হয়েছে যা কোড বিভাগে পাওয়া যাবে।

Rahul24-06/Rock-Paper-Scissors-https://github.com/Rahul24-06/Rock-Paper-Scissors

প্রস্তাবিত: