{"id":16129865,"url":"https://github.com/erotemic/shitspotter","last_synced_at":"2025-05-09T00:00:36.375Z","repository":{"id":37296713,"uuid":"427196313","full_name":"Erotemic/shitspotter","owner":"Erotemic","description":"An open source algorithm and dataset for finding poop in pictures.","archived":false,"fork":false,"pushed_at":"2025-05-02T20:49:01.000Z","size":1672,"stargazers_count":67,"open_issues_count":5,"forks_count":4,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-02T21:26:48.422Z","etag":null,"topics":["ai","computer-vision","dogs","poop"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Erotemic.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-12T01:34:27.000Z","updated_at":"2025-05-02T20:49:05.000Z","dependencies_parsed_at":"2023-02-09T15:01:27.254Z","dependency_job_id":"a9e86674-51b2-4ccc-b3c4-a43eb6dfeb1e","html_url":"https://github.com/Erotemic/shitspotter","commit_stats":{"total_commits":124,"total_committers":2,"mean_commits":62.0,"dds":0.06451612903225812,"last_synced_commit":"c254d2ae4a699f83a2b4db3e6c0c3c8708b6fc8b"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fshitspotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fshitspotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fshitspotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erotemic%2Fshitspotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Erotemic","download_url":"https://codeload.github.com/Erotemic/shitspotter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166502,"owners_count":21864475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ai","computer-vision","dogs","poop"],"created_at":"2024-10-09T22:12:56.747Z","updated_at":"2025-05-09T00:00:36.337Z","avatar_url":"https://github.com/Erotemic.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"🗑️📱💩 ShitSpotter 💩📱🗑️\n=========================\n\n.. 💩📱📷🤏🗑️🤌\n\n.. .. |CircleCI| |Codecov| |Pypi| |Downloads| |ReadTheDocs|\n.. .. +------------------+----------------------------------------------+\n.. .. | Read the docs    | https://shitspotter.readthedocs.io           |\n.. .. +------------------+----------------------------------------------+\n.. .. | Github           | https://github.com/Erotemic/shitspotter      |\n.. .. +------------------+----------------------------------------------+\n.. .. | Pypi             | https://pypi.org/project/shitspotter         |\n.. .. +------------------+----------------------------------------------+\n\n\nThis ``shitspotter`` repo is where I am building the \"ShitSpotter\" (or\n\"ScatSpotter\" in a formal setting) poop-detection algorithm and dataset.  The\nprimary goal of this work is to allow for the creation of a phone app that\nfinds where your dog pooped, because you ran to grab the doggy-bags you forgot,\nand now you can't find the damn thing.  Other applications can be envisioned,\nsuch as AR glasses that lets you know if you are about to walk into a steamer,\nor perhaps city governments could use this to more efficiently clean public\nareas.\n\nThis module will contain an algorithm for training a pytorch network to detect poop in images, and a script\nfor detecting poop in unseen images given a pretrained model.\n\nThe dataset currently contains mostly outdoor images taken with a phone. The general process of acquiring the dataset has been:\n1. My dog poops or I see a rogue poop,\n2. I take a \"before\" picture of the poop,\n3. I pick up the poop,\n4. I take an \"after\" picture as a high-correlation negative, and\n5. I take a 3rd image of a different nearby area to get a lower-correlation-negative.\nNew data is added roughly each month, and each new set of data adds about 1GB\nto the dataset size.\nMost of the dataset is unannotated with segmentation polygons.\nAnnotations and the data manifest are managed using kwcoco.\n\nThe code and the dataset are open source with permissive licensing.\nThe data and pretrained models are distributed via IPFS, BitTorrent, and\ncentralized mechanisms.\n\n\nMajor Milestones and Goals\n==========================\n\nThis following is the high level status of the project.\n\n- ☑ Image collection started (2020-12-18)\n- ☑ Image collection published (2021-12-30)\n- ☑ Dataset has enough images to train models (2023-03-03)\n- ☑ Dataset has enough annotations to train models (2023-11-17)\n- ☑ Baseline models are trained (2024-07-27)\n- ☐ Scientific paper about dataset `published on arxiv \u003chttps://www.arxiv.org/abs/2412.16473\u003e`_ (2024-12-21)\n- ☐ Scientific paper about dataset peer-reviewed\n- ☐ Efficient models for phones are trained\n- ☐ Phone application is developed\n\n\nIntroduction\n============\n\nIn Fall 2019, I was at the local dog park, and I found myself in a situation\nwhere my dog pooped, but I had forgotten to bring bags with me. I walked to the\nlocal bag station (thank you D.G.S.), grabbed one, but then I couldn't find where\nthe poop was. The brown fallen leaves made it very difficult to find the poop.\n\nThis happened every so often. Usually I would be able to find it, but there\nwere times I was completely unable to find the \"object of interest\". This got\nme thinking, what if I had a phone app that could scan the area with the camera\nand try to locate the poop? If I had a dataset, training a poop detection model\nwith today's deep learning methods should work pretty well.\n\nThus, on 2020-12-18, I took my first picture. My dog pooped, I took a picture,\nI picked it up, and then I took an \"after\" picture. The idea is that I will\nalign the pictures (probably via computing local features like sift or some\ndeep variant and then estimating an affine/projective transform) and then take\na difference image. That should let me seed some sort of semi-automated\nannotation process.\n\nThen in 2021-05-11, one of my colleagues suggested that I take a 3rd unrelated\npicture to use as negative examples, so I took that suggestion and started\ndoing that. This is the process currently being used. The following figure\nillustrates an example of one of these \"triples\".\n\n.. image:: https://i.imgur.com/NnEC8XZ.jpg\n\n\nThe name \"ShitSpotter\" is an homage to my earlier work: `HotSpotter \u003chttps://github.com/Erotemic/hotspotter\u003e`_, which later became `IBEIS \u003chttps://github.com/Erotemic/ibeis\u003e`_ This is work on individual animal identification, particularly Zebras. This work is continued by `WildMe \u003chttps://www.wildme.org/\u003e`_.\n\n\nDownloading the Data\n====================\n\nAll data is publicly hosted on IPFS and is free to use under\n\"Creative Commons Attribution 4.0 International\" `(CC BY 4.0) \u003chttps://creativecommons.org/licenses/by/4.0/deed.en\u003e`_.\n\nWe use IPFS because it supports content addressable storage (CAS).  CAS has a\nlot of benefits. Among these are: data duplication, simpler updates to \"living\ndatasets\", and verification of download success.  To learn more see the\nWikipedia article on:\n\n* `content addressable storage \u003chttps://en.wikipedia.org/wiki/Content-addressable_storage\u003e`_,\n* `IPFS \u003chttps://en.wikipedia.org/wiki/InterPlanetary_File_System\u003e`_.\n\n\nThe following `IPNS \u003chttps://docs.ipfs.tech/concepts/ipns/\u003e`_ address should always point to the latest version of the dataset:\n`/ipns/k51qzi5uqu5dje1ees96dtsoslauh124drt5ajrtr85j12ae7fwsfhxb07shit \u003chttps://ipfs.io/ipns/k51qzi5uqu5dje1ees96dtsoslauh124drt5ajrtr85j12ae7fwsfhxb07shit\u003e`_.\n\nThis should resolve to the most recent `IPFS CID \u003chttps://docs.ipfs.tech/concepts/content-addressing/\u003e`_ (Content Identifier) of:\n`/ipfs/bafybeihsd6rwjha4kbeluwdjzizxshrkcsynkwgjx7fipm5pual6eexax4 \u003chttps://ipfs.io/ipfs/QmQonrckXZq37ZHDoRGN4xVBkqedvJRgYyzp2aBC5Ujpyp?redirectURL=bafybeihsd6rwjha4kbeluwdjzizxshrkcsynkwgjx7fipm5pual6eexax4\u0026autoadapt=0\u0026requiresorigin=0\u0026web3domain=0\u0026immediatecontinue=1\u0026magiclibraryconfirmation=0\u003e`_.\n\nThis can be viewed in a webbrowser through an IPFS gateway:\n\nIf you have an IPFS node, please help keep this dataset alive and available by pinning it.\n\nSometimes IPFS can be slow, especially for the latest data. However, older CIDs can be faster to access: e.g.\n`/ipfs/QmNj2MbeL183GtPoGkFv569vMY8nupUVGEVvvvqhjoAATG \u003chttps://ipfs.io/ipfs/QmQonrckXZq37ZHDoRGN4xVBkqedvJRgYyzp2aBC5Ujpyp?redirectURL=QmNj2MbeL183GtPoGkFv569vMY8nupUVGEVvvvqhjoAATG\u0026autoadapt=0\u0026requiresorigin=0\u0026web3domain=0\u0026immediatecontinue=1\u0026magiclibraryconfirmation=0\u003e`_.\n\n\nThe the goal is to make IPFS the main distribution mechanism. However, it is\nstill relatively new technology and until all of the kinks are worked out, the\ndataset will be mirrored on a centralized Girder server:\nhttps://data.kitware.com/#user/598a19658d777f7d33e9c18b/folder/66b6bc34f87a980650f41f90\n\n.. .. OLD and broken (its a dead link!): https://data.kitware.com/#user/598a19658d777f7d33e9c18b/folder/65d6c52fb40ab0fa6c57909b\n\nUnlike IPFS, which (ideally) gives seamless access to the data, the centralized\nstorage has the upload from each update grouped in its own zipfile. If\nannotations for one of these folders changes, the entire zipfile will be\nreuploaded, so there will be no mechanism for version control.\n\n\nWhile we are interested in IPFS as a distribution mechanism, we recognize it is\na newer technology and we also periodically seed versions of the dataset using\nbittorrent:\n\nhttps://academictorrents.com/details/ee8d2c87a39ea9bfe48bef7eb4ca12eb68852c49\n\nWe also have the dataset on `hugging face\n\u003chttps://huggingface.co/datasets/erotemic/shitspotter\u003e`__, which is currently\noffering the best download speeds.\n\n\nModels are also available on huggingface: https://huggingface.co/erotemic/shitspotter-models\n\nRecent Updates\n==============\n\nCheck back for updates, but because this is a personal project, it might take\nsome time for it to fully drop.\n\n* 2025-04-20 - The number of images is now over 9000! The dataset is now `mirrored on hugging face \u003chttps://huggingface.co/datasets/erotemic/shitspotter\u003e`__.\n* 2025-03-09 - Bunch of new images, with somewhat of a domain shift. The detectron model is good at annotating new images, but still not good enough. More work to be done.\n* 2024-12-31 - It is the end of 2024, lots has changed: new varied images, new privacy policy, and new contributions. Happy new year 🎊, all new 2025 images will go into the train set.\n* 2024-09-16 - It's not part of a triple (I did not have a bag with me) but the dataset now has an international poop.\n* 2024-07-03 - Happy 4th 🎆, my dogs are shitting themselves.\n* 2024-06-15 - Small image drop. Working on writeup. Training new models.\n* 2024-05-21 - Slowing down release cycles. Still collecting images at roughly the same rate. CIDs for recent and previous releases are now in the CID table.\n* 2024-03-30 - This includes recent models that have been performing reasonably well.\n* 2024-02-29 - Going to change this year to be 1/3 validation, next update will have a new split. Will also rework this README eventually.\n* 2024-02-22 - Added centralized Girder download link to increase accessibility of the data with an ok-ish pretrained model.\n* 2024-01-31 - First update of 2024. New images are being added to the validation split.\n* 2023-12-31 - Last update of 2023. We also welcome a new content contributor: Roadie. Details will be added in the acknowledgements.\n* 2023-12-20 - More images and many more annotations. Data collected next year (2024) will be part of the validation set.\n* 2023-11-17 - More images and annotations.\n* 2023-10-19 - A few new images, the last images from Bezoar, who passed away today.\n* 2023-10-15 - The next phase of the project - annotation and training - has begun. Also 82 new images.\n* 2023-08-22 - 182 new images.\n* 2023-07-01 - Another batch of 300 photos. I also realized that if I could ID which dog made which poop, I could do a longiturdinal study.\n* 2023-04-16 - More ground based photos. One \"after\" photo contains a positive example I didn't see in the background.\n* 2023-03-11 - 305 new images. Many of these images are taken from a close up ground angle. I will continue to collect more in this way.\n* 2023-01-01 - Another batch of leafy images.\n* 2022-11-23 - We are thankful for more images 🦃\n* 2022-09-19 - Added more images (With an indoor triple! wow! Thanks sick dog!)\n* 2022-07-17 - Added more images\n* 2022-06-20 - Added more images, starting transition to V1 CIDS\n* 2022-04-02 - Added more images and updated analysis (Over 1000 Poop Images 🎉)\n* 2022-03-13 - Added more images and updated analysis\n* 2021-12-30 -\n    - Found errors in the dataset stats, updating README.\n    - Updated analytics to be updated as the dataset grows.\n    - Initial SIFT-based matching isn't as robust as I'd hoped.\n    - First data is on IPFS, still need to open ports. ID of the root dataset is: ``QmNj2MbeL183GtPoGkFv569vMY8nupUVGEVvvvqhjoAATG``\n* 2021-11-23 - Added annotation process overview and dataset sample.\n* 2021-11-11 - Initial upload of data munging scripts.\n* 2020-12-18 - Took the first picture.\n\nRelated Work\n============\n\nI was surprised to find that there does not seem to be much work on this problem in the outdoor setting.\nBecause none of the related work exactly meets my needs, I haven't looked too in depth into much of it,\nit could be that some of these are more relevant than I've given them credit for. As time moves on\nI'll continue to refine this section.\n\nApparently Roomba has an indoor poop dataset: https://www.engadget.com/irobot-roomba-j-7-object-poop-detection-040152887.html It would be interesting to combine the indoor / outdoor datasets, but we are more concerned about outdoor detection. Maybe Boston Dynamics and Roomba can take this dataset and do something interesting.\n\nThe MSHIT fake dog poop dataset: https://www.kaggle.com/mikian/dog-poop is similar to this domain, but not the real-deal.\nTHe dataset consists of 3.89GB of real images with fake poop (e.g. plastic\npoop) in controlled environments.\n\nThere is Human Poop Classification: https://seed.com/poop/ and https://www.theverge.com/2019/10/29/20937108/poop-database-ai-training-photo-upload-first-mit but this is not our domain.\n\nDetect Images of Dogs Pooping: https://colab.research.google.com/github/matthewchung74/blogs/blob/dev/Dog_Pooping_Dectron.ipynb\nUnfortunately, this is detecting the action, and not the consequence.\n\nCalab Olson trained a dog-pose recognition network to detect when a specific dog was pooping.\nhttps://github.com/calebolson123/DogPoopDetector\nhttps://calebolson.com/blog/2022/01/14/dog-poop-detector.html\nhttps://www.youtube.com/watch?v=uWZu3rnj-kQ\n\nA Dog Poop DNA database could be used in conjunction with this work: https://www.bbc.com/news/uk-england-somerset-56324906\n\nA 2019 Project by Neeraj Madan: https://www.youtube.com/watch?v=qGNbHwp0jM8\nThis is the most similar thing to this project that I've seen so far.\nHe enumerates many reasons why it is beneficial to remove dog waste from our\nenvironment, and considers many applications for a dog poop detector. He has a\ndataset of 100 dog poop images and used FasterRCNN as a baseline dataset.\nI have reached out to him to see if he is interested in collaborating.\n\nTACO: http://tacodataset.org/\nThe TACO dataset is Trash Annotations in Context. It could be the case that this data could be incorporated into the TACO dataset, although it does not currently contain a category for feces.\n\nSnapCrap: An app to report poop on the streets of San Francisco\nhttps://medium.com/@miller.stowe/snapcrap-why-i-built-an-app-to-report-poop-on-the-streets-of-san-francisco-aac12382a7ce\nIt is now defunct and no longer available.\n\nOther related links I haven't gone through well enough yet:\n\n* https://getdiglabs.com/blogs/the-dig-labs-dish/computer-vision-and-dog-poop\n* https://www.wired.co.uk/article/dog-poo-bin-cleanup\n* https://www.reddit.com/r/robotics/comments/6p0rf0/can_i_use_opencv_to_get_my_robot_to_detect_dog/\n* https://www.housebeautiful.com/lifestyle/kids-pets/a31289426/robot-picks-up-dog-poop/\n\n\n\nDataset Description\n===================\n\nThe dataset contains a wide variety of image and background conditions that occur in upstate New York, including: seasonal changes, snow, rain, daytime, nighttime (some taken with flash, others taken with my phone's *night mode*), grass, concrete, etc...\n\nKnown dataset biases are:\n\n* Geographic region: Most images were taken in Upstate New York climate.\n* Sensor: Most images were taken with my Pixel 5. A few images were from my old Motorola Droid.\n* Coordinate: Humans unconsciously center \"objects of interest\" in images they take. In some instances I tried to mitigate this bias, either by explicitly changing the center of the poop, or not looking at the screen when taking a snapshot.\n* Me: I'm ~the only one~ the main person taking pictures. I'm also fairly tall, so the images are all from my viewpoint. There are other \"me\" biases I may not be aware of.\n* My Dogs: My two poop machines are fairly regular, and they have their own methods for times and places to make a dookie.\n* Freshness: The shit I deal with is often fresh out of the oven. Although, I have picked up a decent number of abandoned stools from other dog owners in the area, some of these are quite old. And age of the sample does seem to have an impact on its appearance. New poops have a shine, while old ones are quite dull, and will start to break down.\n\nThe following scatterplot illustrates trends in the space / time distribution of the images.\n\n.. .. image:: https://ipfs.io/ipfs/bafybeibnofjvl7amoiw6gx4hq5w3hfvl3iid2y45l4pipcqgl5nedpngzi/analysis/scat_scatterplot.png\n.. image:: https://i.imgur.com/aPvRJ3q.png\n.. .. image:: https://i.imgur.com/78EfIpl.png\n.. .. image:: https://i.imgur.com/tL1rHPP.png\n.. .. image:: https://imgur.com/DeUesAC.png\n.. .. image:: https://imgur.com/q6XzSKa.png\n.. .. image:: https://i.imgur.com/ne3AeC4.png\n\n\nA spatial visualization of where the majority of images were taken is as follows:\n\n\n.. .. image:: https://ipfs.io/ipfs/\u003cHEAD\u003e/analysis/maps/map_0000.png\n.. image:: https://i.imgur.com/Guz019L.png\n\nA visualization of the cumulative number of images collected over time is as follows:\n\n.. .. image:: /analysis/images_over_time.png\n.. image:: https://i.imgur.com/KkrKx7e.png\n.. .. image:: https://i.imgur.com/lQCNvNn.png\n.. .. image:: https://imgur.com/vrAzrfj.png\n.. .. image:: https://imgur.com/C2X1NCt.png\n.. .. image:: https://i.imgur.com/ppPXo6X.png\n\n\nThe following figure is a hand-picked sample of 9 images from the dataset. Each of these images has poop in it. In some cases it's easy to spot. In other cases, it can be quite difficult.\n\n.. image:: https://i.imgur.com/QwFpxD1.jpg\n\nDataset Statistics:\n\n* Most images only show a single poop, but other images have multiple.\n\n\n### As of 2021-11-11\n\n(The counts for this date are wrong)\n\n* I've collected 1935 pictures with \"616\" before/after/(maybe negative) groups of images.\n* There are roughly 394 paired-groups and 222 triple-groups. (Based only on counts, grouping has not happened yet).\n\n### As of 2021-12-30\n\n(These are more correct)\n\n* As of 2021-12-30 I've collected 2088 pictures with \"~728\" before/after/(maybe negative) groups of images. (number of pairs is approximate, dataset not fully registered yet)\n* There are roughly 394 paired-groups and 334 triple-groups. (Based only on counts, grouping has not happened yet).\n\n\n### As of 2022-03-14\n\n* As of 2021-12-30 I've collected 2471 pictures with \"~954\" before/after/(maybe negative) groups of images. (number of pairs is approximate, dataset not fully registered yet)\n* There are roughly 394 paired-groups and 560 triple-groups. (Based only on counts, grouping has not happened yet, there are 658 groups where the before / after images have been reported as registered by the matching algorithm).\n\n\nFurther updates will be added to this table. The number of images is total\nimages (including after and negatives). The (estimated) number of groups is\nequal to the number of images with poop in them. And number of registered\ngroups is the number of groups the before / after pair had a successful\nregistration via the SIFT+RANSAC algorithm.\n\n\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| Date        | # Images | # Estimated Groups  | # Registered Groups   | # Annotated Images    | CID                                                          |\n+=============+==========+=====================+=======================+=======================+==============================================================+\n| 2021-11-11  | 1935     | ~616                | N/A                   | 0                     | -                                                            |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2021-12-30  | 2088     | ~728                | N/A                   | 0                     | QmNj2MbeL183GtPoGkFv569vMY8nupUVGEVvvvqhjoAATG               |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-03-14  | 2471     | ~954                | 658                   | 0                     | QmaSfRtzXDCiqyfmZuH6NEy2HBr7radiJNhmSjiETihoh6               |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-04-02  | 2614     | ~1002               | 697                   | 0                     | QmfStoay5rjeHMEDiyuGsreXNHsyiS5kVaexSM2fov216j               |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-04-16  | 2706     | ~1033               | 722                   | 0                     | -                                                            |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-06-20  | 2991     | ~1127               | 734?                  | 0                     | bafybeihltrtb4xncqvfbipdwnlxsrxmeb4df7xmoqpjatg7jxrl3lqqk6y  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-07-17  | 3144     | ~1179               | 823                   | 0                     | bafybeihi7v7sgnxb2y57ie2dr7oobigsn5fqiwxwq56sdpmzo5on7a2xwe  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-09-19  | 3423     | ~1272               | 892                   | 0                     | bafybeiedk6bu2qpl4snlu3jmtri4b2sf476tgj5kdg2ztxtm7bd6ftzqyy  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2022-11-23  | 3667     | ~1353               | 959                   | 0                     | bafybeibnofjvl7amoiw6gx4hq5w3hfvl3iid2y45l4pipcqgl5nedpngzi  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-01-01  | 3800     | ~1397               | 998                   | 0                     | bafybeihicisq66veupabzpq7gutxd2sikfe43jvtirield4wlnznpanj24  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-03-03  | 4105     | ~1498               | 1068                  | 0                     | bafybeicjvjt2abdj7e5mpwq27itxi2u6lzcegl5dgw6nqe22363vmdsnru  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-04-16  | 4286     | ~1559               | 1094                  | 0                     | bafybeic2ehnqled363zqimtbqbonagw6atgsyst5cqbm3wec6cg3te5ala  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-07-01  | 4594     | ~1662               | 1154                  | 0                     | bafybeiflkm37altah2ey2jxko7kngquwfugyo4cl36y7xjf7o2lbrgucbi  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-08-22  | 4776     | ~1723               | 1197                  | 0                     | bafybeiczi4pn4na2iw7c66bpbf5rdr3ua3grp2qvjgrmnuzqabjjim4o2q  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-09-22  | 4899     | ~1764               | 1232                  | 0                     | bafybeieahblb6aafomi72gnheu3ihom7nobdad4t6jcrrwhd5eb3wxkrgy  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-10-15  | 4981     | ~1790               | 1255                  | 362                   | bafybeief7tmoarwmd26b2petx7crtvdnz6ucccek5wpwxwdvfydanfukna  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-10-20  | 5019     | ~1804               | 1266                  | 430                   | bafybeigovcysmghsyab6ia3raycsebbc32kea2k4qoxcsujmp52hzpsghy  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-11-17  | 5141     | ~1845               | 1304                  | 919                   | bafybeie275n5f4f64vodekmodnktbnigsvbxktffvy2xxkcfsqxlie4hrm  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-12-20  | 5249     | ~1881               | 1337                  | 1440                  | bafybeifkufkmmx3qxbvxe5hbskxr4gijkevcryxwp3mys2pqf4yjv2tobu  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2023-12-31  | 5330     | ~1908               | 1360                  | 1440                  | bafybeihuem7qz2djallypbb6bo5z7ojqnjz5s4xj6j3c4w4aztqln4tbzu  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-01-31  | 5533     | ~1975               | 1411                  | 1964                  | bafybeibxxrs3w7iquirv262ctgcwgppgvaglgtvcabb76qt5iwqgwuzgv4  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-02-29  | 5771     | ~2054               | 1479                  | 1964                  | bafybeia2gphecs3pbrccwopg63aka7lxy5vj6btcwyazf47q6jlqjgagru  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-03-30  | 6019     | ~2137               | 1549                  | 2133                  | bafybeibw5xqmdiycd7vw5qqdf3ceidjbq3cv4taalkc3ruu3qeqmqdy6sm  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-05-21  | 6373     | ~2255               | 1640                  | 2252                  | bafybeidle54us5cdwpzzis4h52wjmtsk643gprx7nvvtd6g26mxq76kfjm  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-06-15  | 6545     | ~2313               | 1684                  | 2311                  | bafybeia44hiextgcpjfvglib66gxziaf7jkvno63p7h7fsqkxi5vpgpvay  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-07-03  | 6648     | ~2347               | 1711                  | 2346                  | bafybeiedwp2zvmdyb2c2axrcl455xfbv2mgdbhgkc3dile4dftiimwth2y  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-09-16  | 7108     | ~2500               | 1824                  | 2501                  | bafybeibn3kmmz3ytrlmt2pwbifvcwv7veddoeuabtifgvztetilnav2gom  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2024-12-31  | 8291     | ~2894               | 2108                  | 2898                  | bafybeie2nfp6km4x63ldpysnje4qaggijnh5jilgawjcdnahoddvxln3xm  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2025-03-09  | 8726     | ~3040               | 2200                  | 3046                  | bafybeihsd6rwjha4kbeluwdjzizxshrkcsynkwgjx7fipm5pual6eexax4  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n| 2025-04-20  | 9175     | ~3189               | 2316                  | 3198                  | bafybeia2uv3ea3aoz27ytiwbyudrjzblfuen47hm6tyfrjt6dgf6iadta4  |\n+-------------+----------+---------------------+-----------------------+-----------------------+--------------------------------------------------------------+\n\n\n\n\nFor further details, see the `Datasheet \u003cDATASHEET.md\u003e`_.\n\n\nAnnotation Process\n==================\n\nTo make annotation easier, I've taken before a picture before and after I clean up the poop.\nThe idea is that I can align these images and use image-differencing to more quickly find the objects of interest in the image.\nAs you can see, it's not so easy to spot the shit, especially when there are leaves in the image.\n\n.. image:: https://i.imgur.com/lZ8J0vD.png\n\nBut with a little patience and image processing, it's not to hard to narrow down the search.\n\n.. image:: https://i.imgur.com/A6qlcNk.jpg\n\nScripts to produce these visualizations have been checked into the repo. Annotations and the image manifest will\nbe stored in the kwcoco json format.\n\n\nUpdate: 2023-10-15\n\nThe before/after annotation process is unfortunately not robust enough to\ngenerate annotations. This additional structure is still of interest for\ndefining change detection problems or other processing, but bootstrapping the\nannotation process is harder than originally anticipated.\n\nIn lieu of difference-image annotations, annotations are being added with an AI assisted annotation tool: `labelme \u003chttps://github.com/wkentaro/labelme\u003e`_. This tool leverages the `Segment Anything Model (SAM) \u003chttps://segment-anything.com/\u003e`_, which does a good job at finding poop polygon boundaries from a single click. This process is not perfect, and annotations are corrected when they are incorrectly generated. In some difficult cases the SAM model is unable to segment the object of interest at all.\n\nThe following is a screenshot of the annotation tool with two easy cases and\none harder case that SAM struggled with on the top.\n\n.. image:: https://i.imgur.com/3lmXgww.png\n\n\nThe labelme annotations are kept in their original form as sidecar json files\nto the original images. However, when the dataset is updated, these annotations\nare converted and stored in the top-level kwcoco dataset.\n\n\nThe Algorithm\n=============\n\nCurrently there is no algorithm checked into the repo. I need to start annotating the dataset first.\nEventually there will be a ``shitspotter.fit`` and ``shitspotter.predict`` script for training and performing\ninference on unseen images. My current plan for a baseline algorithm is a mobilenet backbone pretrained\non imagenet and some single-stage detection / segmentation head on top of that.\n\nGiven kwcoco a formatted detection dataset, we can also use off-the-shelf detection baselines\nvia netharn, mmdet, or some other library that accepts coco/kwcoco input manifests.\n\nUpdate: 2023-10-15\n\nThe `geowatch \u003chttps://gitlab.kitware.com/computer-vision/geowatch\u003e`_ framework\nis being used to train initial models on the small set of annotations.\n\n\nInitial train and validation batches look like this:\n\n.. image:: https://i.imgur.com/Nfk8XbE.jpg\n\n\n.. image:: https://i.imgur.com/YHfl0Wd.jpg\n\n\nAn example prediction from an initial model on a full validation image is:\n\n.. image:: https://i.imgur.com/ya4jnAO.jpg\n\n\nClearly there is still more work to do, but training a deep network is an art,\nand I have full confidence that a high quality model is possible. The training\nbatches are starting to fit the data, but the validation batches shows that\nthere is still a clear generalization gap, but this is only the very start of\ntraining and the hyper-parameters are untuned.\n\n\nThe current train validation split is defined in the ``make_splits.py`` file.\nOnly \"before\" images with annotations are currently considered. The \"after\"\nimages and \"negative\" will be taken into account when they are properly\nassociated with the \"before\" images in the kwcoco metadata. The early images\nbefore 2021 are used for validation, whereas everything else is used for\ntraining. Contributor data is also currently held out and can serve as a test\nset once annotations are placed.\n\n\nUpdate 2024-03-31: Recent results from model ``shitspotter_from_v027_halfres_v028-epoch=0179-step=000720-val_loss=0.005.ckpt.pt`` have been quite good. These have quantiatively been measured against the ``vali_imgs228_20928c8c.kwcoco.zip`` variant of the validation dataset. The precision recall and ROC curves for pixelwise binary poop/no-poop classification are:\n\n\n.. image:: https://i.imgur.com/rgGjAda.png\n\nAnd the corresponding threshold versus F1, G1, and MCC is:\n\n.. image:: https://i.imgur.com/vay6TEP.png\n\nQualitatively some cherry-picked success cases in challenging images look like:\n\n\n.. image:: https://i.imgur.com/oWPg4CE.jpeg\n\nThere still are false positives and false negatives in some of the more\nchallenging images, but the algorithm is now accurate enough where it can be\nused, and it will continue to improve.\n\n\nData Management\n===============\n\nThe full resolution dataset is public and hosted on IPFS.\n\nDespite the name, this is not yet a DVC repo.  Eventually I would like to host\nthe data via DVC + IPFS, but fsspec needs a mature IPFS filesystem\nimplementation first. I may also look into git-annex as an alternative to DVC.\n\nThe licence for the software will be Apache 2. The license for the data will be\n\"Creative Commons Attribution 4.0 International\".\n\nIn addition to these licenses please:\n\n* Cite the work if you use it.\n* If you annotate any of the images, contribute the annotations back. Picking up shit is a team effort.\n* When asked to build something, particularly ML systems, think about the ethical implications, and act ethically.\n* Pin the dataset on IPFS or seed it on BitTorrent if you can.\n\nOtherwise the data is free to use commercially or otherwise.\n\nThe URL that can be viewed in a web browser: https://ipfs.io/ipfs/bafybeigovcysmghsyab6ia3raycsebbc32kea2k4qoxcsujmp52hzpsghy\n\nCurrent IPFS addresses for each top-level asset group are:\n\n.. temp\n\n\n\n.. code::\n\n    bafybeidvihxq3wlaeymbxeeogefvmvcyaz6cjhshnrcd4zqa4ndogxx2n4 - shitspotter_dvc/assets/_contributions\n    bafybeifmudpqd7hyc3ahzq6onjjcbkfddsolgndhycdnc6g3ah452uonpm - shitspotter_dvc/assets/_horse-poop-2022-05-26\n    bafybeidmcwo5lugzs5pjdwp3rvhgorz6zzw2of6s3surdnth5yz4hkxt2m - shitspotter_dvc/assets/_poop-unstructured-2021-02-06\n    bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 - shitspotter_dvc/assets/_trashed\n    bafybeigl4v7dlltjmyvujoo563wf6uoj7pqrbudkatar7h4zagqbe73hd4 - shitspotter_dvc/assets/_unstructured\n    bafybeieony6ygiipdp324ibuqhdggefsaa7ykqrxuxoqgobnvhpkqhq2gi - shitspotter_dvc/assets/poop-2020-12-28\n    bafybeiddzhnsovxx76pgb65p7kekfmlz4i6afqsdrbdnazs3h6cxhosr3i - shitspotter_dvc/assets/poop-2021-02-06\n    bafybeifrkr2grtiuhm4uwuqri25h67dsfmsrwtn3q7xpfaeetqlwukgoum - shitspotter_dvc/assets/poop-2021-03-05\n    bafybeigspol3oqllgushdujw3dgzlnrgb5ywy42i3gtk5g2h7px3r25w6q - shitspotter_dvc/assets/poop-2021-04-06\n    bafybeibshwnzyerfheehpt7qhw7jojjjrb5g2a74yvpwqm2wcadpyjjzny - shitspotter_dvc/assets/poop-2021-04-19\n    bafybeiecpxpodwxrmmkiyxef6222hobnr6okq35ecdcvlrt2wa4pduqpua - shitspotter_dvc/assets/poop-2021-04-25\n    bafybeigzkx5xxju2rbj5zai3o7vppwqbjso7tj23q77deqymjsf7trubzu - shitspotter_dvc/assets/poop-2021-05-11T000000\n    bafybeiasq55mc6nba3akml5c4niupbpfbyqtzcm2kjv7klgorllm5e3qna - shitspotter_dvc/assets/poop-2021-05-11T120000-notes.txt\n    bafybeig6v5abxioluw7zmk6mxzsg4xumhphkr64jqznjc2pgilhhg453b4 - shitspotter_dvc/assets/poop-2021-05-11T150000\n    bafybeiecdgnasyccutesze6odoyg2uhqkzc4hy25imbls2szpbwmsqsggm - shitspotter_dvc/assets/poop-2021-06-05\n    bafybeia5v47nt7m5dlw6ozfptreu6oxjdypjbbod3zhwx26hducphkg2em - shitspotter_dvc/assets/poop-2021-06-20\n    bafybeigo4ffpewvp23v6pa65durazqtzov7rpqucg6w3723bkolnhi2xwu - shitspotter_dvc/assets/poop-2021-09-20\n    bafybeibrw7je4zmoartzrpq5vbvg7klim5gr5j3q44doeb3tbxkkboftvi - shitspotter_dvc/assets/poop-2021-11-11\n    bafybeid7yfx6u4yacxpnmzg5vhwh7e47lga5oj3tpmdup3omo6s7yx54ee - shitspotter_dvc/assets/poop-2021-11-26\n    bafybeicedyv5dfy5x6yb2vw5quliajx2emrusssnev2v3qz3xdm7h6fsyy - shitspotter_dvc/assets/poop-2021-12-27\n    bafybeiewsg5b353s26r566aw756y5h5omnjei3xllzv7sldesmthu6p5bi - shitspotter_dvc/assets/poop-2022-01-27\n    bafybeiapgukq36wxd3b23io3io5iry2jpu6ojy4pdc5wqry5ouy3s7q65u - shitspotter_dvc/assets/poop-2022-03-13-T152627\n    bafybeiba5k3iauqu4ayul4yozapadlpiehezwow63lm3r26hgk4eqrrjki - shitspotter_dvc/assets/poop-2022-04-02-T145512\n    bafybeic3amh4klgs3aantyqgd7lti2vhnnmutbcfddtvw2572ynlldkpua - shitspotter_dvc/assets/poop-2022-04-16-T135257\n    bafybeicyotgcgufq2nsewvk2ph4xchgbnltd7t2j334lqgvc4jdnxrw5by - shitspotter_dvc/assets/poop-2022-05-26-T173650\n    bafybeieddszhqi6fzrpnn2q2ab74hva4gwnx5bcdnvh7cwwrnf7ikyukru - shitspotter_dvc/assets/poop-2022-06-08-T132910\n    bafybeigss3h3p6pnsw7bgfevs77lv6duzhzi7fmuiyf5qtujafqanrrjsi - shitspotter_dvc/assets/poop-2022-06-20-T235340\n    bafybeih6qtza2vnrdvemlhuezfhoom6wh2457mnwmlw7sg4ncgstl35zsa - shitspotter_dvc/assets/poop-2022-07-16-T215017\n    bafybeigvu4k5w2eflpkmucaas3p4yb7mhdbpmcdsmysbpfa54biiy4vvya - shitspotter_dvc/assets/poop-2022-09-19-T153414\n    bafybeid6guu5vv5zj467bkxpt3zkg2mn45q7kxab5tteps7hzpiuyam7mi - shitspotter_dvc/assets/poop-2022-11-23-T182537\n    bafybeibx2oarr3liqrda4hd7xlw643vbd5nxff2b44blzccw7ekw6gbwv4 - shitspotter_dvc/assets/poop-2023-01-01-T171030\n    bafybeibky4jj4hhmlwuifx52fjdurseqzkmwpp4derwqvf5lo2vakzrtoe - shitspotter_dvc/assets/poop-2023-03-11-T165018\n    bafybeifj7uidepqz2wbumajacy2oacn7c7cuh6zwnduovn4xyszdpiodoe - shitspotter_dvc/assets/poop-2023-04-16-T175739\n    bafybeihhbwe6mtkts7335e2wdr3p4mo5impx3niqbcavvqh3l3rknpbuti - shitspotter_dvc/assets/poop-2023-07-01-T160318\n    bafybeiez6f2nwubarmduko73uclgitsaagvdov4s5oexcwltw5dosjhq4m - shitspotter_dvc/assets/poop-2023-08-22-T202656\n    bafybeihurilrwce7rxr7o3iqdf227o74cfk23ilv2nleoj5hd6wx5iapz4 - shitspotter_dvc/assets/poop-2023-09-22-T180825\n    bafybeihsxlzwr45jvxzhq7vst6zirykdm4ufbmapxidl5bs4ncyfo7nmja - shitspotter_dvc/assets/poop-2023-10-15-T193631\n    bafybeiew5srmawar4qjkj3iohhg7i7fnc24ik3ym5is5y4d7ftho47puoq - shitspotter_dvc/assets/poop-2023-10-19-T212018\n    bafybeicqdlnupmpn54ehiqfqwhiwejh5sl5dizqsb2gsr6rk6aszszu2ue - shitspotter_dvc/assets/poop-2023-11-16-T154909\n    bafybeiboaujmbfrmopu4qguc6klv2s7ubxq3z4fka2u3d5m6i7waykonuy - shitspotter_dvc/assets/poop-2023-12-19-T190904\n    bafybeieyi3erbwzu5couwg4lrgr3xynq4xwtsoho3md6rhr6qfn5icl2vu - shitspotter_dvc/assets/poop-2023-12-19-T190904\n    bafybeicxiansxev6cipgp4lyykcfwregg3zlzlz2w4udpiggoyig7fsq3i - shitspotter_dvc/assets/poop-2024-03-30-T213537\n    bafybeia4cjh42u6wa3eykb5kow3qpvh5otae34ksbs7t6t2xs7nnrzwrly - shitspotter_dvc/assets/poop-2024-05-21-T133127\n    bafybeie4xnm4ba2nevrouz3drn5oanl4a34lxfxek743wyspwz4drone3i - shitspotter_dvc/assets/poop-2024-06-15-T163943\n    bafybeieg7n6rkrdudzsyqe3e4kanvscdk7qyd3sf5qubwvldfung2cozh4 - shitspotter_dvc/assets/poop-2024-07-03-T144034\n    bafybeihghjiuil27tzk3td43d6y44liivi4q3jemmp3c2vpfm4zirikoke - shitspotter_dvc/assets/poop-2024-09-16-T130352\n    bafybeibwijhponhdmw5wixkm5tvptmbh2vnusjnxhd7qch7mplnyk2hbzq - shitspotter_dvc/assets/poop-2024-10-16-T223026\n    bafybeiallyvshbkuxlnjp4nlc4tk5mlphqejp27vv6ewekpwpzbebavcf4 - shitspotter_dvc/assets/poop-2024-11-22-T195205\n    bafybeihgnfs6hku3xlqa7fnoqujkmq2ezk7lvidw32dvgjhsmk7wpk72cy - shitspotter_dvc/assets/poop-2024-12-30-T212347\n    bafybeidvaphwcib2qezdcey4cj3a2r7r7oxskl56yaccgdi75pdou4ggmm - shitspotter_dvc/assets/poop-2025-03-08-T224918\n    bafybeieyl6yzi6cyz3minjyvmz53ydbpxmljxs5gytv6cwu6ci7tmwyvjq - shitspotter_dvc/assets/poop-2025-04-20-T172113\n\n\n\nAcknowledgements\n================\n\nI want to give thanks to the people and animals-that-think-they-are-people who\ncontributed to this project.  My colleagues at\n`Kitware \u003chttps://www.kitware.com/\u003e`_ have provided valuable help / insight into\nproject direction, dataset collection, problem formulation, related research,\ndiscussion, and memes.\n\nI would also like to thank the several people that have contributed their own\nimages in the contributions folder (More info on contributions will be added\nlater).\n\nI want to give special thanks to my first two poop machines - Honey and Bezoar\n- who inspired this project. Without them, ShitSpotter would not be possible.\n\n.. Image of Honey And Bezoar\n.. image:: https://i.imgur.com/MWQVs0w.jpg\n\n\n.. Multiple Images of Honey And Bezoar\n.. image:: https://i.imgur.com/YUJjWoh.jpg\n\n\nHoney - (~2013 - ) - Adopted in June 2015, Honey is often called out for her\nresemblance to a fox and is notable for her eagerness for attention and\noutgoing personality.  DNA analysis indicates that she is part Boxer, Beagle,\nGerman Shepherd, and Golden Retriever.  Honey's likes include: breakfast,\nsniffing stinky things, digging holes, sleeping on soft things, viciously\nshaking small furry objects, and whining for absolutely no reason.  Honey's\ndislikes include: baths, loud noises, phone calls, and arguments.  Honey came\nto us from Ohio as a fearful dog, but has always been open to trusting new\npeople.  She has grown into an intelligent and willful dog with a scrappy\npersonality.\n\n.. An Image of Honey\n.. image:: https://i.imgur.com/gUzwgCT.jpg\n   :height: 400px\n   :align: left\n.. bafybeihuhrp6wtle5wuhsgcgf6bp7w4ol4pft7y2pcplylzly7gfag74lm bafybeic5a4kjrb37tdmc6pzlpcxe2x6hc4kggemnqm2mcdu4tmrzvir6vm/Contributor-Honey.jpg\n\n\nBezoar - (~2018 - 2023-10-19) - Adopted in July 2020 and named for a\n`calcified hairball \u003chttps://en.wikipedia.org/wiki/Bezoar\u003e`_, Bezoar was an\nawkward and shy dog, but grew into a curious and loving sweetheart.  Her DNA\ntest indicated she was part Stafford Terrier, Cane Corso, Labrador Retriever,\nGerman Shepherd, and Rhodesian Ridgeback.  Bezoar's likes included: breakfast, a\nparticular red coco plush, boops (muzzle nudges), chasing squirrels, and\nrunning in the park, Bezoar's dislikes included: baths, sudden movements, rainy\nweather, and coming inside before she is ready.  Bezoar came to us from Alabama\nwith bad heartworm and experienced a host of health problems through her life.\nIn 2022 she was diagnosed with rare form of osteosarcoma in her nose, which is\nan aggressive bone cancer, but she had a rare progression and lived a quality\nlife for over a year and a half without significant tumor growth.  Sadly, in\nOctober 2023, rapid growth resumed and she was euthanized while surrounded by\nher close friends and family.  To say she will be missed is an understatement;\nthere are no words that can describe my grief or the degree to which she\nenriched my life.  I take comfort in knowing that she may be in part\nimmortalized through her contributions to this dataset.\n\n.. An Image of Bezoar\n.. image:: https://i.imgur.com/Z3TCZ47.jpg\n   :height: 400px\n   :align: left\n.. bafybeibr33vb5m3ytovwputzai2vka2sjovmguktyk7yjp3emvtoihp7he bafybeic5a4kjrb37tdmc6pzlpcxe2x6hc4kggemnqm2mcdu4tmrzvir6vm/Contributor-Bezoar.jpg\n\n\n\nRoadie - (2016-04-29 - ) - Adopted in December 2023, Roadie is an energetic\nblue heeler who is not afraid to voice his opinions. His DNA test indicates he\nis 60% Australian Cattle Dog mixed with 20% Border Collie and small percents of\nHusky and Spaniel.  Roadie's likes include: fetching the ball, getting\ndifferent people to throw the ball, dropping the ball and picking it back up\nbefore someone can take it, staring deeply into eyes, pets, and invading\npersonal space. Did I mention he likes the ball? Roadie's dislikes include:\ndropping the ball, steep staircases, and spinach. Roadie was originally from\nTexas, but came to us after his aging owners could no longer take care of him.\nThusfar he has proven an excellent contributor to this project, pooping far\nmore frequently than the other dogs and in novel locations that bolster dataset\ndiversity.\n\n.. An Image of Roadie\n.. image:: https://i.imgur.com/DYdkt75.jpeg\n   :height: 400px\n   :align: left\n\n.. .. An Image of Roadie\n.. .. image:: https://i.imgur.com/yaZi5bO.jpg\n..   :height: 400px\n..   :align: left\n\nContributing\n============\n\nPlease contribute! The quickest way is with the `Google Form for ShitSpotter Image Contributions \u003chttps://docs.google.com/forms/d/e/1FAIpQLSfqH1555hynVUwh0O0526svPOaS0NnWiR15n68sgr7DExB6TQ/viewform?usp=sf_link\u003e`_.\n\nAlternatively, you can send me an image via email to: ``crall.vision@gmail.com``.\n\nWhen you contribute an image:\n\n* Make sure you are ok with it being released for free under: `(CC BY 4.0) \u003chttps://creativecommons.org/licenses/by/4.0/deed.en\u003e`_\n* Let me know how to give you credit.\n* Let me know if you want time / GPS camera metadata to be removed from the images.\n\nGuide to taking an image:\n\nUpload an image with poop in it. The poop need not be centered in the image. It could be close up, or far away. It should be visible, but it need not be obvious. The idea is that it could be difficult to see and we want to test if a machine learning algorithm can find it. The only requirement is that if a human looks at it carefully, they can tell there is poop in it.\n\n\n\n.. |Pypi| image:: https://img.shields.io/pypi/v/shitspotter.svg\n   :target: https://pypi.python.org/pypi/shitspotter\n\n.. |Downloads| image:: https://img.shields.io/pypi/dm/shitspotter.svg\n   :target: https://pypistats.org/packages/shitspotter\n\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/shitspotter/badge/?version=release\n    :target: https://shitspotter.readthedocs.io/en/release/\n\n.. # See: https://ci.appveyor.com/project/jon.crall/shitspotter/settings/badges\n.. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/py3s2d6tyfjc8lm3/branch/master?svg=true\n   :target: https://ci.appveyor.com/project/jon.crall/shitspotter/branch/master\n\n.. |GitlabCIPipeline| image:: https://gitlab.kitware.com/utils/shitspotter/badges/master/pipeline.svg\n   :target: https://gitlab.kitware.com/utils/shitspotter/-/jobs\n\n.. |GitlabCICoverage| image:: https://gitlab.kitware.com/utils/shitspotter/badges/master/coverage.svg?job=coverage\n    :target: https://gitlab.kitware.com/utils/shitspotter/commits/master\n\n.. |CircleCI| image:: https://circleci.com/gh/Erotemic/shitspotter.svg?style=svg\n    :target: https://circleci.com/gh/Erotemic/shitspotter\n\n.. |Travis| image:: https://img.shields.io/travis/Erotemic/shitspotter/master.svg?label=Travis%20CI\n   :target: https://travis-ci.org/Erotemic/shitspotter\n\n.. |Codecov| image:: https://codecov.io/github/Erotemic/shitspotter/badge.svg?branch=master\u0026service=github\n   :target: https://codecov.io/github/Erotemic/shitspotter?branch=master\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferotemic%2Fshitspotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferotemic%2Fshitspotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferotemic%2Fshitspotter/lists"}