সুচিপত্র:

K210 বোর্ড এবং Arduino IDE/Micropython- এর সাথে চিত্র স্বীকৃতি: 6 টি ধাপ (ছবি সহ)
K210 বোর্ড এবং Arduino IDE/Micropython- এর সাথে চিত্র স্বীকৃতি: 6 টি ধাপ (ছবি সহ)

ভিডিও: K210 বোর্ড এবং Arduino IDE/Micropython- এর সাথে চিত্র স্বীকৃতি: 6 টি ধাপ (ছবি সহ)

ভিডিও: K210 বোর্ড এবং Arduino IDE/Micropython- এর সাথে চিত্র স্বীকৃতি: 6 টি ধাপ (ছবি সহ)
ভিডিও: ESP32 Turorial 1 - Introduction to SunFounder's ESP32 IoT Learnig kit Software and Arduino IDE 2024, জুন
Anonim
Image
Image

আমি ইতিমধ্যে Sipeed Maix বিটে OpenMV ডেমো কিভাবে চালাতে হয় তার উপর একটি নিবন্ধ লিখেছি এবং এই বোর্ডের সাথে অবজেক্ট ডিটেকশন ডেমোর একটি ভিডিওও করেছি। মানুষ জিজ্ঞাসা করা অনেক প্রশ্নের মধ্যে একটি হল - আমি কীভাবে এমন একটি বস্তুকে চিনতে পারি যার জন্য নিউরাল নেটওয়ার্ক প্রশিক্ষিত নয়? অন্য কথায় কিভাবে আপনার নিজের ইমেজ ক্লাসিফায়ার তৈরি করবেন এবং হার্ডওয়্যার এক্সিলারেশন দিয়ে এটি চালাবেন।

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

আমি তোমাকে পেয়েছি! এই প্রবন্ধে আমি আপনাকে শেখাবো কিভাবে কেরাসে ট্রান্সফার লার্নিং দিয়ে আপনার নিজস্ব কাস্টম ইমেজ ক্লাসিফায়ার তৈরি করতে হবে, প্রশিক্ষিত মডেলটিকে.kmodel ফরম্যাটে রূপান্তর করতে হবে এবং মাইক্রোপিথন ব্যবহার করে Sipeed বোর্ডে (যেকোনো বোর্ড, বিট/ডক বা গো হতে পারে) চালাতে হবে। Arduino IDE। এবং এই জ্ঞান দিয়ে আপনি যে কাজগুলি করতে পারেন তার সীমা কেবল আপনার কল্পনাশক্তিই হবে।

আপডেট মে ২০২০: K210 বোর্ডের সাথে ইমেজ রিকগনিশনে আমার আর্টিকেল এবং ভিডিও কিভাবে এখনও খুব জনপ্রিয় এবং ইউটিউব এবং গুগলের শীর্ষ ফলাফলের মধ্যে, তা দেখে আমি axeleRate, কেরাস-ভিত্তিক ফ্রেমওয়ার্ক এআই এর জন্য তথ্য অন্তর্ভুক্ত করার জন্য নিবন্ধটি আপডেট করার সিদ্ধান্ত নিয়েছি। প্রান্ত আমি বিকাশ।

aXeleRate, মূলত, স্ক্রিপ্ট সংগ্রহ থেকে আমি ইমেজ স্বীকৃতি/বস্তু সনাক্তকরণ মডেল প্রশিক্ষণের জন্য ব্যবহার করা হয় - একটি একক কাঠামোর মধ্যে মিলিত এবং Google Colab- এ কর্মপ্রবাহের জন্য অপ্টিমাইজ করা। এটি ব্যবহার করা আরও সুবিধাজনক এবং আরও আপ টু ডেট।

নিবন্ধের পুরানো সংস্করণের জন্য, আপনি এটি এখনও steemit.com এ দেখতে পারেন।

ধাপ 1: সিএনএন এবং ট্রান্সফার লার্নিং: কিছু তত্ত্ব

সিএনএন এবং ট্রান্সফার লার্নিং: কিছু তত্ত্ব
সিএনএন এবং ট্রান্সফার লার্নিং: কিছু তত্ত্ব

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

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

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

অসাধারণ লাগছে, তাই না? আসুন দেখি কিভাবে এটি বাস্তবায়ন করা যায়।

পদক্ষেপ 2: আপনার পরিবেশ প্রস্তুত করুন

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

এক্সেলরেট ব্যবহার করার দুটি উপায় হল: উবুন্টু মেশিনে বা গুগল কোলাবে স্থানীয়ভাবে চালানো। গুগল কোলাবে চলার জন্য, এই উদাহরণটি দেখুন:

ছবির শ্রেণিবিন্যাস কোলাব নোটবুক

আপনার মডেলটিকে স্থানীয়ভাবে প্রশিক্ষণ দেওয়া এবং হার্ডওয়্যার এক্সিলারেশনের সাথে এটি ব্যবহার করা রপ্তানি করা এখন অনেক সহজ।

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

মিনিকোন্ডা ইনস্টল করে শুরু করা যাক, যা পাইথনের পরিবেশ ব্যবস্থাপক। আমরা বিচ্ছিন্ন পরিবেশ তৈরি করব, তাই আমরা দুর্ঘটনাক্রমে আপনার সিস্টেম পাইথন পরিবেশে কিছু পরিবর্তন করব না।

ইনস্টলারটি এখান থেকে ডাউনলোড করুন

ইনস্টলেশন সম্পন্ন হওয়ার পরে, একটি নতুন পরিবেশ তৈরি করুন:

conda create -n ml python = 3.7

আসুন নতুন পরিবেশ সক্রিয় করি

conda সক্রিয় এমএল

আপনার ব্যাশ শেলের আগে একটি উপসর্গ পরিবেশের নামের সাথে উপস্থিত হবে, যা নির্দেশ করে যে আপনি এখন সেই পরিবেশে কাজ করছেন।

ধাপ 3: এক্সেলরেট ইনস্টল করুন এবং টেস্ট চালান

AXeleRate ইনস্টল করুন এবং টেস্ট চালান
AXeleRate ইনস্টল করুন এবং টেস্ট চালান

আপনার স্থানীয় মেশিনে aXeleRate ইনস্টল করুন

pip install git+https://github.com/AIWintermuteAI/aXeleRate

উদাহরণ চালানোর জন্য ডাউনলোড করুন:

গিট ক্লোন

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

ধাপ 4: মডেলটিকে পুনরায় প্রশিক্ষণ দিন, কেরাস মডেলকে.kmodel এ রূপান্তর করুন

মডেলটিকে পুনরায় প্রশিক্ষণ দিন, কেরাস মডেলকে.kmodel এ রূপান্তর করুন
মডেলটিকে পুনরায় প্রশিক্ষণ দিন, কেরাস মডেলকে.kmodel এ রূপান্তর করুন

এই খেলনার উদাহরণের জন্য আমরা মডেলটিকে সান্তা ক্লজ এবং আরডুইনো উনোকে চিনতে প্রশিক্ষণ দেব। স্পষ্টতই আপনি অন্যান্য ক্লাস বেছে নিতে পারেন। এখান থেকে ডেটাসেট ডাউনলোড করুন। কনফিগ ফোল্ডারে classifier.json ফাইলের একটি অনুলিপি তৈরি করুন, তারপর স্ক্রিনশটে কনফিগ ফাইলের মতো এটি পরিবর্তন করুন - প্রশিক্ষণ এবং যাচাইকরণ ফোল্ডারগুলির পথ সঠিক কিনা তা নিশ্চিত করুন!

AXeleRate ফোল্ডার থেকে নিম্নলিখিত কমান্ডটি চালান:

python axelerate/train.py - c configs/santa_uno.json

প্রশিক্ষণ শুরু হবে। যদি বৈধতা নির্ভুলতা (আমাদের বৈধতা মেট্রিক) 20 যুগের জন্য উন্নত না হয়, তাহলে প্রশিক্ষণ অকালে বন্ধ হয়ে যাবে। প্রতিবার যাচাইয়ের নির্ভুলতা উন্নত হলে, মডেলটি প্রকল্প ফোল্ডারে সংরক্ষণ করা হয়। প্রশিক্ষণ শেষ হওয়ার পর, axeleRate স্বয়ংক্রিয়ভাবে সেরা মডেলটিকে নির্দিষ্ট বিন্যাসে রূপান্তরিত করে - আপনি এখন থেকে "tflite", "k210" বা "edgetpu" নির্বাচন করতে পারেন।

ধাপ 5: Sipeed Maix বিটে মডেল চালান

Sipeed Maix বিটে মডেল চালান
Sipeed Maix বিটে মডেল চালান
Sipeed Maix বিটে মডেল চালান
Sipeed Maix বিটে মডেল চালান
Sipeed Maix বিটে মডেল চালান
Sipeed Maix বিটে মডেল চালান

আপনার এখন Sipeed Maix হার্ডওয়্যারে মডেলটি চালানোর দুটি উপায় আছে: মাইক্রোপাইথন ফার্মওয়্যার এবং Arduino IDE। মাইক্রোপাইথন হার্ডওয়্যার ব্যবহার করা সহজ, কিন্তু এটি উপলব্ধ মেমরির উল্লেখযোগ্য অংশ দখল করে, তাই মডেলের জন্য কম জায়গা বাকি আছে। Arduino IDE মূলত C কোড, যা অনেক বেশি দক্ষ এবং ছোট মেমরির পদচিহ্ন রয়েছে। আমার মডেল মাত্র 1.9Mb, তাই উভয় বিকল্পই এর জন্য কাজ করে। আপনি মাইক্রোপিথন দিয়ে 2.9 এমবি পর্যন্ত বড় মডেল ব্যবহার করতে পারেন, আরডুইনো আইডিই ব্যবহার করার জন্য আপনাকে যে কোনও বড় জিনিস বিবেচনা করতে হবে।

এখান থেকে OpenMV IDE এবং এখান থেকে ন্যূনতম মাইক্রোপিথন ফার্মওয়্যার ডাউনলোড করুন।

Kflash_gui টুল দিয়ে ফার্মওয়্যার বার্ন করুন। স্ক্রিনশটে দেখানো হিসাবে আপনি প্রশিক্ষিত মডেলটিকেও ফ্ল্যাশ করতে পারেন। অথবা এটি এসডি কার্ডে কপি করুন (সেক্ষেত্রে একটি এসডি কার্ডের রুট.kmodel কপি করুন এবং Sipeed Maix Bit এ SD কার্ড)োকান)

OpenMV IDE খুলুন এবং সংযোগ বোতাম টিপুন। Example_scripts ফোল্ডার থেকে santa_uno.py স্ক্রিপ্ট খুলুন এবং স্টার্ট বোতাম টিপুন। আপনার ক্যামেরা থেকে একটি লাইভ স্ট্রিম দেখা উচিত এবং যদি আপনি সিরিয়াল টার্মিনাল খুলেন তবে আপনি আত্মবিশ্বাসের স্কোরের সাথে শীর্ষ চিত্র স্বীকৃতির ফলাফল পাবেন!

Arduino IDE ব্যবহার করার জন্য, প্রথমে আপনাকে Arduino IDE তে Sipeed বোর্ড যুক্ত করার পদ্ধতি অনুসরণ করতে হবে, যা এখানে নথিভুক্ত করা হয়েছে। আপনার Arduino IDE সংস্করণটি কমপক্ষে 1.8.12 হতে হবে। আপনি বোর্ড যুক্ত করার পর, mobilenet_v1_transfer_learning.ino স্কেচ খুলুন এবং এটি Sipeed Maix বিটে আপলোড করুন। এসডি কার্ডে মডেলের নাম পরিবর্তন করে "মডেল" করুন (অথবা এই নামের সাথে একটি কপি করুন)। আপনি names.cpp এ লেবেলের নাম পরিবর্তন করতে পারেন। এটি শীর্ষ চিত্র স্বীকৃতির ফলাফলের সাথে Sipeed Maix স্ক্রিনে লাইভ ক্যামেরা স্ট্রিম দেখাবে।

ধাপ 6: উপসংহার

সিএনএন এবং ট্রান্সফার লার্নিং বিষয়ে পড়ার জন্য এখানে আরও কিছু উপকরণ রয়েছে:

মোবাইলনেট এবং কেরাস ব্যবহার করে ট্রান্সফার লার্নিং ট্রান্সফার লার্নিং এর একটি দুর্দান্ত ব্যাখ্যা, এই টিউটোরিয়ালটি সেই নিবন্ধের কোডের একটি পরিবর্তিত সংস্করণ ব্যবহার করে।

বিড়াল এবং কুকুর এবং কনভোলিউশনাল নিউরাল নেটওয়ার্কগুলি সিএনএন -এর পিছনে মূল বিষয়গুলি ব্যাখ্যা করে এবং কিছু ফিল্টার কল্পনা করে। বিড়ালের সাথে!

ট্রেন, রূপান্তর, Sipeed MaixPy এবং MaixDuino এ MobileNet চালান! Siped টিমের একটি টিউটোরিয়াল কিভাবে স্ক্র্যাচ থেকে মোবাইলনেট 1000 ক্লাস প্রশিক্ষণ দেওয়া যায় (কোন ট্রান্সফার লার্নিং নেই)। আপনি তাদের প্রাক প্রশিক্ষিত মডেলটি ডাউনলোড করে দেখতে পারেন!

আশা করি আপনি এখন আপনার জ্ঞানকে কাজে লাগিয়ে মেশিন ভিশনের সাথে কিছু অসাধারণ প্রকল্প তৈরি করতে পারবেন! আপনি এখানে Sipeed বোর্ড কিনতে পারেন, এগুলি এমবেডেড সিস্টেমে ML এর জন্য উপলব্ধ সবচেয়ে সস্তা বিকল্পগুলির মধ্যে একটি।

প্রস্তাবিত: