All Projects → patil215 → scrapsort

patil215 / scrapsort

Licence: GPL-3.0 license
A convnet classifier and hardware device to automatically sort recycling materials.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
python
139335 projects - #7 most used programming language
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to scrapsort

BlogDemoRepository
来自博客27house.cn中使用的Demo
Stars: ✭ 25 (-13.79%)
Mutual labels:  camera
blender-renderborder
pixel-precise render border
Stars: ✭ 26 (-10.34%)
Mutual labels:  camera
three-orbitcontrols
is the three.js OrbitControls from official repo examples
Stars: ✭ 80 (+175.86%)
Mutual labels:  camera
CamOver
CamOver is a camera exploitation tool that allows to disclosure network camera admin password.
Stars: ✭ 217 (+648.28%)
Mutual labels:  camera
yolov5-deepsort-tensorrt
A c++ implementation of yolov5 and deepsort
Stars: ✭ 207 (+613.79%)
Mutual labels:  camera
CVSandbox
Open source software package, which aims to allow solving different tasks related to computer vision areas, like video surveillance, vision based automation/robotics, different sorts of image/video processing, etc.
Stars: ✭ 56 (+93.1%)
Mutual labels:  camera
xiongmai-cam-api
Xiongmai IP Camera Simple API in Python
Stars: ✭ 20 (-31.03%)
Mutual labels:  camera
rawtoaces
RAW to ACES Utility
Stars: ✭ 108 (+272.41%)
Mutual labels:  camera
camera.ui
NVR like user Interface for RTSP capable cameras
Stars: ✭ 99 (+241.38%)
Mutual labels:  camera
AstroPhoto-Plus
A lightweight, web based astrophotography sequence generator and INDI client written in Python and React.
Stars: ✭ 54 (+86.21%)
Mutual labels:  camera
flutter camera app
An android/iOS camera app using flutter
Stars: ✭ 15 (-48.28%)
Mutual labels:  camera
ios-yoonit-camera
The most advanced and modern Camera module for iOS with a lot of awesome features
Stars: ✭ 56 (+93.1%)
Mutual labels:  camera
bevy 4x camera
A 4X style camera for bevy.
Stars: ✭ 26 (-10.34%)
Mutual labels:  camera
flutter scan
scanner qrcode in widget tree & decoder qrcode from image
Stars: ✭ 63 (+117.24%)
Mutual labels:  camera
ng-webcam
ngWebcam is an AngularJS directive for capturing images from your computer's camera, and delivering then to you as data uri.
Stars: ✭ 14 (-51.72%)
Mutual labels:  camera
SeeShark
Simple C# camera library.
Stars: ✭ 50 (+72.41%)
Mutual labels:  camera
HomeAssistant-Tapo-Control
Control for Tapo cameras as a Home Assistant component
Stars: ✭ 327 (+1027.59%)
Mutual labels:  camera
Vision CoreML-App
This app predicts the age of a person from the picture input using camera or photos gallery. The app uses Core ML framework of iOS for the predictions. The Vision library of CoreML is used here. The trained model fed to the system is AgeNet.
Stars: ✭ 15 (-48.28%)
Mutual labels:  camera
TakePhoto
🔥Kongzue的APP拍照&相册选择工具
Stars: ✭ 41 (+41.38%)
Mutual labels:  camera
Quizoo
Online Quiz Platform for conducting quizes
Stars: ✭ 27 (-6.9%)
Mutual labels:  camera

ScrapSort

Recycling can be a pain. Whether through ignorance or indifference, people often place items in the wrong bins. If a recyclable item ends up in the trash, it often gets sent straight to a landfill without the trash being verified first.

I built a classifier that uses computer vision to determine if a piece of trash is recyclable or not. This classifier then powers a hardware device I built that swings around to dump the trash in the right spot.

__

Trash Classification Algorithm

Initially, when prototyping the classifier, I used the Google Cloud Vision API, which allows you to upload and image and receive a list of labels (with confidence values) of the content of that image. The algorithm could then see if any of these labels matched common recyclable materials like "paper", "cardboard", and so on.

However, Cloud Vision turned out to not be as accurate as desired. This is most likely due to the fact that the GCV API is a general-purpose API designed to distinguish thousands of different possible objects in many different contexts. For this project, we wanted the opposite. We only needed to decide whether a piece of trash was recyclable or not (and maybe the type of material of the trash) and the context was always going to be the same - the hardware of the device. Thus, I decided to go with modifying my own neural network architecture.

The classification algorithm I settled on was a modified convolutional neural network that we trained on our own custom data. Specifically, I used the Inception-v3 architecture, but retrained the final layer on our own training set and labels. This training set consisted of pictures we took ourselves as well as other training sets of garbage vs recyclable items we found online. The labels I trained on were common recyclable materials, specifically:

  • Metal
  • Paper
  • Cardboard
  • Glass
  • Plastic

Thus, if the confidence in any one of those labels was greater than a given threshold, we knew that the item was recyclable.

This allowed me to take advantage of the robust Inception-V3 architecture that I could take advantage of the robustness of Inception-V3 while also training it specifically for my desired context.

I used the tensorflow library to train the model.

Special thanks to this paper, which provided some of the dataset and advice on the model I used.

The Device

The device consists of a Raspberry Pi 3 connected to a camera module. This camera points down towards a tray which has servo motors at the pivots. Trash is placed on this tray, which triggers motion detection on the camera. Depending on what the camera sees, the Pi can use the servo motors to orient the tray and have the trash slide into the right bin. The Raspberry Pi uses Python for all hardware interfacing and classification logic.

A few pictures:

alt text

alt text

alt text

Dashboard

When the device sorts a piece of trash, it sends a copy of the picture and information about what it classified that trash as to a Firebase database. I built a dashboard that pulls data from this database and allows you to view a few interesting statistics about your trash. I might extend this in the future to make the device more of a "smart" trash can.

A screenshot:

alt text

Future Plans

  • This preliminary hardware was prototyped in roughly three hours. Thus, I'd ideally like to make the device more of a solid trash can.

  • While the trash classification works reasonably well, I'd like to improve it by perhaps exploring other architectures or adding more training data - I think with a little bit more effort I could develop a fairly solid classification algorithm.

  • I'd also like to integrate other sensors such as weight to help classify.

This project was created for Greylock Hackfest 2017.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].