{
  "fetched_at": "2026-10-18T14:00:35Z",
  "source_url": "https://www.kaggle.com/competitions/early-detection-of-3d-printing-issues/data",
  "pages": [
    {
      "name": "data-description",
      "content": "The dataset contains pictures from 7 different 3D printers.\n\nEach 3D printer has 6-20 prints. A print contains a series of snapshots that are taken from the nozzle camera at a quick succession (about 0.5s apart).\n\nEach print is either a good print, or purposefully set to produce under extrusion. So **all labels for snapshots in the same print will be the same.**\n\n## Risk of overfitting\n\nBecause there are very limited number of 3D printers in the data set, it's very easy to build a ML model that overfits: it performs really well on the snapshots produced by one these printers, but fails miserably when we put it in production to make predictions on other printers that were not part of the dataset.\n\nIn order to prove the ML model doesn't overfit to the printers in the training set, we withheld 2 printers for test only:\n\n```\n021\n023\n```\n\nEven within the same printer, there is still the risk of overfitting: the model performs well for all the prints in the existing data set, but when a printer does a new print, the model will perform a lot worse. For this reason, we withheld several prints for test only:\n\n```\n101/1678343246\n101/1678578332\n102/1678744931\n102/1678764144\n103/1678831256\n103/1679011090\n104/1678452362\n104/1679222113\n```\n\n## A few ideas to counter overfitting\n\n*Note: This is by no means a definite guide to overcome the overfitting problem that we mentioned earlier. The ideas we listed here may not help at all. Instead of counting on them, you should use them as your inspiration.*\n\nhttps://papers.nips.cc/paper/2018/file/717d8b3d60d9eea997b35b02b6a4e867-Paper.pdf\nhttps://arxiv.org/abs/2208.07422\nhttps://towardsdatascience.com/deep-domain-adaptation-in-computer-vision-8da398d3167f\n\n## Files\n\n*   **train.csv** - The training data set\n*   **test.csv** - The test data set\n*   **sample_submission.csv** - A sample submission file in the correct format\n*   **images** - Folders for the images. The names of the folders are the printer ids.\n\n## Columns\n\n*   `img_path` - the path of the snapshot\n*   `printer_id` - the id of the 3D printer. The data with the same printer_id are guaranteed to be produced by the same printer. You may use this info **in your training** if the ML model you create tend to overfit one or some particular printers. However, since `printer_id` is highly correlated to the ground truth, **you are not allowed to use this info in testing**.\n*   `print_id` - the id of the print (see above for the definition of a \"print\"). The data with the same print_id are guaranteed to be from the same print. You may use this info **in your training** if the ML model you create tend to overfit one or some particular prints. However, since `print_id` is highly correlated to the ground truth, **you are not allowed to use this info in testing**.\n*    `has_under_extrusion`\n    * 1 - Under extrusion is present in this image.\n    * 0 - Under extrusion is **NOT** present in this image. This means this image shows a good print.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "# Goal of this competition\n\n3D printing is an innovative way to fabricate parts from any 3D geometry model. However, 3D printing is also known to be prone errors. Most of these errors are visible via a close-up camera mounted right near the printer nozzle.\n\nThe goal of this competition is to predict 1 specific kind of error - **under extrusion**.\n\n# Examples of **under extrusion**.\n\nIf you haven't done 3D printing before and you don't understand what **under extrusion** is, it's ok. You don't need intimate knowledge about 3D printing to participate in this competition. This section will give you everything you need to participate in this competition effectively.\n\n### A little background on 3D printing\n\nIn a nutshell, 3D printing is a process of pushing molten plastic through a small nozzle onto a print bed. This is illustrated in the picture below. Here is [a video that shows this process](https://youtu.be/_NN0MtbnrII).\n\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672779975.667825-1.jpg\"  width=640 style=\"display: block; margin: 0 auto\" />\n\n### What does a good 3D print looks like?\n\nWhen 3D printing goes well, the plastic will form smooth, continuous, and neat geometrical shapes. An example is below:\n\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672776329.535205.jpg\"  width=640 style=\"display: block; margin: 0 auto\" />\n\n\n### What does **under extrusion** looks like?\n\nWhen **under extrusion** happens, the plastic will have all kinds of artifacts, such as wrinkles, bubbles, curls, etc. The artifacts are marked by the red arrows in the example below:\n\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672795786.41987.jpg\"  width=640 style=\"display: block; margin: 0 auto\" />\n\n### More **under extrusion** examples\n\n<div style=\"flex-direction: row; display: flex; flex-wrap: wrap;\">\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1679010017.102943.jpg\"  width=300 /><img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672869233.10414.jpg\"  width=300 /><img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672793332.725275.jpg\"  width=300 />\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672794243.584641.jpg\"  width=300 />\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1678594775.145677.jpg\"  width=300 />\n</div>\n\n### **Under extrusion** may not always be obvious\n\nPlease be aware that the examples above were some of the most obvious. Most of the time, the **under extrusion** is less obvious. Some examples below:\n\n<div style=\"flex-direction: row; display: flex; flex-wrap: wrap;\">\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672859299.907916.jpg\"  width=300 /><img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672795105.25779.jpg\"  width=300 /><img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672869136.330449.jpg\"  width=300 />\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1678593814.141769.jpg\"  width=300 />\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1678593588.901188.jpg\"  width=300 />\n</div>\n\nSome times they will even look very like the good prints.\n\n<div style=\"flex-direction: row; display: flex; flex-wrap: wrap;\">\n<img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1672858029.370999.jpg\"  width=300 /><img src=\"https://storage.googleapis.com/obico-public/kaggle-contest-files/1678590815.334203.jpg\"  width=300 />\n</div>\n\n**It's important to keep in mind that there are plenty of pictures in the training and test dataset that are labelled as \"under extrusion\" but look very much like good prints.** Welcome to the messy real world. ;)\n\nFor this very reason, you are highly encourage to randomly sample data pictures from the training set and plot them so that you can build up some intuition between good prints and prints of under extrusion. This is a good practice for data scientists anyway.\n\n# Again, the goal of this competition\n\nNow you have some more background about the 3D printing problem we are trying to predict for this competition, let's make it more clear: the goal is to predict if a 3D printing picture shows any sign of under extrusion. This is binary classification problem. More specifically, this is an anomaly detection problem.\n\n# Prior researches\n\nThis competition is inspired by this paper: https://www.nature.com/articles/s41467-022-31985-y\n\nThe source code for this paper is: https://github.com/cam-cambridge/caxton\n\nHowever, a word of caution: this research is based on a very pure lab environment. It uses data from the printers that share the same setup and hence very close to each other. Our dataset is more diverse (from 7 printers that look distinct from each other).",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<p>Since this competition is a binary classification problem, we will use <b>F1 score</b> for evaluation.</p>\n\n<pre>F1 = 2 * (precision * recall) / (precision + recall)</pre>\n\n<p>\n<b>Positive:</b> has_under_extrusion=1\n</p>\n<p>\n<b>Negative:</b> has_under_extrusion=0\n</p>\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "- We don't have special rules. Just use common sense. If it feels like cheating, you are probably cheating. Your code will show it. So don't do it.\n- We believe open source is the best way to share knowledge! You will need to open source your code in order to receive prize. You can open source the code after the competition is over.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Timeline",
      "content": "We will keep this competition open for at least 4 weeks from March 23rd.\n\nWe will continuously evaluate all the submissions from all the candidates during this period. It is possible, although not likely, that we will identify a good candidate before the end of this 4-week period. If this is the case, we will notify all participants of this decision.\n\nEven if we make a hiring decision early, we will keep the competition open for 4 weeks. The prize will be given to the winner who score the highest at the end.\n\nWe may decide to keep this competition open for longer than 4 weeks if we see fit.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}