Mục lục:
- Bước 1: Trước khi bắt đầu
- Bước 2: Tạo Mô hình ML tùy chỉnh trong Lobe
- Bước 3: Xây dựng nó: Phần cứng
- Bước 4: Viết mã: Phần mềm
- Bước 5: Kiểm tra nó: Chạy chương trình
- Bước 6: (Tùy chọn) Xây dựng nó: Hoàn thiện mạch của bạn
- Bước 7: (Tùy chọn) Xây dựng nó: Hộp đựng
- Bước 8: Cài đặt và triển khai
Video: Tạo máy phân loại thùng rác Pi với ML !: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Dự án Trash Classifier, được gọi một cách trìu mến là "Nó sẽ đi đâu ?!", được thiết kế để giúp việc vứt bỏ mọi thứ nhanh hơn và đáng tin cậy hơn.
Dự án này sử dụng mô hình Học máy (ML) được đào tạo trong Lobe, một trình xây dựng mô hình ML thân thiện với người mới bắt đầu (không cần mã!), Để xác định xem một đối tượng có đi vào thùng rác, tái chế, phân trộn hay chất thải nguy hại hay không. Sau đó, mô hình được tải vào máy tính Raspberry Pi 4 để giúp nó có thể sử dụng được ở bất cứ nơi nào bạn có thể tìm thấy thùng rác!
Hướng dẫn này sẽ hướng dẫn bạn cách tạo dự án Bộ phân loại thùng rác của riêng bạn trên Raspberry Pi từ mô hình Lobe TensorFlow trong Python3.
Độ khó: Người mới bắt đầu ++ (một số kiến thức về mạch và mã rất hữu ích)
Thời gian đọc: 5 phút
Thời gian xây dựng: 60 - 90 phút
Chi phí: ~ $ 70 (bao gồm Pi 4)
Quân nhu:
Phần mềm (phía PC)
- Thùy
- WinSCP (hoặc phương thức truyền tệp SSH khác, có thể sử dụng CyberDuck cho Mac)
- Phần cuối
- Kết nối Máy tính Từ xa hoặc RealVNC
Phần cứng
- Nguồn cung cấp Raspberry Pi, Thẻ SD và USB-C (5V, 2.5A)
- Máy ảnh Pi
- Nút bấm
-
5 đèn LED (4 đèn LED báo và 1 đèn LED trạng thái)
- Đèn LED vàng: rác
- Đèn LED xanh lam: tái chế
- Đèn LED màu xanh lá cây: phân trộn
- Đèn LED đỏ: chất thải nguy hại
- Đèn LED trắng: trạng thái
- 6 điện trở 220 Ohm
- 10 dây jumper M-to-M
- Breadboard, một nửa kích thước
Nếu bạn chọn hàn:
- 1 đầu nối JST, chỉ dành cho đầu cái
- 2 dây nhảy M-to-F
- 10 dây jumper F-to-F
- PCB
Bao vây
- Hộp dự án (ví dụ: hộp bìa cứng, gỗ hoặc nhựa, khoảng 6 "x 5" x 4 ")
-
Hình vuông bằng nhựa trong suốt 0,5 "x 0,5" (2cm x 2cm)
Ví dụ. từ nắp hộp nhựa đựng thực phẩm
- khóa dán
Công cụ
- Máy cắt dây
- Dao chính xác (ví dụ như dao chính xác) và thảm cắt
- Sắt hàn (tùy chọn)
- Dụng cụ làm nóng chảy (hoặc keo không dẫn điện khác - epoxy hoạt động tốt nhưng là vĩnh viễn)
Bước 1: Trước khi bắt đầu
Dự án này giả định rằng bạn đang bắt đầu với một Raspberry Pi được thiết lập đầy đủ ở một cấu hình không có đầu. Đây là hướng dẫn thân thiện với người mới bắt đầu về cách thực hiện việc này.
Nó cũng giúp bạn có một số kiến thức về những điều sau:
-
Làm quen với Raspberry Pi
- Đây là hướng dẫn bắt đầu hữu ích!
- Cũng hữu ích: Bắt đầu với máy ảnh Pi
-
Đọc và chỉnh sửa mã Python (bạn sẽ không cần viết chương trình, chỉ cần chỉnh sửa)
Giới thiệu về Python với Raspberry Pi
- Đọc sơ đồ hệ thống dây điện
-
Sử dụng breadboard
Cách sử dụng hướng dẫn breadboard
Tìm xem thùng rác của bạn đi đâu
Mỗi thành phố trên khắp nước Mỹ (và tôi cho rằng trên toàn cầu) đều có rác / tái chế / phân trộn / vv của riêng mình. hệ thống thu gom. Điều này có nghĩa là để tạo một bộ phân loại thùng rác chính xác, chúng tôi sẽ cần 1) xây dựng mô hình ML tùy chỉnh (chúng tôi sẽ đề cập đến vấn đề này trong bước tiếp theo - không cần mã!) Và 2) biết từng loại thùng rác đi đâu.
Vì không phải lúc nào tôi cũng biết thùng phù hợp cho từng vật dụng mà tôi dùng để huấn luyện người mẫu của mình, nên tôi đã sử dụng tờ bướm Seattle Utilities (Ảnh 1), và cũng tiện dụng này "Nó đi đâu?" công cụ tra cứu cho thành phố Seattle! Kiểm tra những tài nguyên nào có sẵn trong thành phố của bạn bằng cách tra cứu tiện ích thu gom rác của thành phố và xem qua trang web của nó.
Bước 2: Tạo Mô hình ML tùy chỉnh trong Lobe
Lobe là một công cụ dễ sử dụng có mọi thứ bạn cần để biến các ý tưởng học máy của bạn thành hiện thực. Hiển thị cho nó các ví dụ về những gì bạn muốn nó làm và nó tự động đào tạo một mô hình học máy tùy chỉnh có thể được xuất cho các thiết bị và ứng dụng tiên tiến. Nó không yêu cầu bất kỳ kinh nghiệm nào để bắt đầu. Bạn có thể đào tạo trên máy tính của riêng bạn miễn phí!
Dưới đây là tổng quan nhanh về cách sử dụng Lobe:
1. Mở chương trình Lobe và tạo một dự án mới.
2. Chụp hoặc nhập ảnh và dán nhãn vào các danh mục thích hợp. (Ảnh 1) Chúng ta sẽ cần những nhãn này sau này trong phần mềm của dự án.
Có hai cách để nhập ảnh:
- Chụp ảnh các mục trực tiếp từ webcam máy tính của bạn hoặc
-
Nhập ảnh từ các thư mục hiện có trên máy tính của bạn.
Hãy nhớ rằng tên thư mục ảnh sẽ được sử dụng làm tên nhãn danh mục, vì vậy hãy đảm bảo rằng nó khớp với các nhãn hiện có
Ngoài ra: Tôi đã kết thúc bằng cách sử dụng cả hai phương pháp, vì bạn càng có nhiều ảnh, mô hình của bạn càng chính xác.
3. Sử dụng tính năng "Chơi" để kiểm tra độ chính xác của mô hình. Thay đổi khoảng cách, ánh sáng, vị trí đặt tay, v.v. để xác định vị trí của mô hình ở đâu và không chính xác. Thêm nhiều ảnh nếu cần. (Ảnh 3 - 4)
4. Khi bạn đã sẵn sàng, hãy xuất mô hình Lobe ML của bạn ở định dạng TensorFlow (TF) Lite.
Lời khuyên:
-
Trước khi nhập ảnh, hãy lập danh sách tất cả các danh mục bạn cần và cách bạn muốn gắn nhãn chúng (ví dụ: "rác", "tái chế", "phân trộn", v.v.)
Lưu ý: Sử dụng các nhãn tương tự như được hiển thị trong ảnh "Nhãn Mô hình Lobe" ở trên để giảm số lượng mã bạn cần thay đổi
- Bao gồm một danh mục cho "không phải thùng rác" có ảnh của bất kỳ thứ gì khác có thể có trong ảnh (ví dụ: bàn tay và cánh tay của bạn, nền, v.v.)
- Nếu có thể, hãy chụp ảnh từ Pi Camera và nhập vào Lobe. Điều này sẽ cải thiện đáng kể độ chính xác của mô hình của bạn!
- Cần thêm ảnh? Kiểm tra bộ dữ liệu mã nguồn mở trên Kaggle, bao gồm cả bộ hình ảnh phân loại rác này!
- Cần sự giúp đỡ nhiều hơn? Kết nối với Lobe Coommunity trên Reddit!
Bước 3: Xây dựng nó: Phần cứng
1. Kết nối cẩn thận Máy ảnh Pi với Pi (truy cập Hướng dẫn bắt đầu sử dụng Pi Foundation để biết thêm thông tin). (Ảnh 1)
2. Làm theo sơ đồ đấu dây để kết nối nút bấm và đèn LED với các chân Pi GPIO.
- Nút bấm: Kết nối một chân của nút bấm với chân GPIO 2. Kết nối chân kia, thông qua một điện trở, với chân GPIO GND.
- Đèn LED màu vàng: Kết nối chân dương (dài hơn) với chân GPIO 17. Kết nối chân còn lại, thông qua một điện trở, với chân GPIO GND.
- Đèn LED màu xanh lam: Kết nối chân dương với chân GPIO 27. Kết nối chân còn lại, thông qua một điện trở, với chân GPIO GND.
- Đèn LED màu xanh lá cây: Kết nối chân dương với chân GPIO 22. Kết nối chân còn lại, thông qua một điện trở, với chân GPIO GND.
- Đèn LED màu đỏ: Kết nối chân dương với chân GPIO 23. Kết nối chân còn lại, thông qua một điện trở, với chân GPIO GND.
- Đèn LED trắng: Kết nối chân dương với chân GPIO 24. Kết nối chân còn lại, thông qua một điện trở, với chân GPIO GND.
3. Bạn nên kiểm tra mạch của mình trên breadboard và chạy chương trình trước khi hàn hoặc tạo bất kỳ kết nối nào vĩnh viễn. Để thực hiện việc này, chúng ta sẽ cần viết và tải lên chương trình phần mềm của mình, vì vậy chúng ta hãy chuyển sang bước tiếp theo!
Bước 4: Viết mã: Phần mềm
1. Trên PC, mở WinSCP và kết nối với Pi của bạn. Tạo một thư mục Lobe trong thư mục chính của Pi và tạo một thư mục mô hình trong thư mục đó.
2. Kéo nội dung thư mục Lobe TF kết quả vào Pi. Ghi lại đường dẫn tệp: / home / pi / Lobe / model
3. Trên Pi, mở một thiết bị đầu cuối và tải xuống thư viện lobe-python cho Python3 bằng cách chạy các lệnh bash sau:
pip3 install
pip3 cài đặt thùy
4. Tải xuống mã Bộ phân loại thùng rác (rpi_trash_classifier.py) từ kho này vào Pi (nhấp vào nút "Mã" như được hiển thị trong Ảnh 1).
- Thích sao chép / dán? Lấy mã thô ở đây.
- Thích tải xuống máy tính của bạn? Tải xuống repo / mã vào máy tính của bạn, sau đó chuyển mã Python sang Pi thông qua WinSCP (hoặc chương trình truyền tệp từ xa ưa thích của bạn).
5. Khi bạn đã kết nối phần cứng với các chân GPIO của Pi, hãy đọc qua mã ví dụ và cập nhật bất kỳ đường dẫn tệp nào nếu cần:
- Dòng 29: đường dẫn tệp đến mô hình Lobe TF
- Dòng 47 và 83: đường dẫn tệp để chụp ảnh qua Pi Camera
6. Nếu cần, hãy cập nhật các nhãn mô hình trong mã để khớp chính xác với các nhãn trong mô hình Lobe của bạn (bao gồm viết hoa, dấu câu, v.v.):
- Dòng 57: "rác"
- Dòng 60: "tái chế"
- Dòng 63: "phân trộn"
- Dòng 66: "cơ sở chất thải nguy hại"
- Dòng 69: "không phải thùng rác!"
7. Chạy chương trình bằng Python3 trong cửa sổ đầu cuối:
python3 rpi_trash_classifier.py
Bước 5: Kiểm tra nó: Chạy chương trình
Tổng quan về chương trình
Khi bạn lần đầu tiên chạy chương trình, sẽ mất một khoảng thời gian để tải thư viện TensorFlow và mô hình Lobe ML. Khi chương trình sẵn sàng chụp ảnh, đèn trạng thái (LED trắng) sẽ phát xung.
Khi bạn đã chụp ảnh, chương trình sẽ so sánh ảnh với mô hình Lobe ML và đưa ra kết quả dự đoán (dòng 83). Đầu ra xác định đèn nào được bật: vàng (rác), xanh lam (tái chế), xanh lá cây (phân trộn) hoặc đỏ (rác thải nguy hại).
Nếu không có đèn LED chỉ báo nào bật và đèn LED trạng thái trở về chế độ xung, điều đó có nghĩa là ảnh được chụp "không phải là rác", nói cách khác, hãy chụp lại ảnh!
Chụp ảnh
Nhấn nút để chụp ảnh. Lưu ý rằng bạn có thể cần phải giữ nút bấm trong ít nhất 1 giây để chương trình đăng ký nút bấm. Nên chụp thử một số hình ảnh, sau đó mở trên Desktop để hiểu rõ hơn về khung hình và góc nhìn của camera.
Để người dùng có thời gian định vị đối tượng và điều chỉnh mức độ ánh sáng của camera, mất khoảng 5 giây để chụp hoàn toàn một bức ảnh. Bạn có thể thay đổi các cài đặt này trong mã (dòng 35 và 41), nhưng hãy nhớ Pi Foundation khuyến nghị tối thiểu 2 giây để điều chỉnh mức độ ánh sáng.
Xử lý sự cố
Thách thức lớn nhất là đảm bảo rằng hình ảnh được chụp là những gì chúng ta mong đợi, vì vậy hãy dành chút thời gian để xem lại hình ảnh và so sánh kết quả mong đợi với đầu ra đèn LED chỉ báo. Nếu cần, bạn có thể chuyển hình ảnh vào mô hình Lobe ML để tham khảo trực tiếp và so sánh nhanh hơn.
Một số điều cần lưu ý:
- Thư viện TensorFlow có thể sẽ đưa ra một số thông báo cảnh báo - đây là thông báo điển hình cho phiên bản được sử dụng trong mã mẫu này.
- Các nhãn dự đoán phải chính xác như được viết trong hàm led_select (), bao gồm viết hoa, dấu câu và khoảng cách. Hãy chắc chắn thay đổi những điều này nếu bạn có một mô hình Lobe khác.
- Pi yêu cầu một nguồn điện ổn định. Đèn nguồn của Pi phải sáng, màu đỏ đồng nhất.
- Nếu một hoặc nhiều đèn LED không bật khi dự kiến, hãy kiểm tra bằng cách bật chúng bằng lệnh:
red_led.on ()
Bước 6: (Tùy chọn) Xây dựng nó: Hoàn thiện mạch của bạn
Bây giờ chúng tôi đã thử nghiệm và nếu cần, đã gỡ lỗi, dự án của chúng tôi để nó hoạt động như mong đợi, chúng tôi đã sẵn sàng để hàn mạch của mình!
Lưu ý: Nếu bạn không có mỏ hàn, bạn có thể bỏ qua bước này. Một giải pháp thay thế là phủ keo nóng lên các kết nối dây (tùy chọn này sẽ cho phép bạn sửa / thêm / sử dụng mọi thứ sau này, nhưng có nhiều khả năng bị đứt hơn), hoặc sử dụng epoxy hoặc một loại keo cố định tương tự (tùy chọn này sẽ bền hơn nhiều nhưng bạn sẽ không thể sử dụng mạch hoặc có thể là Pi sau khi làm điều này)
Bình luận nhanh về các lựa chọn thiết kế của tôi (Ảnh 1):
- Tôi đã chọn dây jumper nữ cho đèn LED và Pi GPIO vì chúng cho phép tôi loại bỏ đèn LED và hoán đổi màu sắc hoặc di chuyển chúng nếu cần. Bạn có thể bỏ qua những điều này nếu bạn muốn tạo kết nối lâu dài.
- Tương tự, tôi đã chọn một đầu nối JST cho nút bấm.
Đang xây dựng
1. Cắt đôi mỗi dây của jumper nữ (vâng, tất cả chúng!). Sử dụng dụng cụ tuốt dây, loại bỏ khoảng 1/4 (1 / 2cm) cách điện của dây.
2. Đối với mỗi đèn LED, hàn một điện trở 220Ω vào chân âm (ngắn hơn). (Ảnh 2)
3. Cắt một đoạn nhỏ, khoảng 1 (2cm) ống co nhiệt và đẩy qua đèn LED và điểm nối điện trở. Đảm bảo rằng chân điện trở còn lại có thể tiếp cận được, sau đó đốt nóng ống co nhiệt cho đến khi khớp nối chắc chắn. (Ảnh 3)
4. Chèn mỗi đèn LED vào một cặp dây nhảy cái. (Ảnh 4)
5. Dán nhãn cho các dây jumper (ví dụ: bằng băng dính), sau đó hàn các dây jumper lên bảng mạch in (PCB) của bạn. (Ảnh 5)
6. Tiếp theo, sử dụng một dây jumper cái (đã cắt) để kết nối mỗi đèn LED với chân GPIO Pi tương ứng của nó. Hàn và dán nhãn một dây jumper để kim loại trần kết nối với chân LED dương qua PCB. (Ảnh 5)
Lưu ý: Nơi bạn hàn dây này sẽ phụ thuộc vào cách bố trí PCB của bạn. Bạn cũng có thể hàn dây này trực tiếp vào dây nhảy LED dương.
7. Hàn điện trở 220Ω vào đầu âm (màu đen) của đầu nối JST. (Ảnh 6)
8. Hàn đầu nối JST và điện trở vào nút bấm. (Ảnh 6)
9. Kết nối các dây jumper M-to-F giữa đầu nối nút bấm và các chân GPIO (nhắc nhở: màu đen là GND).
10. Phủ các kết nối PCB bằng keo nóng hoặc epoxy để kết nối an toàn hơn.
Lưu ý: nếu bạn chọn sử dụng epoxy, bạn có thể không sử dụng được chân GPIO của Pi cho các dự án khác trong tương lai. Nếu bạn lo lắng về điều này, hãy thêm cáp ribbon GPIO và thay vào đó kết nối dây jumper vào đó.
Bước 7: (Tùy chọn) Xây dựng nó: Hộp đựng
Tạo một vỏ bọc cho Pi của bạn để giữ máy ảnh, nút bấm và đèn LED tại chỗ đồng thời bảo vệ Pi. Thiết kế bao vây của riêng bạn hoặc làm theo hướng dẫn xây dựng của chúng tôi bên dưới để nhanh chóng tạo mẫu bao vây bằng bìa cứng!
-
Trên đầu hộp các tông nhỏ, vạch ra vị trí của nút bấm, đèn trạng thái, đèn nhận dạng và cửa sổ camera pi (Ảnh 1).
Lưu ý: Cửa sổ máy ảnh Pi nên có kích thước khoảng 3/4 "x 1/2"
-
Sử dụng con dao chính xác của bạn, cắt bỏ các dấu vết.
Lưu ý: bạn có thể muốn kiểm tra các kích thước khi bạn di chuyển (Ảnh 1)
- Tùy chọn: Sơn vỏ! Tôi đã chọn sơn phun:)
- Cắt một tấm bìa "cửa sổ" hình chữ nhật cho Máy ảnh Pi (Ảnh 4) và dán keo vào bên trong hộp
-
Cuối cùng, cắt rãnh cho cáp nguồn Pi.
Trước tiên, nên lắp đặt tất cả các thiết bị điện tử để xác định vị trí tốt nhất cho khe cắm cáp nguồn pi
Bước 8: Cài đặt và triển khai
Đó là nó! Bạn đã sẵn sàng cài đặt và triển khai dự án của mình! Đặt hộp bên trên thùng rác của bạn, cắm Pi và chạy chương trình để có được cách giảm rác thải nhanh hơn, đáng tin cậy hơn của chúng tôi. Yay!
Tiến về phía trước
- Chia sẻ dự án và ý tưởng của bạn với những người khác thông qua cộng đồng Lobe Reddit!
- Kiểm tra repo Lobe Python GitHub để biết tổng quan chung về cách sử dụng Python để triển khai nhiều dự án Lobe hơn
- Câu hỏi hoặc yêu cầu dự án? Để lại nhận xét về dự án này hoặc liên hệ trực tiếp với chúng tôi: [email protected]
Đề xuất:
Robot phân loại rác: 15 bước (có hình ảnh)
Robot phân loại rác: Bạn có biết rằng tỷ lệ ô nhiễm trung bình trong các cộng đồng và doanh nghiệp lên đến 25%? Điều đó có nghĩa là cứ bốn mảnh đồ tái chế bạn vứt đi thì có một mảnh không được tái chế. Nguyên nhân là do lỗi của con người trong các trung tâm tái chế. Truyền thống
Tự làm thùng rác thông minh với Arduino: 6 bước (có hình ảnh)
Tự làm thùng rác thông minh với Arduino: Ở đây chúng ta sẽ tạo một thùng rác thông minh bằng cách sử dụng arduino và cảm biến siêu âm. Tôi hy vọng các bạn thích học dự án này
Thùng phân loại - Phát hiện và sắp xếp thùng rác của bạn: 9 bước
Sorter Bin - Phát hiện và Sắp xếp Thùng rác của bạn: Bạn đã bao giờ thấy ai đó không tái chế hoặc đang làm việc đó theo cách tồi tệ chưa? Bạn đã bao giờ ước có một chiếc máy có thể tái chế cho bạn? Hãy tiếp tục đọc dự án của chúng tôi, bạn sẽ không hối tiếc! Sorter bin là một dự án có động lực trợ giúp rõ ràng
Hiển thị phân đoạn 4 chữ số 7 từ thùng rác: 7 bước
Hiển thị phân đoạn 4 chữ số 7 từ thùng rác: Đã lâu rồi tôi không tải lên một bài có hướng dẫn, rất lâu rồi. Vì vậy, hôm nay tôi sẽ chỉ cho bạn cách chuyển một số rác thành một màn hình đẹp! Màn hình này có thể được sử dụng cho đồng hồ, mà tôi sẽ xuất bản trong tài liệu hướng dẫn trong tương lai của mình
TRASH ROCKS - Loại bỏ Thùng rác không thể phân loại: 8 bước
TRASH ROCKS - Loại bỏ Thùng rác Không thể phân loại: Để tạo thành một tảng đá rác, trước tiên, một bao tải được khâu ra khỏi lưới cá. Nó chứa đầy rác và trát bằng xi măng. Vỏ tạo thành có hình dạng độc đáo và trông rất tự nhiên. Đá rác là một