{"id":4151,"date":"2022-10-13T14:25:31","date_gmt":"2022-10-13T22:25:31","guid":{"rendered":"https:\/\/live-cometml.pantheonsite.io\/?p=4151"},"modified":"2025-04-24T17:17:09","modified_gmt":"2025-04-24T17:17:09","slug":"fixing-object-detection-models-with-better-data","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/","title":{"rendered":"Fixing Object Detection Models with Better Data"},"content":{"rendered":"\n<div class=\"ir is it iu iv\">\n<h2 id=\"caf7\" class=\"kn ko iy bm kp kq kr ks kt ku kv kw kx ke ky kf kz kh la ki lb kk lc kl ld le ga\">Introduction<\/h2>\n<p id=\"174f\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">Object detection tasks can be particularly tedious to debug. If you\u2019ve worked with large object detection datasets in the past, chances are you\u2019ve run into incorrectly labelled data or data that\u2019s missing labels that end up killing your evaluation metrics. Identifying these issues usually involves manually inspecting the individual problematic examples in your dataset.<\/p>\n<p id=\"2237\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">The other issue with object detection is that these models usually output multiple detection boxes for a given image, and evaluation metrics have to be calculated based on different threshold parameters that control the strictness of our detection criteria.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png\" alt=\"\" width=\"400\" height=\"273\"><\/figure><div class=\"gl gm mf\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/0*LfRdKfdqwyFRdG6E.png 640w, https:\/\/miro.medium.com\/max\/720\/0*LfRdKfdqwyFRdG6E.png 720w, https:\/\/miro.medium.com\/max\/750\/0*LfRdKfdqwyFRdG6E.png 750w, https:\/\/miro.medium.com\/max\/786\/0*LfRdKfdqwyFRdG6E.png 786w, https:\/\/miro.medium.com\/max\/828\/0*LfRdKfdqwyFRdG6E.png 828w, https:\/\/miro.medium.com\/max\/1100\/0*LfRdKfdqwyFRdG6E.png 1100w, https:\/\/miro.medium.com\/max\/800\/0*LfRdKfdqwyFRdG6E.png 800w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 400px\" data-testid=\"og\"><\/picture><\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Applying Non Max Suppression to Predicted Bounding Boxes to produce a Single Bounding Box Prediction<\/p>\n<p id=\"ad8d\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">The most important parameter in this case, is the Intersection over Union (IoU) threshold. This parameter controls the number of returned bounding boxes in the model\u2019s prediction via Non-Max Suppression (NMS), and it also determines how strictly we evaluate whether or not the model has detected a valid object.<\/p>\n<p id=\"4ec3\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">The Mean Average Precision (mAP) and Recall metrics for object detection models are usually reported at a particular IoU threshold.<\/p>\n<h2 id=\"66ca\" class=\"kn ko iy bm kp kq kr ks kt ku kv kw kx ke ky kf kz kh la ki lb kk lc kl ld le ga\">The Problem<\/h2>\n<p id=\"ba18\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">Let\u2019s say you\u2019re evaluating an Aerial Object Detection model based on drone data. You have a sense of how your model is performing at a particular IoU threshold, but you can\u2019t help wonder what would happen if you\u2019d tried a higher threshold value when running the evaluation?<\/p>\n<p id=\"33eb\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Additionally, you find that your evaluation dataset has examples of incorrectly labelled data that you\u2019d like to remove. What do you do then?<\/p>\n<p id=\"5249\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Ordinarily, these steps this would involve writing a script to remove bad examples from the dataset, and re-running your evaluation script or notebook with updated parameters. Depending on the size of the dataset and model, this can take quite a while. Also, if you\u2019re making edits to your dataset, you need to be able to track which examples are being removed or updated so that you can ensure you\u2019re not changing the distributions within your dataset.<\/p>\n<p id=\"af72\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Wouldn\u2019t it be nice if we could just upload our data and predictions somewhere, compute evaluation metrics in a more ad-hoc manner, identify bad data points, and update the dataset without having to change or write additional code?<\/p>\n<blockquote class=\"mq\"><p id=\"1288\" class=\"mr ms iy bm mt mu mv mw mx my mz lz cn\" data-selectable-paragraph=\"\">Wouldn\u2019t it be nice if we could just upload our data and predictions somewhere, compute evaluation metrics in a more ad-hoc manner, identify bad data points, and update the dataset without having to change or write additional code?<\/p><\/blockquote>\n<p id=\"05c9\" class=\"pw-post-body-paragraph lf lg iy bm b lh na jz lj lk nb kc lm ln nc lp lq lr nd lt lu lv ne lx ly lz ir ga\" data-selectable-paragraph=\"\">It used to take weeks of work to build a system like this. But in this post, I\u2019m going to show you how you can set up this system in an afternoon using&nbsp;<a class=\"au nf\" href=\"https:\/\/www.comet.com\/site\/artifacts\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Comet<\/a>&nbsp;and&nbsp;<a class=\"au nf\" href=\"https:\/\/www.aquariumlearning.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Aquarium<\/a>.<\/p>\n<p class=\"pw-post-body-paragraph lf lg iy bm b lh na jz lj lk nb kc lm ln nc lp lq lr nd lt lu lv ne lx ly lz ir ga\" data-selectable-paragraph=\"\"><a class=\"au nf\" href=\"https:\/\/www.aquariumlearning.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Aquarium<\/a>&nbsp;is an ML data management platform that focuses on improving models by providing tooling to explore and improve datasets.<\/p>\n<p class=\"pw-post-body-paragraph lf lg iy bm b lh na jz lj lk nb kc lm ln nc lp lq lr nd lt lu lv ne lx ly lz ir ga\" data-selectable-paragraph=\"\"><a class=\"au nf\" href=\"https:\/\/www.comet.com\/site\/data-scientists\/?utm_campaign=gradio-integration&amp;utm_medium=colab\" target=\"_blank\" rel=\"noopener ugc nofollow\">Comet<\/a>&nbsp;is an MLOps Platform that is designed to help Data Scientists and Teams build better models faster by providing tooling to track, explain, manage, and monitor models in a single place.<\/p>\n<h2 id=\"4e3a\" class=\"kn ko iy bm kp kq kr ks kt ku kv kw kx ke ky kf kz kh la ki lb kk lc kl ld le ga\">The Proposed Solution<\/h2>\n<p id=\"74b9\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">You can follow along with the steps to build this solution in this&nbsp;<a class=\"au nf\" href=\"https:\/\/colab.research.google.com\/drive\/1vJGs4AP77z4Ullw5DIMs2Y5BeZ-0nMjL?usp=sharing\" target=\"_blank\" rel=\"noopener ugc nofollow\">Colab Notebook<\/a><\/p>\n<p id=\"ec12\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Our objective is to build an evaluation system that lets us:<\/p>\n<ul class=\"\">\n<li id=\"f83c\" class=\"ng nh iy bm b lh ma lk mb ln ni lr nj lv nk lz nl nm nn no ga\" data-selectable-paragraph=\"\">Track the dataset that was used in the evaluation process<\/li>\n<li id=\"c4bb\" class=\"ng nh iy bm b lh np lk nq ln nr lr ns lv nt lz nl nm nn no ga\" data-selectable-paragraph=\"\">Explore this dataset as needed<\/li>\n<li id=\"a066\" class=\"ng nh iy bm b lh np lk nq ln nr lr ns lv nt lz nl nm nn no ga\" data-selectable-paragraph=\"\">Adjust metric thresholds when evaluating predictions<\/li>\n<li id=\"fb72\" class=\"ng nh iy bm b lh np lk nq ln nr lr ns lv nt lz nl nm nn no ga\" data-selectable-paragraph=\"\">Flexibly make updates to the dataset<\/li>\n<\/ul>\n<p id=\"c867\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">For this example, we\u2019re going to use the<a class=\"au nf\" href=\"https:\/\/captain-whu.github.io\/DOTA\/dataset.html\" target=\"_blank\" rel=\"noopener ugc nofollow\">&nbsp;DOTA dataset<\/a>&nbsp;and a pretrained object detection model based on FasterRCNN.<\/p>\n<h2 id=\"682c\" class=\"nu ko iy bm kp nv nw nx kt ny nz oa kx ln ob oc kz lr od oe lb lv of og ld oh ga\" data-selectable-paragraph=\"\">Tracking the Data with Comet Artifacts<\/h2>\n<p id=\"668e\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">The first thing we need is a way to track the data samples that we\u2019re going to use in our model evaluation.<\/p>\n<p id=\"918e\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Our entire dataset lives in a remote S3 bucket. The bucket includes a folder with images and a metadata file containing the annotations in the COCO format.<\/p>\n<p id=\"167f\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\"><a class=\"au nf\" href=\"https:\/\/colab.research.google.com\/drive\/1vJGs4AP77z4Ullw5DIMs2Y5BeZ-0nMjL#scrollTo=ED6CYPlMowBr\" target=\"_blank\" rel=\"noopener ugc nofollow\">We\u2019re going to sample 100 of these images and create an Artifact in Comet that tracks each image URL and metadata.<\/a><\/p>\n<p id=\"0a13\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\"><a class=\"au nf\" href=\"https:\/\/www.comet.com\/site\/announcing-comet-artifacts\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Comet Artifacts<\/a>&nbsp;is a tool that provides a convenient way to log, version, and browse data from all parts of their experimentation pipelines. It allows you to track and version local or remote datasets, ensuring that you know exactly what data your model used.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*fvqrBxyl5Uyq8_rjTdEfpQ.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\">Tracking the DOTA Dataset with Artifacts<\/p>\n<h2 id=\"6895\" class=\"nu ko iy bm kp nv nw nx kt ny nz oa kx ln ob oc kz lr od oe lb lv of og ld oh ga\" data-selectable-paragraph=\"\">Data Exploration With Aquarium<\/h2>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*FEcFv5DKlHyIScx3AUM1dQ.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*FEcFv5DKlHyIScx3AUM1dQ.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Exploring Individual Examples<\/p>\n<p id=\"78a0\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Aquarium allows you to view individual examples in the data, visualize the distribution of labels, and traverse the entire dataset using the built in embeddings viewer. Embeddings can be generated for the entire image, as well as for the individual objects present inside the bounding boxes.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*1SUTIU54zBOMrHKFb5QFfg.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*1SUTIU54zBOMrHKFb5QFfg.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*1SUTIU54zBOMrHKFb5QFfg.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*1SUTIU54zBOMrHKFb5QFfg.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*1SUTIU54zBOMrHKFb5QFfg.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*1SUTIU54zBOMrHKFb5QFfg.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*1SUTIU54zBOMrHKFb5QFfg.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*1SUTIU54zBOMrHKFb5QFfg.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Embedding Viewer<\/p>\n<p id=\"4f87\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Below, you can see how we use the embeddings viewer to highlight similar examples in the data. Highlighting images with swimming pools shows us a collection of pictures with a harbor. We can also see that one of images has not been correctly labelled. The image \u201c<strong class=\"bm on\">harbor 9950<\/strong>\u201d does not actually have a harbor in it. Other images in this sample could have issues, too. Let\u2019s try running our model on this data to find out.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*-YstmvBKUtD5ESLzLz9A6A.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*-YstmvBKUtD5ESLzLz9A6A.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*-YstmvBKUtD5ESLzLz9A6A.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*-YstmvBKUtD5ESLzLz9A6A.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*-YstmvBKUtD5ESLzLz9A6A.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*-YstmvBKUtD5ESLzLz9A6A.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*-YstmvBKUtD5ESLzLz9A6A.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*-YstmvBKUtD5ESLzLz9A6A.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\">Identifying Incorrectly Labeled Samples<\/p>\n<h2 id=\"9115\" class=\"nu ko iy bm kp nv nw nx kt ny nz oa kx ln ob oc kz lr od oe lb lv of og ld oh ga\" data-selectable-paragraph=\"\">Running an Evaluation With Artifacts<\/h2>\n<p id=\"c5d2\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">For this example, I\u2019ve already trained an object detection model using FasterRCNN and saved it as an&nbsp;<a class=\"au nf\" href=\"https:\/\/www.comet.com\/team-comet-ml\/artifacts\/dota-model\/1.0.0\" target=\"_blank\" rel=\"noopener ugc nofollow\">Artifact<\/a>. An Artifact Version is linked to the Comet Experiment that produced it, so you can easily view the model training metrics, hyperparameters, and training code that produced this model.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*p2M_5bmiAUTT3Dusi0CKDg.gif\" alt=\"\" width=\"700\" height=\"336\"><\/figure><div class=\"gl gm oo\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*p2M_5bmiAUTT3Dusi0CKDg.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Using Artifacts to track Model Information<\/p>\n<p id=\"b7bf\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\"><a class=\"au nf\" href=\"https:\/\/colab.research.google.com\/drive\/1vJGs4AP77z4Ullw5DIMs2Y5BeZ-0nMjL#scrollTo=M6JoAjdvTr3F\" target=\"_blank\" rel=\"noopener ugc nofollow\">We\u2019re going to fetch this model using Comet and log inferences from it to Aquarium.<\/a>&nbsp;Once these are logged, we can use the Model Metrics tab to compute evaluation metrics at any threshold we like\u2014we can also view the examples or label classes that the model is most confused by, and create issues to deal with problematic data points.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*s1jTOZXWiaLIpcDVnY0szg.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*s1jTOZXWiaLIpcDVnY0szg.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*s1jTOZXWiaLIpcDVnY0szg.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*s1jTOZXWiaLIpcDVnY0szg.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*s1jTOZXWiaLIpcDVnY0szg.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*s1jTOZXWiaLIpcDVnY0szg.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*s1jTOZXWiaLIpcDVnY0szg.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*s1jTOZXWiaLIpcDVnY0szg.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Evaluating Model Inferences in Aquarium<\/p>\n<p id=\"31f4\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">We can use the Confusion Matrix to drill down into the most problematic examples. Just select a cell in the Confusion Matrix and Aquarium will pull up a list of data points where the inference disagrees with the data. These data points are sorted based on their loss values. This allows us to quickly identify data points that might have labelling issues.<\/p>\n<p id=\"bee9\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Below we see examples that have the Ground Truth label set to \u201c<strong class=\"bm on\">background<\/strong>\u201d, but in fact have valid objects present inside the image. We can select these examples and add them to an Issue for missing labels.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*lGEIEMi_tBveOQT1DFKvog.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*lGEIEMi_tBveOQT1DFKvog.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*lGEIEMi_tBveOQT1DFKvog.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*lGEIEMi_tBveOQT1DFKvog.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*lGEIEMi_tBveOQT1DFKvog.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*lGEIEMi_tBveOQT1DFKvog.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*lGEIEMi_tBveOQT1DFKvog.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*lGEIEMi_tBveOQT1DFKvog.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p>&nbsp;<\/p>\n<h2 id=\"2d3b\" class=\"nu ko iy bm kp nv nw nx kt ny nz oa kx ln ob oc kz lr od oe lb lv of og ld oh ga\" data-selectable-paragraph=\"\">Updating an Artifact with Aquarium Webhooks<\/h2>\n<p id=\"c186\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">Now that we\u2019ve identified these problematic data points, let\u2019s remove them from our dataset.<\/p>\n<p id=\"ca46\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">Aquarium provides options for defining and running Webhooks based on specific events. In this example, we\u2019re going to modify the \u201cExport to Label\u201d Webhook to update the Artifact directly. Of course, we can also run the issue through a labelling service to fix the bad label before updating it, but we\u2019ll leave that for another time.<\/p>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif\" alt=\"\" width=\"700\" height=\"394\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*3Ia7Atw-jlIl6b0dVwXunQ.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Exporting the Issue to a Webhook<\/p>\n<p id=\"4525\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">This is the Webhook we\u2019re running in the backend. It extracts the problematic frame id,&nbsp;<code class=\"fp op oq or os b\">P0603__1.0__0___600.png<\/code>, and updates the Artifact to not include this image anymore.<\/p>\n<figure class=\"mg mh mi mj gx mk\">\n<div class=\"m fs l do\">\n<div class=\"ot ou l\"><\/div>\n<\/div>\n<\/figure>\n<figure class=\"mg mh mi mj gx mk gl gm paragraph-image\">\n<div class=\"oj ok do ol ce om\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"ce ml mm c aligncenter\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1050\/1*AAgKXb6no8k3ptoRXJP33g.gif\" alt=\"\" width=\"700\" height=\"349\"><\/figure><div class=\"gl gm oi\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*AAgKXb6no8k3ptoRXJP33g.gif 640w, https:\/\/miro.medium.com\/max\/720\/1*AAgKXb6no8k3ptoRXJP33g.gif 720w, https:\/\/miro.medium.com\/max\/750\/1*AAgKXb6no8k3ptoRXJP33g.gif 750w, https:\/\/miro.medium.com\/max\/786\/1*AAgKXb6no8k3ptoRXJP33g.gif 786w, https:\/\/miro.medium.com\/max\/828\/1*AAgKXb6no8k3ptoRXJP33g.gif 828w, https:\/\/miro.medium.com\/max\/1100\/1*AAgKXb6no8k3ptoRXJP33g.gif 1100w, https:\/\/miro.medium.com\/max\/1400\/1*AAgKXb6no8k3ptoRXJP33g.gif 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<p style=\"text-align: center;\" data-selectable-paragraph=\"\">Updating an Artifact via Webhook<\/p>\n<p id=\"c0ae\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">As you can see above, the problematic image has been removed from the sample Artifact.<\/p>\n<h2 id=\"25c8\" class=\"kn ko iy bm kp kq kr ks kt ku kv kw kx ke ky kf kz kh la ki lb kk lc kl ld le ga\">Takeaways<\/h2>\n<p id=\"83ec\" class=\"pw-post-body-paragraph lf lg iy bm b lh li jz lj lk ll kc lm ln lo lp lq lr ls lt lu lv lw lx ly lz ir ga\" data-selectable-paragraph=\"\">In this post, we created a system to evaluate an object detection model that can track the model and dataset sample used to creates the predictions, explore the predictions and data in an interactive way, evaluate the model metrics at various thresholds, identify issues in the data, and finally, update the sample dataset to remove these issues.<\/p>\n<p id=\"4321\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">This workflow allows you or your team to conduct model evaluations significantly faster, without having to write custom code or random one-off scripts. This makes it much easier to adopt, since this evaluation process can be standardized.<\/p>\n<\/div>\n\n\n\n<div class=\"ir is it iu iv\">\n<p id=\"27b2\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">If you\u2019d like to learn more about&nbsp;<strong class=\"bm on\">Aquarium<\/strong>, check out their&nbsp;<a class=\"au nf\" href=\"https:\/\/www.aquariumlearning.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">website<\/a>&nbsp;or&nbsp;<a class=\"au nf\" href=\"https:\/\/medium.com\/aquarium-learning\" rel=\"noopener\">blog<\/a>.<\/p>\n<p id=\"55a4\" class=\"pw-post-body-paragraph lf lg iy bm b lh ma jz lj lk mb kc lm ln mc lp lq lr md lt lu lv me lx ly lz ir ga\" data-selectable-paragraph=\"\">You can learn more about&nbsp;<strong class=\"bm on\">Comet<\/strong>&nbsp;or&nbsp;<a class=\"au nf\" href=\"https:\/\/www.comet.com\/site\/products\/artifacts-dataset-management\/\" target=\"_blank\" rel=\"noopener ugc nofollow\"><strong class=\"bm on\">Artifacts<\/strong><\/a>&nbsp;by checking out our&nbsp;<a class=\"au nf\" href=\"https:\/\/www.comet.com\/site\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">website<\/a> or <a href=\"https:\/\/www.comet.com\/site\/blog\/\">blog<\/a>!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Object detection tasks can be particularly tedious to debug. If you\u2019ve worked with large object detection datasets in the past, chances are you\u2019ve run into incorrectly labelled data or data that\u2019s missing labels that end up killing your evaluation metrics. Identifying these issues usually involves manually inspecting the individual problematic examples in your dataset. [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"customer_name":"","customer_description":"","customer_industry":"","customer_technologies":"","customer_logo":"","footnotes":""},"categories":[8,6],"tags":[],"coauthors":[128],"class_list":["post-4151","post","type-post","status-publish","format-standard","hentry","category-comet-community-hub","category-machine-learning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fixing Object Detection Models with Better Data - Comet<\/title>\n<meta name=\"description\" content=\"Object detection tasks can be particularly tedious to debug. Learn how to fix object detection models with better data.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fixing Object Detection Models with Better Data\" \/>\n<meta property=\"og:description\" content=\"Object detection tasks can be particularly tedious to debug. Learn how to fix object detection models with better data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/\" \/>\n<meta property=\"og:site_name\" content=\"Comet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cometdotml\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-13T22:25:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-24T17:17:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png\" \/>\n<meta name=\"author\" content=\"Dhruv Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Cometml\" \/>\n<meta name=\"twitter:site\" content=\"@Cometml\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dhruv Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fixing Object Detection Models with Better Data - Comet","description":"Object detection tasks can be particularly tedious to debug. Learn how to fix object detection models with better data.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/","og_locale":"en_US","og_type":"article","og_title":"Fixing Object Detection Models with Better Data","og_description":"Object detection tasks can be particularly tedious to debug. Learn how to fix object detection models with better data.","og_url":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2022-10-13T22:25:31+00:00","article_modified_time":"2025-04-24T17:17:09+00:00","og_image":[{"url":"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png","type":"","width":"","height":""}],"author":"Dhruv Nair","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Dhruv Nair","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/"},"author":{"name":"Team Comet Digital","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/6266601170c60a7a82b3e0043fbe8ddf"},"headline":"Fixing Object Detection Models with Better Data","datePublished":"2022-10-13T22:25:31+00:00","dateModified":"2025-04-24T17:17:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/"},"wordCount":1352,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png","articleSection":["Comet Community Hub","Machine Learning"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/","url":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/","name":"Fixing Object Detection Models with Better Data - Comet","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png","datePublished":"2022-10-13T22:25:31+00:00","dateModified":"2025-04-24T17:17:09+00:00","description":"Object detection tasks can be particularly tedious to debug. Learn how to fix object detection models with better data.","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#primaryimage","url":"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png","contentUrl":"https:\/\/miro.medium.com\/max\/600\/0*LfRdKfdqwyFRdG6E.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/fixing-object-detection-models-with-better-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"Fixing Object Detection Models with Better Data"}]},{"@type":"WebSite","@id":"https:\/\/www.comet.com\/site\/#website","url":"https:\/\/www.comet.com\/site\/","name":"Comet","description":"Build Better Models Faster","publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.comet.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.comet.com\/site\/#organization","name":"Comet ML, Inc.","alternateName":"Comet","url":"https:\/\/www.comet.com\/site\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","width":310,"height":310,"caption":"Comet ML, Inc."},"image":{"@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cometdotml","https:\/\/x.com\/Cometml","https:\/\/www.youtube.com\/channel\/UCmN63HKvfXSCS-UwVwmK8Hw"]},{"@type":"Person","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/6266601170c60a7a82b3e0043fbe8ddf","name":"Team Comet Digital","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/4f0c0a8cc7c0e87c636ff6a420a6647c","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/08\/Screen-Shot-2023-08-12-at-8.58.50-AM-96x96.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/08\/Screen-Shot-2023-08-12-at-8.58.50-AM-96x96.png","caption":"Team Comet Digital"},"sameAs":["https:\/\/www.comet.ml\/"],"url":"https:\/\/www.comet.com\/site\/blog\/author\/teamcometdigital\/"}]}},"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/4151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=4151"}],"version-history":[{"count":1,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/4151\/revisions"}],"predecessor-version":[{"id":15675,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/4151\/revisions\/15675"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=4151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=4151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=4151"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=4151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}