{"id":23924540,"url":"https://github.com/dbpprt/deepoctoprint","last_synced_at":"2026-02-27T05:41:10.688Z","repository":{"id":42822820,"uuid":"267135220","full_name":"dbpprt/deepoctoprint","owner":"dbpprt","description":"Crowdsourced dataset collector for failing 3D printers 🏗️💥 (as of now)","archived":false,"fork":false,"pushed_at":"2022-12-12T21:58:49.000Z","size":349,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-06T12:48:36.521Z","etag":null,"topics":["deep-learning","octoprint","octoprint-"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbpprt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-26T19:38:11.000Z","updated_at":"2025-01-21T15:13:50.000Z","dependencies_parsed_at":"2023-01-28T01:45:35.861Z","dependency_job_id":null,"html_url":"https://github.com/dbpprt/deepoctoprint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dbpprt/deepoctoprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbpprt%2Fdeepoctoprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbpprt%2Fdeepoctoprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbpprt%2Fdeepoctoprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbpprt%2Fdeepoctoprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbpprt","download_url":"https://codeload.github.com/dbpprt/deepoctoprint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbpprt%2Fdeepoctoprint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29886207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T05:38:26.446Z","status":"ssl_error","status_checked_at":"2026-02-27T05:38:25.235Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","octoprint","octoprint-"],"created_at":"2025-01-05T19:15:12.890Z","updated_at":"2026-02-27T05:41:10.672Z","avatar_url":"https://github.com/dbpprt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 DeepOctoPrint 🤖 (*WIP: data collector only*)\n![](https://img.shields.io/badge/images%20collected-0-brightgreen?style=for-the-badge)  ![](https://img.shields.io/maintenance/yes/2020?style=for-the-badge)  ![](https://img.shields.io/github/stars/badges/shields.svg?style=for-the-badge)\n\n![Spaghettimonster](assets/spaghettimonster.jpg)\n([source](https://www.pinterest.ca/pin/287174913714717323/))\n\n---\n\n## TLDR 🦥\nYou own a 3D Printer? You're using OctoPrint? Your printer is equipped with a camera? You want to help in develop a deep nerual network to detect failing 3D prints without looking at your printer all the time? You're willing to donate frames of your camera to a public dataset?\n\nThen you're the **right** person. Please install the plugin and help us to make a better world! (just kidding, I'm just tired of failing prints in an overnight print or when I'm at work).\n\nYou can download the plugin [here](https://addlinkhere) (*I'm sorry - you can't as of now* 😥)\n\n## ~~TLDR~~ Slightly longer version 📚\n\nAre you tired of failed prints during the night? Tired of clogging, spaghetti, warping and objects not sticking to the bed? \n\n\u003e ### ***I am!*** \n\nI started to look for object vision based solutions to monitor my prints or open datasets to train my own model without any success. There are several projects available like [The Spaghetti Detective](https://www.thespaghettidetective.com/), [Kronos Data Collector](https://github.com/MrBreadWater/project-kronos-data-collector), etc. but I was searching for a more open and extensible approach to solve this problem. But unfortunately everything starts with a **good** dataset 😣. I labeled a few hundred pictures of my beloved Prusa MK3S and trained several models to detect certain edge cases which worked out quite well but I want to find a generalized solution which can be used accross the 3D-Printing community. So let me just start with some core **tenets** of this project:\n- Everything will be **open-source**!\n- The dataset is crowdsourced and licensed as [**ODbL**](https://opendatacommons.org/licenses/odbl/1-0/index.html)\n- Labeling of the data will be crowssourced, too.\n- I'm very open for **contributors**, feel free to reach out to me, create a PR, create an issue, whatever necessary to make this project successful!\n\n***Okay, but what is this project actually doing?***\n\nCurrently there is nothing more then a data collector, implemented as **OctoPrint** plugin, which takes a picture every **x**-seconds and sends it to a remote API. The code itself is pretty messy and subject to be improved (*feel free to leave a PR!*).\n\n***TLDR:*** *Where can I download the plugin?*\n\n**WIP**: The plugin is not yet published, I'm working on it...\n\n\n## Table of contents 📋\n\n* [Table of contents](#table-of-contents)\n* [FAQ](#faq)\n* [How to get started with the code](#how-to-get-started-with-the-code)\n* [Roadmap](#roadmap)\n* [Contributors](#Contributors)\n\n## FAQ ⁉️\n\n\u003e **Where will my data be stored?**\n\nThe collected data will be stored in Frankfurt (DigitalOcean)\n\n\u003e **What happens if I'm accidentially naked in front of my 3D printer?**\n\nThe collected images will be *cleaned* in a unsupervised fashion. I'm using a simple model to detect human-beings and NSFW content within the pictures (and delete them...)\n\n\u003e **But why can't I see any machine learning models in this repository? 😱**\n\nFor now only the data collector plugin is available because as you know - every good model starts with a good dataset 😝\n\n\u003e **Hmm, when I install the data collector, what will happen with the pictures?**\n\nBy installing and enabling the plugin, you agree to publish the images to the public licensed as [**ODbL**](https://opendatacommons.org/licenses/odbl/1-0/index.html). The data collection is anonymously and the data will be kept indefinitely.\n\n\u003e **Where can I find the pictures in this repository which I published yesterday?**\n\nThe dataset will be cleaned and distributed at least once a month.\n\n\u003e **I want my data to be deleted because I printed** ***xxx*** **which I don't like to be part of a public dataset?**\n\nThe plugin writes a unique hex to your octoprint.yaml configuration file. Feel free to create an issue as fast as possible (before I publish the new version of the dataset) to get your data cleaned.\n\n\u003e **Why is the plugin licensed as GNU AFFERO GENERAL PUBLIC LICENSE Version 3?**\n\nBecause I borrowed some code from the Spaghetti Detective plugin (nice work btw!)\n\n\u003e **Why has this README so many spelling and grammar issues?**\n\nSorry, it is late and I'm not a native speaker - feel free to create a PR (*please*)...\n\n\u003e **How can I be added in the list of contributors?**\n\nYou're contributing to the dataset by using the collector plugin or contributed to the code? Just create a PR and add your name. Wait what - but how are you checking that people are really using the plugin? *I don't and I don't intend to do so!*\n\n\u003e **Will this be a cloud service or what are your plans?**\n\nI intend to create a lightweight model which can be used on Jetson or similar. However at the beginning I will probably experiment with deeper models to find a good baseline.\n\n\u003e **How do you want to make this possible, do you actually have any idea of deep learning?**\n\nYes I have but this is not subject of this repository. I already explored several approaches using pixel-wise image segmentation to detect the print, the bed and the print head. This helps to detect separations from the print bed, *extereme* clogging and gives us a perfectly trained feature extractor backbone which can be used to explore certain other problems like spaghetti (Which can be easily part of the segmentation itself), warping, etc. I ended up exploring a multi-task learning approach with different losses accross the tasks and different weights for each loss. However this approach was highly complicated but I think it is feasible to use a big network to train a lightweight network in a semi-supervised approach to run it *at the edge*.\n\n\u003e **What framework do you prefer?**\n\nDefinitely **PyTorch!** 😍\n\n\u003e **Can I contribute to the project?**\n\nYes definitely (and I would highly appreciate it)! There are so many topics to work on, just to name a few:\n- Improve the code - it has no tests, it's pretty hacky, not documented and maybe not using the right architecture.\n- Correct my spelling mistakes. 🙃\n- Automate some things (GitHub Actions, Dependabot, ...)\n- Make all your friends to install the **collector plugin**\n- ... and many more ...\n\n\u003e **What exactly will be tracked?**\n- A unique identifier (hex format) which gets generated when you install the plugin the first time and gets stored in the OctoPrint configuration file\n- A frame of your webcam\n- The time when the print starts\n\n**IMPORTANT:** the plugin only collects data when a print is running!\n\n\u003e **Why is there a MIT license in the project but you mentioned AGPLv3?**\n\nSome parts of the repository are licensed under different licenses and contain separate LICENSE files.\n- Data Collector Plugin (AGPLv3) - borrows code from [The Spaghetti Detective](http://thespaghettidetective.com/) (which is a nice project, take a look. The authors also share their public dataset.)\n- The dataset itself (**not yet released**) is licensed as [**ODbL**](https://opendatacommons.org/licenses/odbl/1-0/index.html)\n\n## How to get started with the code 🛠️\n\n*to be done, I'm sorry*\n\n## Roadmap 🏄\n\n- [x] Publish the project on GitHub\n- [ ] Publish the API\n- [ ] Package the plugin and publish it as **OctoPrint** plugin\n- [ ] Get this repository somehow spreaded into the world (*This checkbox will never be checked*)\n- [ ] Find more contributors (*Same applies here*)\n- [ ] Publish the first dataset\n- [ ] Improve the Roadmap...\n\n## Contributors ❤️\n\n### Active (code / project contributors)\n- [Dennis](https://github.com/dennisbappert)\n- 😲 [your name can be here!](https://github.com/dennisbappert/deepoctoprint/pulls)\n- 💤 it is quite empty here 💤\n\n### Passive (dataset contributors)\n- [Dennis](https://github.com/dennisbappert)\n- 😲 [your name can be here!](https://github.com/dennisbappert/deepoctoprint/pulls)\n- 💤 it is quite empty here 💤\n\n## Bonus content 🙈\n![Wow](https://media.giphy.com/media/vQqeT3AYg8S5O/source.gif)\n\nIf you really read the entire page till here (and I admit it is pretty long and boring) it must be at least an interesting project so feel free to drop a 🌟 star or follow the project!\n\n(PS: I just like **GIFS** and it is hopyfully eye-catching enough to make you read the above line) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbpprt%2Fdeepoctoprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbpprt%2Fdeepoctoprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbpprt%2Fdeepoctoprint/lists"}