{"id":18771514,"url":"https://github.com/ssusnic/machine-learning-doodle-recognition","last_synced_at":"2025-08-15T23:07:54.414Z","repository":{"id":111157149,"uuid":"166277282","full_name":"ssusnic/Machine-Learning-Doodle-Recognition","owner":"ssusnic","description":"A project on making a game like Quick Draw using Machine Learning with Convolutional Neural Network.","archived":false,"fork":false,"pushed_at":"2020-11-28T10:16:22.000Z","size":2109,"stargazers_count":37,"open_issues_count":0,"forks_count":13,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T08:19:36.786Z","etag":null,"topics":["artificial-intelligence","artificial-neural-networks","classification","classifier","computer-vision","computervision","convolutional-networks","convolutional-neural-networks","deep-learning","deeplearning","doodle-recognizer","image-classification","image-recognition","machine-learning","machinelearning","neural-network","recognition","tensorflow","tensorflow-tutorials","tensorflowjs"],"latest_commit_sha":null,"homepage":"https://www.askforgametask.com","language":"JavaScript","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/ssusnic.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-17T18:42:18.000Z","updated_at":"2025-04-03T22:31:41.000Z","dependencies_parsed_at":"2024-03-16T20:12:41.244Z","dependency_job_id":null,"html_url":"https://github.com/ssusnic/Machine-Learning-Doodle-Recognition","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ssusnic/Machine-Learning-Doodle-Recognition","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssusnic%2FMachine-Learning-Doodle-Recognition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssusnic%2FMachine-Learning-Doodle-Recognition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssusnic%2FMachine-Learning-Doodle-Recognition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssusnic%2FMachine-Learning-Doodle-Recognition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssusnic","download_url":"https://codeload.github.com/ssusnic/Machine-Learning-Doodle-Recognition/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssusnic%2FMachine-Learning-Doodle-Recognition/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270644738,"owners_count":24621332,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["artificial-intelligence","artificial-neural-networks","classification","classifier","computer-vision","computervision","convolutional-networks","convolutional-neural-networks","deep-learning","deeplearning","doodle-recognizer","image-classification","image-recognition","machine-learning","machinelearning","neural-network","recognition","tensorflow","tensorflow-tutorials","tensorflowjs"],"created_at":"2024-11-07T19:25:10.806Z","updated_at":"2025-08-15T23:07:54.406Z","avatar_url":"https://github.com/ssusnic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Machine Learning: How to make Quick Draw game using Convolutional Neural Network\n\nA Javascript Machine Learning Project on making a game like **Quick, Draw!**. It is an online game that challenges players to draw a doodle and then artificial intelligence guesses what the drawings represent.\n\nThis repo contains source code for implementing this game step by step.\n\nHere is the video in which I explained the entire project:  \nhttps://youtu.be/AsYczuDBGp0  \n\n\n## Project Info\n\nThe game is made in HTML5 using [Phaser 2 framework](https://phaser.io/) and [TensorFlow.js library](https://js.tensorflow.org/) for machine learning. \n\nTo classify images, I implemented an **Artificial Intelligence (AI)** based on **Machine Learning (ML)** and **Convolutional Neural Network (CNN)**.\n\nThe model was trained on a small subset of the [Quick Draw Dataset](https://quickdraw.withgoogle.com/data).\n\nHere is a screenshot of the fully completed project:  \n  \n![Doodle Predictor Screenshot](https://github.com/ssusnic/Machine-Learning-Doodle-Recognition/raw/master/screenshots/machine_learning_doodle_s1_640x360.png \"Doodle Predictor Screenshot\")\n\nTo play the game online, visit my official website:  \nhttps://www.askforgametask.com/tutorial/machine-learning/quick-draw/\n\nTo read more tutorials and play my other games, check the homepage:  \nhttps://www.askforgametask.com\n\n\n## Running the Game\n\nTo play this game locally, you need to run it in a browser using a local web server as follows:\n\n1. install, configure and run a web server: for instance, let's suppose your server is XAMPP installed in **C:\\Xampp** \n2. navigate to the server document root: **C:\\Xampp\\htdocs**\n3. create a new folder called 'doodle_predictor': **C:\\Xampp\\htdocs\\doodle_predictor**\n4. download the project\n5. copy all project files directly in **C:\\Xampp\\htdocs\\doodle_predictor**\n6. now you should have the following folder structure under **C:\\Xampp\\htdocs\\doodle_predictor**:  \n\t**\\assets** (with game resources)  \n\t**\\data** (with datasets)  \n\t**\\libs** (with libraries)  \n\t**\\part1** (with source files of the part 1)  \n\t...  \n\n7. open a web browser and navigate to the **http\\://localhost:\\\u003cport\\\u003e/doodle_predictor/part1**  \n  to run the game of the part 1\n\n\n## Parts of the Project\n\nThis project is divided into 8 parts. Each part contains a fully commented source code so you can easily follow the game development step by step.  \n\nHere are short descriptions of each part:\n\n\n## Part 1: Setup \n\n- creating the Main Program with the main state\n- defining all substates of the main state\n- building the basic game structure with the main loop where the entire game logic will be implemented\n- creating a new User Interface class to allow users an interaction with the game\n\n\n## Part 2: Getting Data\n \n- creating a new CNN class for implementing a Convolutional Neural Network model\n- loading three datasets (car, fish and snowman)\n- splitting datasets into training and test data\n- shuffling data\n\n\n## Part 3: Building the Model\n \n- creating a sequential CNN model\n- adding layers to the model\n- compiling the model\n\n\n## Part 4: Training the Model\n\n- fetching batches of data\n- training, testing and evaluating the model\n- plotting graphs of the model loss and accuracy during training\n\n\n## Part 5: Predicting Samples\n\n- fetching batches of samples \n- predicting fetched samples\n\n\n## Part 6: Drawing Doodles\n\n- creating a new Painter class to allow users to draw their own doodles with the mouse\n- defining painting objects: drawing area, bitmaps, pencil\n- adding a function for drawing a smooth line between two points using quadratic curves\n\n\n## Part 7: Recognizing Doodles\n\n- resizing doodle drawing to the required size of 28x28\n- normalizing array of pixels before passing it as the input of the CNN model\n- predicting doodle\n\n\n## Part 8: Adding More Doodle Categories\n\n- adding 10 doodle categories\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssusnic%2Fmachine-learning-doodle-recognition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssusnic%2Fmachine-learning-doodle-recognition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssusnic%2Fmachine-learning-doodle-recognition/lists"}