{"id":7386,"date":"2023-09-07T09:57:22","date_gmt":"2023-09-07T17:57:22","guid":{"rendered":"https:\/\/live-cometml.pantheonsite.io\/?p=7386"},"modified":"2025-04-24T17:14:25","modified_gmt":"2025-04-24T17:14:25","slug":"dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/","title":{"rendered":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong"},"content":{"rendered":"\n<link rel=\"canonical\" href=\"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\">\n\n\n\n<p><\/p>\n\n\n\n<div class=\"eo ep eq er es\">\n<div class=\"ab ca\">\n<div class=\"ch bg dx dy dz ea\">\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<div class=\"lx ly hb lz bg ma\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg\" alt=\"\" width=\"700\" height=\"467\"><\/figure><div class=\"lo lp lq\"><picture><\/picture><\/div>\n<\/div><figcaption class=\"md me mf lo lp mg mh be b bf z gi\" data-selectable-paragraph=\"\">Photo by <a class=\"af mi\" href=\"https:\/\/unsplash.com\/@srkraakmo?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener ugc nofollow\">Stephen Kraakmo<\/a> on <a class=\"af mi\" href=\"https:\/\/unsplash.com\/s\/photos\/filter?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener ugc nofollow\">Unsplash<\/a><\/figcaption><\/figure>\n<p id=\"9f27\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">Lack of large-scale labeled datasets is a severely limiting factor in training Deep Learning algorithms for Computer Vision. With the performance of CV models depending largely on how representative of real world scenarios the data points are, insufficient and incomplete data are often one of the largest limitations in extending AI to new domains and new use-cases.<\/p>\n<p id=\"c747\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">To a certain extent, data limitation issues can be addressed with the help of <strong class=\"be ne\">Data Augmentation<\/strong>, a process which entails the use of image processing-based algorithms to distort data within certain limits and increase the number of data points available. Augmentation is often necessary not only to increase the dataset size, but also to help the model generalize to images it has not seen before.<\/p>\n<p id=\"a4b7\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">When it comes to implementation, the most popular augmentation methods are those that include simple transformations. These include methods like Rotations, Image Shifts, and Horizontal and Vertical flips. To discuss how these transformations affect the dataset quality and how the deep learning model responds to them, we first need to understand some properties of CNNs that make these transforms imperative \u2014 even when the data is ample in quantity.<\/p>\n<h2 id=\"0b8a\" class=\"nf ng ev be nh ni nj nk nl nm nn no np mr nq nr ns mv nt nu nv mz nw nx ny nz bj\" data-selectable-paragraph=\"\">Translational Equivariance and Translational Invariance<\/h2>\n<ol class=\"\">\n<li id=\"9a8c\" class=\"mj mk ev be b ft oa mm mn fw ob mp mq oc od mt mu oe of mx my og oh nb nc nd oi oj ok bj\" data-selectable-paragraph=\"\"><em class=\"ol\">Translational Equivariance:<\/em><\/li>\n<\/ol>\n<p id=\"264f\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">A convolutional layer works by sliding an <code class=\"cw om on oo op b\">n<\/code> x <code class=\"cw om on oo op b\">n<\/code>kernel along the input image, from left to right and top to bottom, to form latent representations which are further processed using more convolutional blocks in deeper layers of the network. The sliding window operation allows the CNN to recognize spatial correlations and patterns and grants it an important property: translational equivariance. <strong class=\"be ne\">Translational equivariance<\/strong> says that when we shift the input by a corresponding amount, their latent space representations must shift accordingly. This is achieved through parameter sharing as the same kernel slides through the input image and the shift in the input is reflected in a corresponding shift in the latent space representation. While CNNs on one end are able to identify objects irrespective of their location, parameter sharing further enables them to identify multiple instances of an object in the same image as the same kernel is applied multiple times. A diagrammatic representation of translational equivariance is shown below:<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<div class=\"lx ly hb lz bg ma\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*3zA-R8Hq9G5QjKx3pYRyrg.png\" alt=\"\" width=\"700\" height=\"467\"><\/figure><div class=\"lo lp oq\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/format:webp\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 1400w\" type=\"image\/webp\" 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\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*3zA-R8Hq9G5QjKx3pYRyrg.png 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<figcaption class=\"md me mf lo lp mg mh be b bf z gi\" data-selectable-paragraph=\"\">Multiple instances of the object \u201cdog\u201d are identified irrespective of the translational shift<\/figcaption>\n<\/figure>\n<p id=\"3adc\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">2. <em class=\"ol\">Translational Invariance:<\/em><\/p>\n<p id=\"f865\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">Translational invariance, though often confused with translational equivariance is a property that convolutional layers do not possess. <strong class=\"be ne\">Translational invariance<\/strong> implies that the output from the CNN remains the same irrespective of any translational shift that the input goes through. What this effectively means is that if the object in the input is placed in a different location than it was in the training data, the CNN should still be able to detect and locate the object flawlessly. To achieve translational invariance, CNNs make use of pooling layers alternating with convolutional blocks. Pooling layers like max-pooling and average pooling are able to identify locations where neurons spike and filter out those representations as necessary in the final output. CNNs equipped with a max-pooling layer can thus detect objects that have undergone significant translational shift, as the relative location of the object in the image doesn\u2019t influence the corresponding output any more.<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:602\/0*ruNw0BedZevYZliA\" alt=\"\" width=\"602\" height=\"245\"><\/figure><div class=\"lo lp or\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/0*ruNw0BedZevYZliA 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/0*ruNw0BedZevYZliA 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/0*ruNw0BedZevYZliA 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/0*ruNw0BedZevYZliA 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/0*ruNw0BedZevYZliA 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/0*ruNw0BedZevYZliA 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1204\/0*ruNw0BedZevYZliA 1204w\" type=\"image\/webp\" 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, 602px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/0*ruNw0BedZevYZliA 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/0*ruNw0BedZevYZliA 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/0*ruNw0BedZevYZliA 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/0*ruNw0BedZevYZliA 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/0*ruNw0BedZevYZliA 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/0*ruNw0BedZevYZliA 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1204\/0*ruNw0BedZevYZliA 1204w\" 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, 602px\" data-testid=\"og\"><\/picture><\/div>\n<figcaption class=\"md me mf lo lp mg mh be b bf z gi\" data-selectable-paragraph=\"\">An example of translational invariance where the computer vision task is that of classification. Here, the object is classified as a \u201ccat\u201d irrespective of its location in the image.<\/figcaption>\n<\/figure>\n<p id=\"5240\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">The discussion of these CNN properties make it clear that a CNN can learn representations irrespective of their position in the image. Although CNNs are translation invariant and equivariant, they do not possess rotational or scale invariance. This means that if a network is presented with an image of an object that has been rotated or scaled in a manner it has not seen before, it may not be able to properly identify the object. Similar issues arise when the image undergoes color tone transformations. This has some serious consequences for the robustness of the CNN, and can make it inapplicable to real life scenarios in which color transformations and rotations are abundant.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"eo ep eq er es\">\n<div class=\"ab ca\">\n<div class=\"ch bg dx dy dz ea\">\n<blockquote class=\"pa\"><p id=\"c58e\" class=\"pb pc ev be pd pe pf pg ph pi pj nd gi\" data-selectable-paragraph=\"\">Want to see the evolution of AI-generated art projects? <a class=\"af mi\" href=\"https:\/\/www.comet.com\/team-comet-ml\/clipdraw\/view\/Y4aT3gy6IrPQKBi5wncFXCYLR?utm_campaign=clipdraw-gradio&amp;utm_source=blog&amp;utm_medium=summary\" target=\"_blank\" rel=\"noopener ugc nofollow\">Visit our public project<\/a> to see time-lapses, experiment evolutions, and more!<\/p><\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"ab ca os ot ou ov\" role=\"separator\"><span style=\"color: var(--wpex-text-2); font-family: var(--wpex-body-font-family, var(--wpex-font-sans)); font-size: var(--wpex-body-font-size, 13px);\">To make CNNs robust to transformations of this nature, we make use of augmentation techniques like rotations and color jitter, which modify the training data. While augmentations in rotation and scale can serve to enhance features learned by the CNN, augmentations that involve translational changes do not serve as major influencers in the training setup. Advanced augmentations including homographic transformations like perspective transforms and blur transformations, like the Gaussian Blur, can also be of particular help in certain scenarios. Here, we will take a look at some simple transforms with PyTorch, and how they can be chained together to create a transformation module that distorts images before they are fed to the network for training.<\/span><\/div>\n\n\n\n<div class=\"eo ep eq er es\">\n<div class=\"ab ca\">\n<div class=\"ch bg dx dy dz ea\">\n<p id=\"e27b\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\"><strong class=\"be ne\">Random Horizontal Flip \/ Random Vertical Flip:<\/strong> Random flip, as the name implies, flips the image randomly based on a certain probability (default probability is 0.5).<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:506\/1*4stZStbpu_pGSlDawWDdgg.png\" alt=\"\" width=\"698\" height=\"545\"><\/figure><div class=\"lo lp pk\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1012\/format:webp\/1*4stZStbpu_pGSlDawWDdgg.png 1012w\" type=\"image\/webp\" 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, 506px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*4stZStbpu_pGSlDawWDdgg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*4stZStbpu_pGSlDawWDdgg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*4stZStbpu_pGSlDawWDdgg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*4stZStbpu_pGSlDawWDdgg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*4stZStbpu_pGSlDawWDdgg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*4stZStbpu_pGSlDawWDdgg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1012\/1*4stZStbpu_pGSlDawWDdgg.png 1012w\" 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, 506px\" data-testid=\"og\"><\/picture><\/div>\n<\/figure>\n<p id=\"5322\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\"><strong class=\"be ne\">Color Jitter:<\/strong> Color jitter randomly alters the brightness and saturation of an image.<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:455\/1*ROaAtFQzXZArK5Iq5JF8dQ.png\" alt=\"\" width=\"699\" height=\"295\"><\/figure><div class=\"lo lp pl\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:910\/format:webp\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 910w\" type=\"image\/webp\" 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, 455px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:910\/1*ROaAtFQzXZArK5Iq5JF8dQ.png 910w\" 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, 455px\" data-testid=\"og\"><\/picture><\/div>\n<\/figure>\n<p id=\"8b79\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\"><strong class=\"be ne\">Random Affine Transform:<\/strong> Random affine transform performs random transformations that preserve the lines and parallelism of the image. Affine transforms include translation and scale.<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<div class=\"lx ly hb lz bg ma\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*Y5c8efgijiOK1tr5CZQemw.png\" alt=\"\" width=\"700\" height=\"171\"><\/figure><div class=\"lo lp pm\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/format:webp\/1*Y5c8efgijiOK1tr5CZQemw.png 1400w\" type=\"image\/webp\" 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\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*Y5c8efgijiOK1tr5CZQemw.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*Y5c8efgijiOK1tr5CZQemw.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*Y5c8efgijiOK1tr5CZQemw.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*Y5c8efgijiOK1tr5CZQemw.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*Y5c8efgijiOK1tr5CZQemw.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*Y5c8efgijiOK1tr5CZQemw.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*Y5c8efgijiOK1tr5CZQemw.png 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 id=\"d296\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\"><strong class=\"be ne\">Random Rotation:<\/strong> Random Rotation rotates the image with the upper and lower limit for rotation (which are defined with parameters).<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:471\/1*RblfWFdfu3gmf1-FTDNvPA.png\" alt=\"\" width=\"704\" height=\"287\"><\/figure><div class=\"lo lp pn\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:942\/format:webp\/1*RblfWFdfu3gmf1-FTDNvPA.png 942w\" type=\"image\/webp\" 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, 471px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*RblfWFdfu3gmf1-FTDNvPA.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*RblfWFdfu3gmf1-FTDNvPA.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*RblfWFdfu3gmf1-FTDNvPA.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*RblfWFdfu3gmf1-FTDNvPA.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*RblfWFdfu3gmf1-FTDNvPA.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*RblfWFdfu3gmf1-FTDNvPA.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:942\/1*RblfWFdfu3gmf1-FTDNvPA.png 942w\" 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, 471px\" data-testid=\"og\"><\/picture><\/div>\n<\/figure>\n<p id=\"19df\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">All of these methods can be combined and implemented with the <code class=\"cw om on oo op b\">Compose<\/code>module of <code class=\"cw om on oo op b\">torchvision<\/code>. The entire transform block can be written as:<\/p>\n<figure class=\"lr ls lt lu lv lw lo lp paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mb mc c\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:673\/1*Wnia5PFGva5jP44jPRqEmg.png\" alt=\"\" width=\"709\" height=\"295\"><\/figure><div class=\"lo lp po\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1346\/format:webp\/1*Wnia5PFGva5jP44jPRqEmg.png 1346w\" type=\"image\/webp\" 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, 673px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*Wnia5PFGva5jP44jPRqEmg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*Wnia5PFGva5jP44jPRqEmg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*Wnia5PFGva5jP44jPRqEmg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*Wnia5PFGva5jP44jPRqEmg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*Wnia5PFGva5jP44jPRqEmg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*Wnia5PFGva5jP44jPRqEmg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1346\/1*Wnia5PFGva5jP44jPRqEmg.png 1346w\" 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, 673px\" data-testid=\"og\"><\/picture><\/div>\n<\/figure>\n<p id=\"f3d2\" class=\"pw-post-body-paragraph mj mk ev be b ft ml mm mn fw mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd eo bj\" data-selectable-paragraph=\"\">The code from this section is available as a Colab notebook <a class=\"af mi\" href=\"https:\/\/colab.research.google.com\/drive\/1lbRpL6bLdc3gmqVeDV0oxH9a5Hi3FO9g?usp=sharing\" target=\"_blank\" rel=\"noopener ugc nofollow\">here<\/a>. Feel free to tinker with it to get a better idea of the different transform modules and their use. For more information, visit <a class=\"af mi\" href=\"https:\/\/pytorch.org\/vision\/stable\/auto_examples\/plot_transforms.html\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/pytorch.org\/vision\/stable\/auto_examples\/plot_transforms.html<\/a> from where most of the code is taken.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Photo by Stephen Kraakmo on Unsplash Lack of large-scale labeled datasets is a severely limiting factor in training Deep Learning algorithms for Computer Vision. With the performance of CV models depending largely on how representative of real world scenarios the data points are, insufficient and incomplete data are often one of the largest limitations in [&hellip;]<\/p>\n","protected":false},"author":85,"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":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"coauthors":[182],"class_list":["post-7386","post","type-post","status-publish","format-standard","hentry","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>Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong - Comet<\/title>\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\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong\" \/>\n<meta property=\"og:description\" content=\"Photo by Stephen Kraakmo on Unsplash Lack of large-scale labeled datasets is a severely limiting factor in training Deep Learning algorithms for Computer Vision. With the performance of CV models depending largely on how representative of real world scenarios the data points are, insufficient and incomplete data are often one of the largest limitations in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/\" \/>\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=\"2023-09-07T17:57:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-24T17:14:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg\" \/>\n<meta name=\"author\" content=\"Hmrishav Bandyopadhyay\" \/>\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=\"Hmrishav Bandyopadhyay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong - Comet","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\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/","og_locale":"en_US","og_type":"article","og_title":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong","og_description":"Photo by Stephen Kraakmo on Unsplash Lack of large-scale labeled datasets is a severely limiting factor in training Deep Learning algorithms for Computer Vision. With the performance of CV models depending largely on how representative of real world scenarios the data points are, insufficient and incomplete data are often one of the largest limitations in [&hellip;]","og_url":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2023-09-07T17:57:22+00:00","article_modified_time":"2025-04-24T17:14:25+00:00","og_image":[{"url":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg","type":"","width":"","height":""}],"author":"Hmrishav Bandyopadhyay","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Hmrishav Bandyopadhyay","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/"},"author":{"name":"Hmrishav Bandyopadhyay","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/bdf282b33034d8d5e6c4080eae08edc9"},"headline":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong","datePublished":"2023-09-07T17:57:22+00:00","dateModified":"2025-04-24T17:14:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/"},"wordCount":973,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg","articleSection":["Machine Learning"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/","url":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/","name":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong - Comet","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg","datePublished":"2023-09-07T17:57:22+00:00","dateModified":"2025-04-24T17:14:25+00:00","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#primaryimage","url":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg","contentUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*qT1neFLaujBFT3IyFsV9vQ.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/dataset-augmentation-for-computer-vision-and-why-you-might-be-doing-it-wrong\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"Dataset Augmentation for Computer Vision and Why You Might Be Doing It Wrong"}]},{"@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\/bdf282b33034d8d5e6c4080eae08edc9","name":"Hmrishav Bandyopadhyay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/e185b30bff002f961bcd55e120c9265f","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/09\/cropped-Screen-Shot-2023-09-10-at-10.04.17-AM-96x96.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/09\/cropped-Screen-Shot-2023-09-10-at-10.04.17-AM-96x96.png","caption":"Hmrishav Bandyopadhyay"},"url":"https:\/\/www.comet.com\/site\/blog\/author\/hmrishavbandyopadhyaygmail-com\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/7386","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\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=7386"}],"version-history":[{"count":1,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/7386\/revisions"}],"predecessor-version":[{"id":15561,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/7386\/revisions\/15561"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=7386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=7386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=7386"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=7386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}