فهرست مطالب:

با ML طبقه بندی سطل زباله Pi بسازید!: 8 مرحله (همراه با تصاویر)
با ML طبقه بندی سطل زباله Pi بسازید!: 8 مرحله (همراه با تصاویر)

تصویری: با ML طبقه بندی سطل زباله Pi بسازید!: 8 مرحله (همراه با تصاویر)

تصویری: با ML طبقه بندی سطل زباله Pi بسازید!: 8 مرحله (همراه با تصاویر)
تصویری: باید از بین 100 دختر دانشگاه ، از روی سوراخشون، اونی که یه شب باهاش خوابیده  رو پیدا کنه😅😉 فیلم کمدی 2024, نوامبر
Anonim
با ML یک طبقه بندی سطل زباله Pi بسازید!
با ML یک طبقه بندی سطل زباله Pi بسازید!
با ML یک طبقه بندی سطل زباله Pi بسازید!
با ML یک طبقه بندی سطل زباله Pi بسازید!

پروژه طبقه بندی سطل زباله ، که با محبت به "کجا می رود ؟!" معروف است ، به گونه ای طراحی شده است که دور ریختن وسایل را سریعتر و قابل اطمینان تر کند.

این پروژه از یک مدل یادگیری ماشین (ML) استفاده می کند که در Lobe آموزش دیده است ، سازنده مدل ML برای مبتدیان (بدون کد!) ، برای شناسایی اینکه آیا یک شی در زباله ، بازیافت ، کمپوست یا زباله های خطرناک می رود یا خیر. سپس مدل بر روی رایانه Raspberry Pi 4 بارگذاری می شود تا در هر جایی که سطل زباله پیدا کنید قابل استفاده باشد!

این آموزش به شما می گوید چگونه می توانید پروژه Trash Classifier خود را در Raspberry Pi از مدل Lobe TensorFlow در Python3 ایجاد کنید.

مشکل: مبتدی ++ (برخی از دانش در مورد مدارات و کد نویسی مفید است)

زمان مطالعه: 5 دقیقه

زمان ساخت: 60 - 90 دقیقه

هزینه: 70 پوند (شامل Pi 4)

تدارکات:

نرم افزار (سمت کامپیوتر)

  • لوب
  • WinSCP (یا روش انتقال فایل SSH دیگر ، می تواند از CyberDuck برای Mac استفاده کند)
  • پایانه
  • اتصال Remote Desktop یا RealVNC

سخت افزار

  • رزبری پای ، کارت SD و منبع تغذیه USB-C (5 ولت ، 2.5 آمپر)
  • دوربین پی
  • دکمه فشاری
  • 5 LED (4 LED نشانگر و 1 LED وضعیت)

    • LED زرد: زباله
    • LED آبی: بازیافت
    • LED سبز: کمپوست
    • LED قرمز: زباله های خطرناک
    • LED سفید: وضعیت
  • 6 مقاومت 220 اهم
  • 10 سیم جهنده M-to-M
  • تخته نان ، نیم سایز

اگر لحیم کاری را انتخاب می کنید:

  • 1 اتصال JST ، فقط انتهای زن
  • 2 سیم بلوز M-to-F
  • 10 سیم جهنده F-to-F
  • PCB

محفظه

  • کیف پروژه (به عنوان مثال مقوا ، چوب یا جعبه پلاستیکی ، تقریباً 6 "x 5" x 4 ")
  • مربع پلاستیکی شفاف 0.5 "x 0.5" (2cm x 2cm)

    به عنوان مثال. از درب ظرف پلاستیکی مواد غذایی

  • Velcro

ابزارها

  • سیم بر، دم باریک
  • چاقوی دقیق (به عنوان مثال چاقوی دقیق) و حصیر برش
  • لحیم کاری (اختیاری)
  • ابزار ذوب داغ (یا چسب غیر رسانای دیگر-اپوکسی عالی عمل می کند اما دائمی است)

مرحله 1: قبل از شروع

قبل از اینکه شروع کنیم
قبل از اینکه شروع کنیم

این پروژه فرض می کند که شما با یک رزبری پای کاملاً راه اندازی شده در پیکربندی بدون سر شروع می کنید. در اینجا یک راهنمای دوستانه مبتدی در مورد نحوه انجام این کار وجود دارد.

همچنین داشتن اطلاعاتی در مورد موارد زیر کمک می کند:

  1. آشنایی با رزبری پای

    • در اینجا یک راهنمای مفید برای شروع است!
    • همچنین مفید است: شروع به کار با دوربین Pi
  2. خواندن و ویرایش کد پایتون (نیازی به نوشتن برنامه ندارید ، فقط ویرایش کنید)

    آشنایی با پایتون با رزبری پای

  3. خواندن نمودارهای سیم کشی Fritzing
  4. استفاده از تخته نان

    نحوه استفاده از آموزش تخته نان

پیدا کنید که زباله های شما به کجا می روند

هر شهر در سراسر ایالات متحده (و من تصور می کنم جهان) دارای زباله/بازیافت/کمپوست/و غیره است. سیستم جمع آوری این بدان معناست که برای ایجاد یک طبقه بندی دقیق سطل زباله ، ما باید 1) یک مدل ML سفارشی بسازیم (در مرحله بعد به این موضوع می پردازیم - بدون کد!) و 2) می دانیم که هر تکه زباله به کجا می رود.

از آنجا که من همیشه سطل مناسب برای هر موردی که برای آموزش مدل خود استفاده می کردم را نمی دانستم ، از برگه خدمات سیاتل (عکس 1) ، و همچنین این دستی "کجا می رود؟" ابزار جستجوی شهر سیاتل! با جستجوی ابزار جمع آوری زباله شهر خود و مطالعه وب سایت آن ، منابع موجود در شهر خود را بررسی کنید.

مرحله 2: ایجاد یک مدل ML سفارشی در Lobe

ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe
ایجاد یک مدل ML سفارشی در Lobe

لوب یک ابزار آسان برای استفاده است که همه چیز مورد نیاز برای زنده کردن ایده های یادگیری ماشین شما را در خود دارد. نمونه هایی از کارهایی را که می خواهید انجام دهید به آن نشان دهید ، و به طور خودکار یک مدل یادگیری ماشین سفارشی آموزش می دهد که می تواند برای دستگاه ها و برنامه های پیشرفته صادر شود. برای شروع به هیچ تجربه ای نیاز ندارد. می توانید به صورت رایگان روی رایانه خود تمرین کنید!

در اینجا یک مرور سریع در مورد نحوه استفاده از Lobe آورده شده است:

1. برنامه Lobe را باز کرده و یک پروژه جدید ایجاد کنید.

2. عکس بگیرید یا وارد کنید و آنها را در دسته های مناسب برچسب گذاری کنید. (عکس 1) بعداً در قسمت نرم افزاری پروژه به این برچسب ها نیاز خواهیم داشت.

دو روش برای وارد کردن عکس وجود دارد:

  1. از مواردی که مستقیماً از وب کم رایانه خود استفاده می کنید عکس بگیرید ، یا
  2. عکس ها را از پوشه های موجود در رایانه خود وارد کنید.

    به خاطر داشته باشید که نام پوشه عکس به عنوان نام برچسب دسته استفاده می شود ، بنابراین مطمئن شوید که با برچسب های موجود مطابقت دارد

علاوه بر این: من از هر دو روش استفاده کردم ، زیرا هرچه تعداد عکس های شما بیشتر باشد ، مدل شما دقیق تر است.

3. از ویژگی "Play" برای آزمایش دقت مدل استفاده کنید. فواصل ، نور ، موقعیت دست و غیره را تغییر دهید تا مشخص شود مدل کجاست و دقیق نیست. در صورت لزوم عکس های بیشتری اضافه کنید. (عکسهای 3 - 4)

4. وقتی آماده شدید ، مدل Lobe ML خود را در قالب TensorFlow (TF) Lite صادر کنید.

نکات:

  • قبل از وارد کردن عکس ها ، لیستی از همه دسته های مورد نیاز و نحوه برچسب گذاری آنها (مانند "زباله" ، "بازیافت" ، "کمپوست" و غیره) تهیه کنید.

    توجه: از همان برچسب هایی که در عکس "Lobe Model Labels" در بالا نشان داده شده استفاده کنید تا میزان کد مورد نیاز برای تغییر را کاهش دهید

  • شامل دسته ای برای "سطل زباله نباشید" است که دارای عکسهایی از عکسهای دیگر است (به عنوان مثال دستها و بازوهای شما ، پس زمینه و غیره)
  • در صورت امکان ، از دوربین Pi عکس بگیرید و به Lobe وارد کنید. این کار دقت مدل شما را تا حد زیادی بهبود می بخشد!
  • به عکس های بیشتری نیاز دارید؟ مجموعه داده های منبع باز را در Kaggle ، از جمله این مجموعه تصویر طبقه بندی زباله ، بررسی کنید!
  • به کمک بیشتری نیاز دارید؟ در Reddit با Loob Coommunity ارتباط برقرار کنید!

مرحله 3: ساخت آن: سخت افزار

ساخت آن: سخت افزار!
ساخت آن: سخت افزار!
ساخت آن: سخت افزار!
ساخت آن: سخت افزار!
ساخت آن: سخت افزار!
ساخت آن: سخت افزار!

1. دوربین Pi را با دقت به Pi وصل کنید (برای اطلاعات بیشتر از راهنمای شروع به بنیاد Pi مراجعه کنید). (عکس 1)

2. برای اتصال دکمه فشاری و LED ها به پایه های Pi GPIO نمودار سیم کشی را دنبال کنید.

  • دکمه فشار: یک پا از دکمه فشاری را به پین GPIO وصل کنید. 2. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.
  • LED زرد: پای مثبت (بلندتر) را به پین GPIO وصل کنید. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.
  • LED آبی: پایه مثبت را به پایه GPIO 27 وصل کنید. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.
  • LED سبز: پایه مثبت را به پایه GPIO 22 وصل کنید. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.
  • LED قرمز: پایه مثبت را به پایه GPIO 23 وصل کنید. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.
  • LED سفید: پایه مثبت را به پایه GPIO 24 وصل کنید. پای دیگر را از طریق مقاومت به پین GPIO GND وصل کنید.

3. توصیه می شود قبل از لحیم کاری یا دائمی شدن اتصالات ، مدار خود را روی تخته نان آزمایش کرده و برنامه را اجرا کنید. برای انجام این کار ، ما باید برنامه نرم افزاری خود را بنویسیم و بارگذاری کنیم ، بنابراین بگذارید به مرحله بعدی برویم!

مرحله 4: کد آن: نرم افزار

کد آن: نرم افزار!
کد آن: نرم افزار!
کد آن: نرم افزار!
کد آن: نرم افزار!

1. در رایانه خود ، WinSCP را باز کرده و به Pi خود متصل شوید. یک پوشه Lobe در فهرست اصلی Pi خود ایجاد کرده و یک پوشه مدل در آن فهرست ایجاد کنید.

2. محتویات پوشه Lobe TF حاصل را روی Pi بکشید. مسیر فایل:/home/pi/Lobe/model را یادداشت کنید

3. در Pi ، یک ترمینال باز کنید و کتابخانه lobe-python را برای Python3 با اجرای دستورات bash زیر بارگیری کنید:

pip3 نصب

لوب نصب pip3

4. کد طبقه بندی سطل زباله (rpi_trash_classifier.py) را از این repo روی Pi بارگیری کنید (همانطور که در عکس 1 نشان داده شده است روی دکمه "Code" کلیک کنید).

  • ترجیح می دهید کپی/جایگذاری کنید؟ کد خام را از اینجا دریافت کنید.
  • ترجیح می دهید روی رایانه بارگیری کنید؟ repo/کد را روی رایانه خود بارگیری کنید و سپس کد پایتون را از طریق WinSCP (یا برنامه انتقال فایل از راه دور دلخواه خود) به Pi منتقل کنید.

5. هنگامی که سخت افزار را به پین های GPIO Pi متصل کردید ، کد نمونه را بخوانید و هرگونه مسیر فایل را در صورت نیاز به روز کنید:

  • خط 29: مسیر فایل به مدل Lobe TF
  • خطوط 47 و 83: مسیر فایل به تصاویر گرفته شده از طریق دوربین Pi

6. در صورت لزوم ، برچسب های مدل را در کد به روز کنید تا دقیقاً با برچسب های مدل Lobe شما مطابقت داشته باشد (شامل بزرگنمایی ، علائم نگارشی و غیره):

  • خط 57: "زباله"
  • خط 60: "بازیافت"
  • خط 63: "کمپوست"
  • خط 66: "تاسیسات زباله های خطرناک"
  • خط 69: "آشغال نیست!"

7. برنامه را با استفاده از Python3 در پنجره ترمینال اجرا کنید:

python3 rpi_trash_classifier.py

مرحله 5: آزمایش کنید: برنامه را اجرا کنید

تست کنید: برنامه را اجرا کنید!
تست کنید: برنامه را اجرا کنید!
تست کنید: برنامه را اجرا کنید!
تست کنید: برنامه را اجرا کنید!
تست کنید: برنامه را اجرا کنید!
تست کنید: برنامه را اجرا کنید!

مروری بر برنامه

هنگامی که برای اولین بار برنامه را اجرا می کنید ، بارگیری کتابخانه TensorFlow و مدل Lobe ML کمی طول می کشد. هنگامی که برنامه برای ثبت تصویر آماده است ، چراغ وضعیت (LED سفید) پالس می کند.

پس از گرفتن عکس ، برنامه تصویر را با مدل Lobe ML مقایسه می کند و پیش بینی حاصله را نشان می دهد (خط 83). خروجی تعیین می کند که چراغ روشن شود: زرد (زباله) ، آبی (بازیافت) ، سبز (کمپوست) یا قرمز (زباله های خطرناک).

اگر هیچ یک از LED های نشانگر روشن نشد و LED وضعیت به حالت پالس بازگشت ، به این معنی است که تصویر گرفته شده "سطل زباله نیست" ، به عبارت دیگر ، عکس را دوباره بگیرید!

ضبط یک تصویر

برای گرفتن تصویر ، دکمه فشاری را فشار دهید. توجه داشته باشید که برای ثبت مطبوعات ممکن است لازم باشد دکمه فشاری را حداقل 1 ثانیه نگه دارید. توصیه می شود برخی از تصاویر آزمایشی را بگیرید ، سپس آنها را روی دسکتاپ باز کنید تا نمای دوربین و فریم را بهتر درک کنید.

برای اینکه زمان کاربر برای موقعیت یابی شی و تنظیم سطوح نور دوربین ، حدود 5 ثانیه طول می کشد تا یک تصویر کامل ثبت شود. ممکن است این تنظیمات را در کد (خطوط 35 و 41) تغییر دهید ، اما به خاطر داشته باشید بنیاد Pi حداقل 2 ثانیه را برای تنظیم سطح نور توصیه می کند.

عیب یابی

بزرگترین چالش این است که اطمینان حاصل کنید که تصویر گرفته شده همان چیزی است که ما انتظار داریم ، بنابراین کمی وقت بگذارید تا تصاویر را مرور کرده و نتایج مورد انتظار را با خروجی LED نشانگر مقایسه کنید. در صورت لزوم ، می توانید تصاویر را برای استنباط مستقیم و مقایسه سریعتر به مدل Lobe ML منتقل کنید.

چند نکته قابل توجه:

  • کتابخانه TensorFlow احتمالاً برخی از پیام های هشدار دهنده را ارسال می کند - این معمولی برای نسخه مورد استفاده در این نمونه کد است.
  • برچسب های پیش بینی باید دقیقاً همانطور که در تابع led_select () نوشته شده باشد ، شامل حروف بزرگ ، نقطه گذاری و فاصله باشد. اگر مدل Lobe متفاوتی دارید ، حتماً آنها را تغییر دهید.
  • Pi نیاز به منبع تغذیه ثابت دارد. چراغ قدرت Pi باید روشن و قرمز کامل باشد.
  • اگر یک یا چند LED در مواقع مورد نیاز روشن نمی شوند ، آنها را با استفاده از دستور زیر مجبور کنید:

red_led.on ()

مرحله 6: (اختیاری) بسازید: مدار خود را نهایی کنید

(اختیاری) بسازید: مدار خود را نهایی کنید!
(اختیاری) بسازید: مدار خود را نهایی کنید!
(اختیاری) بسازید: مدار خود را نهایی کنید!
(اختیاری) بسازید: مدار خود را نهایی کنید!
(اختیاری) بسازید: مدار خود را نهایی کنید!
(اختیاری) بسازید: مدار خود را نهایی کنید!

اکنون که پروژه خود را آزمایش کرده و در صورت لزوم اشکال زدایی کرده ایم ، به گونه ای که انتظار می رود ، آماده ایم که مدار خود را لحیم کنیم!

توجه: اگر آهن لحیم کاری ندارید ، می توانید این مرحله را رد کنید. یک جایگزین این است که اتصالات سیم را با چسب حرارتی بپوشانید (این گزینه به شما امکان می دهد بعداً مواردی را تعمیر/اضافه کنید/استفاده کنید ، اما احتمال شکستن آنها بیشتر است) ، یا از اپوکسی یا چسب دائمی مشابه استفاده کنید (این گزینه دوام بیشتری خواهد داشت. اما بعد از انجام این کار نمی توانید از مدار یا احتمالاً Pi استفاده کنید)

نظر سریع در مورد انتخاب های طراحی من (عکس 1):

  • من سیم های بلوز زن را برای LED ها و Pi GPIO انتخاب کردم زیرا به من امکان می دهند LED ها را حذف کرده و رنگها را عوض کنم یا در صورت نیاز آنها را جابجا کنم. اگر می خواهید اتصالات دائمی شوند ، می توانید از این موارد صرف نظر کنید.
  • به همین ترتیب ، من یک کانکتور JST را برای دکمه فشار انتخاب کردم.

پیش به سوی ساختمان

1. هر یک از سیم های بلوز زن را از وسط نصف کنید (بله ، همه آنها!). با استفاده از نوارهای سیم ، حدود 1/4 اینچ (1/2 سانتی متر) عایق سیم را بردارید.

2. برای هر یک از LED ها ، یک مقاومت 220Ω را به پایه منفی (کوتاهتر) لحیم کنید. (عکس 2)

3. یک قطعه کوچک ، حدود 1 اینچ (2 سانتیمتر) لوله کوچک کننده حرارتی را بریده و LED و اتصال مقاومت را فشار دهید. اطمینان حاصل کنید که پای دیگر مقاومت در دسترس است ، سپس لوله جمع کننده را گرم کنید تا اتصال آن محکم شود. (عکس 3)

4. هر LED را در یک جفت سیم جهنده زن وارد کنید. (عکس 4)

5. سیمهای بلوز (به عنوان مثال با نوار) را برچسب بزنید ، سپس سیمهای بلوز را روی برد مدار چاپی (PCB) خود بچسبانید. (عکس 5)

6. بعد ، از یک سیم بلوز زن (قطع) برای اتصال هر LED به پین Pi GPIO مربوطه استفاده کنید. یک سیم جامپر را لحیم و برچسب گذاری کنید تا فلز برهنه از طریق PCB به پایه LED مثبت متصل شود. (عکس 5)

توجه: جایی که این سیم را لحیم می کنید بستگی به طرح PCB شما دارد. همچنین می توانید این سیم را مستقیماً به سیم بلوز LED مثبت لحیم کنید.

7. یک مقاومت 220Ω را به انتهای منفی (سیاه) اتصال JST لحیم کنید. (عکس 6)

8. اتصال JST و مقاومت را به دکمه فشار دهید. (عکس 6)

9. سیمهای بلوز M-to-F را بین کانکتور دکمه فشاری و پایه های GPIO وصل کنید (یادآوری: رنگ مشکی GND است).

10. اتصال PCB را با چسب داغ یا اپوکسی برای اتصال ایمن تر بپوشانید.

توجه: اگر از اپوکسی استفاده می کنید ، ممکن است در آینده نتوانید از پین های GPIO Pi برای پروژه های دیگر استفاده کنید. اگر نگران این موضوع هستید ، یک کابل روبان GPIO را اضافه کنید و به جای آن سیم های بلوز را به آن وصل کنید.

مرحله 7: (اختیاری) آن را بسازید: مورد

(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!
(اختیاری) بسازید: مورد!

محفظه ای برای Pi خود ایجاد کنید که دوربین ، دکمه فشاری و LED ها را در جای خود نگه دارد در حالی که از Pi محافظت می کند. برای ساخت نمونه اولیه محفظه مقوایی ، محفظه خود را طراحی کنید یا دستورالعمل های زیر را دنبال کنید!

  1. در بالای جعبه مقوایی کوچک ، مکان های دکمه فشاری ، چراغ وضعیت ، چراغ های شناسه و پنجره دوربین pi را مشخص کنید (عکس 1).

    توجه: پنجره دوربین Pi باید حدود 3/4 اینچ 1/ 1/2 اینچ باشد

  2. با استفاده از چاقوی دقیق خود ، آثار را برش دهید.

    توجه: ممکن است بخواهید اندازه ها را هنگام حرکت آزمایش کنید (عکس 1)

  3. اختیاری: قاب را رنگ کنید! من رنگ اسپری رو انتخاب کردم:)
  4. یک قاب "پنجره" مستطیلی برای دوربین Pi (عکس 4) برش دهید و داخل جعبه را بچسبانید
  5. در نهایت ، شکاف کابل برق Pi را قطع کنید.

    توصیه می شود ابتدا همه لوازم الکترونیکی را نصب کنید تا بهترین مکان را برای شکاف کابل برق pi پیدا کنید

مرحله 8: نصب و استقرار

نصب و استقرار!
نصب و استقرار!

خودشه! شما آماده نصب و استقرار پروژه خود هستید! محفظه را بالای سطل های زباله خود قرار دهید ، Pi را وصل کنید و برنامه را اجرا کنید تا راهی سریعتر و مطمئن تر برای کاهش ضایعات ما بدست آورید. بله!

پیش رفتن

  • پروژه ها و ایده های خود را از طریق جامعه Lobe Reddit با سایر افراد به اشتراک بگذارید!
  • برای نمای کلی در مورد نحوه استفاده از پایتون برای استقرار طیف وسیع تری از پروژه های Lobe ، به repo Lobe Python GitHub مراجعه کنید.
  • سوال یا درخواست پروژه؟ در مورد این پروژه نظر دهید یا مستقیماً با ما تماس بگیرید: [email protected]

توصیه شده: