{
  "id": 308007,
  "title": "5th place solution, poisson blending,detection and tracking",
  "url": "/competitions/tensorflow-great-barrier-reef/writeups/bestfitting-5th-place-solution-poisson-blending-de",
  "author_name": "",
  "post_date": "2022-02-24T03:47:20.130Z",
  "votes": 141,
  "comment_count": 26,
  "views": 0,
  "content": "<p>Congrats to all the winners, and thanks to organizers.</p>\n<p>The following ideas and methods helped me survive from this challenging competition.<br>\n1.Copy COTS box and paste into background image, apply poisson blending.<br>\n2.Several detection models training and inference with different image sizes.<br>\n3.Appending boxes to detection results by finding homography matrix.<br>\n4.Trust Local CV.</p>\n<h2>Data</h2>\n<p>As the dataset is relative small, if we have more samples we can benefit from them.<br>\nWe can generate more star fishes and put them in different under-sea images.<br>\n<img src=\"https://i.imgur.com/eRzAF1s.png\" alt=\"poisson.png\"></p>\n<p>The simplest way is to crop the star fishes in train-set and paste it to other images, but we can find two obvious problems.<br>\n1.The boundary and color is not real.<br>\n2.The COTS is not on reasonable places.</p>\n<p>I solved these two problems by:</p>\n<p>1.Poisson blending<br>\n2.Training a classification model to predict whether a box with COTS is real or fake.</p>\n<p>This idea helped me to improve the score.</p>\n<p>I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. <br>\nI think it’s limited by the count of unique star fishes are small, if we can use more COTS downloaded from internet, I guess we could improve the score. I am not sure whether an image is allowed to use or not, so I did not use any of them. <br>\nOther methods such as image harmonization did not bring  improvement.  <br>\nAnyway, despite quite a lot of time spent without too many gains in this competition, I quite enjoyed it.</p>\n<h2>Model training</h2>\n<p><strong>Validation Strategy</strong><br>\nSplit 5 folds by sequence</p>\n<p><strong>Models</strong><br>\nYOLOv5-S6, YOLOv5-M6, YOLOv5-L6, YOLOX-L, YOLOR-P6 and HRNetV2P-W18</p>\n<p><strong>Training details</strong><br>\nYOLOv5: <br>\nNetwork: YOLOv5-S6, YOLOv5-M6, YOLOv5-L6<br>\nTraining-size: 3600<br>\nInference-Size: 4800<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + Linear LR + lr=0.01 + 15 epochs<br>\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose</p>\n<p>YOLOX:<br>\nNetwork: YOLOX-L<br>\nTraining-size: 1280<br>\nInference-Size: 1600<br>\nOptimizer: SGD<br>\nScheduler: yoloxwarmcos + 20 epochs<br>\nAugmentation: hsv, flip, degrees, translate, shear, mosaic, mixup, no_aug_epochs=5</p>\n<p>YOLOR:<br>\nNetwork: YOLOR-P6<br>\nTraining-size: 2560<br>\nInference-Size: 2560<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + Linear LR + lr=0.005 + 15 epochs<br>\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose</p>\n<p>HRNet:<br>\nNetwork: HRNetV2P-W18<br>\nTraining-size: 3600<br>\nInference-Size: 3600<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + linear LR + lr=0.02 + 10 epochs<br>\nAugmentation: Resize, RandomFlip</p>\n<h2>Tracking</h2>\n<p>If the detection model has found a box in  previous frames and we can predict the box in the current frame by the following way:<br>\n1.Kalman Filter<br>\n2.Optic Flow<br>\n3.Finding homography matrix and then apply the matrix to get the box in the current frame.</p>\n<p>I find the third method is the best for this dataset.<br>\nWe can get keypoint descriptors by using SuperPoint/SuperGlue and then find homography matrix.</p>\n<p><strong>The Tracking pipeline is:</strong><br>\n1.If there is a box detected a frame t-10, then append a box using the homography matrix to frame t-9 unless there already a box is there(IOU greater than 0.4). Then repeat this procedure from t-9 until current frame.<br>\n2.Apply DeepSort to get a track.<br>\n3.Determining a box on a track is kept or not by the ratio of the model predicted boxes. If the ratio is too low, the track may be False Positive.</p>\n<h2>Ensemble</h2>\n<p>Calculating IOU between the boxes which predicted by different models in an image.<br>\nIf max IOU with other boxes of a box is less than 0.55,then drop this box.<br>\nThe remaining boxes are ensembled using WBF.</p>\n<h2>Results</h2>\n<p><img src=\"https://i.imgur.com/p2iHvpi.png\" alt=\"result1.png\"><br>\n<img src=\"https://i.imgur.com/6Hm3GRQ.png\" alt=\"result2.png\"></p>",
  "messages": [
    {
      "id": "1693417",
      "postDate": "02/16/2022 16:56:01",
      "content": "<p>Congrats to all the winners, and thanks to organizers.</p>\n<p>The following ideas and methods helped me survive from this challenging competition.<br>\n1.Copy COTS box and paste into background image, apply poisson blending.<br>\n2.Several detection models training and inference with different image sizes.<br>\n3.Appending boxes to detection results by finding homography matrix.<br>\n4.Trust Local CV.</p>\n<h2>Data</h2>\n<p>As the dataset is relative small, if we have more samples we can benefit from them.<br>\nWe can generate more star fishes and put them in different under-sea images.<br>\n<img src=\"https://i.imgur.com/eRzAF1s.png\" alt=\"poisson.png\"></p>\n<p>The simplest way is to crop the star fishes in train-set and paste it to other images, but we can find two obvious problems.<br>\n1.The boundary and color is not real.<br>\n2.The COTS is not on reasonable places.</p>\n<p>I solved these two problems by:</p>\n<p>1.Poisson blending<br>\n2.Training a classification model to predict whether a box with COTS is real or fake.</p>\n<p>This idea helped me to improve the score.</p>\n<p>I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. <br>\nI think it’s limited by the count of unique star fishes are small, if we can use more COTS downloaded from internet, I guess we could improve the score. I am not sure whether an image is allowed to use or not, so I did not use any of them. <br>\nOther methods such as image harmonization did not bring  improvement.  <br>\nAnyway, despite quite a lot of time spent without too many gains in this competition, I quite enjoyed it.</p>\n<h2>Model training</h2>\n<p><strong>Validation Strategy</strong><br>\nSplit 5 folds by sequence</p>\n<p><strong>Models</strong><br>\nYOLOv5-S6, YOLOv5-M6, YOLOv5-L6, YOLOX-L, YOLOR-P6 and HRNetV2P-W18</p>\n<p><strong>Training details</strong><br>\nYOLOv5: <br>\nNetwork: YOLOv5-S6, YOLOv5-M6, YOLOv5-L6<br>\nTraining-size: 3600<br>\nInference-Size: 4800<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + Linear LR + lr=0.01 + 15 epochs<br>\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose</p>\n<p>YOLOX:<br>\nNetwork: YOLOX-L<br>\nTraining-size: 1280<br>\nInference-Size: 1600<br>\nOptimizer: SGD<br>\nScheduler: yoloxwarmcos + 20 epochs<br>\nAugmentation: hsv, flip, degrees, translate, shear, mosaic, mixup, no_aug_epochs=5</p>\n<p>YOLOR:<br>\nNetwork: YOLOR-P6<br>\nTraining-size: 2560<br>\nInference-Size: 2560<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + Linear LR + lr=0.005 + 15 epochs<br>\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose</p>\n<p>HRNet:<br>\nNetwork: HRNetV2P-W18<br>\nTraining-size: 3600<br>\nInference-Size: 3600<br>\nOptimizer: SGD<br>\nScheduler: Warm Up + linear LR + lr=0.02 + 10 epochs<br>\nAugmentation: Resize, RandomFlip</p>\n<h2>Tracking</h2>\n<p>If the detection model has found a box in  previous frames and we can predict the box in the current frame by the following way:<br>\n1.Kalman Filter<br>\n2.Optic Flow<br>\n3.Finding homography matrix and then apply the matrix to get the box in the current frame.</p>\n<p>I find the third method is the best for this dataset.<br>\nWe can get keypoint descriptors by using SuperPoint/SuperGlue and then find homography matrix.</p>\n<p><strong>The Tracking pipeline is:</strong><br>\n1.If there is a box detected a frame t-10, then append a box using the homography matrix to frame t-9 unless there already a box is there(IOU greater than 0.4). Then repeat this procedure from t-9 until current frame.<br>\n2.Apply DeepSort to get a track.<br>\n3.Determining a box on a track is kept or not by the ratio of the model predicted boxes. If the ratio is too low, the track may be False Positive.</p>\n<h2>Ensemble</h2>\n<p>Calculating IOU between the boxes which predicted by different models in an image.<br>\nIf max IOU with other boxes of a box is less than 0.55,then drop this box.<br>\nThe remaining boxes are ensembled using WBF.</p>\n<h2>Results</h2>\n<p><img src=\"https://i.imgur.com/p2iHvpi.png\" alt=\"result1.png\"><br>\n<img src=\"https://i.imgur.com/6Hm3GRQ.png\" alt=\"result2.png\"></p>",
      "rawMarkdown": "Congrats to all the winners, and thanks to organizers.\n\nThe following ideas and methods helped me survive from this challenging competition.\n1.Copy COTS box and paste into background image, apply poisson blending.\n2.Several detection models training and inference with different image sizes.\n3.Appending boxes to detection results by finding homography matrix.\n4.Trust Local CV.\n\n## Data\nAs the dataset is relative small, if we have more samples we can benefit from them.\nWe can generate more star fishes and put them in different under-sea images.\n![poisson.png](https://i.imgur.com/eRzAF1s.png)\n\nThe simplest way is to crop the star fishes in train-set and paste it to other images, but we can find two obvious problems.\n1.The boundary and color is not real.\n2.The COTS is not on reasonable places.\n\nI solved these two problems by:\n\n1.Poisson blending\n2.Training a classification model to predict whether a box with COTS is real or fake.\n\nThis idea helped me to improve the score.\n\nI did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. \nI think it’s limited by the count of unique star fishes are small, if we can use more COTS downloaded from internet, I guess we could improve the score. I am not sure whether an image is allowed to use or not, so I did not use any of them. \nOther methods such as image harmonization did not bring  improvement.  \nAnyway, despite quite a lot of time spent without too many gains in this competition, I quite enjoyed it.\n\n## Model training\n\n**Validation Strategy**\nSplit 5 folds by sequence\n\n**Models**\nYOLOv5-S6, YOLOv5-M6, YOLOv5-L6, YOLOX-L, YOLOR-P6 and HRNetV2P-W18\n\n**Training details**\nYOLOv5: \nNetwork: YOLOv5-S6, YOLOv5-M6, YOLOv5-L6\nTraining-size: 3600\nInference-Size: 4800\nOptimizer: SGD\nScheduler: Warm Up + Linear LR + lr=0.01 + 15 epochs\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose\n\nYOLOX:\nNetwork: YOLOX-L\nTraining-size: 1280\nInference-Size: 1600\nOptimizer: SGD\nScheduler: yoloxwarmcos + 20 epochs\nAugmentation: hsv, flip, degrees, translate, shear, mosaic, mixup, no_aug_epochs=5\n\nYOLOR:\nNetwork: YOLOR-P6\nTraining-size: 2560\nInference-Size: 2560\nOptimizer: SGD\nScheduler: Warm Up + Linear LR + lr=0.005 + 15 epochs\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose\n\nHRNet:\nNetwork: HRNetV2P-W18\nTraining-size: 3600\nInference-Size: 3600\nOptimizer: SGD\nScheduler: Warm Up + linear LR + lr=0.02 + 10 epochs\nAugmentation: Resize, RandomFlip\n\n## Tracking\nIf the detection model has found a box in  previous frames and we can predict the box in the current frame by the following way:\n1.Kalman Filter\n2.Optic Flow\n3.Finding homography matrix and then apply the matrix to get the box in the current frame.\n\nI find the third method is the best for this dataset.\nWe can get keypoint descriptors by using SuperPoint/SuperGlue and then find homography matrix.\n\n**The Tracking pipeline is:**\n1.If there is a box detected a frame t-10, then append a box using the homography matrix to frame t-9 unless there already a box is there(IOU greater than 0.4). Then repeat this procedure from t-9 until current frame.\n2.Apply DeepSort to get a track.\n3.Determining a box on a track is kept or not by the ratio of the model predicted boxes. If the ratio is too low, the track may be False Positive.\n\n## Ensemble\nCalculating IOU between the boxes which predicted by different models in an image.\nIf max IOU with other boxes of a box is less than 0.55,then drop this box.\nThe remaining boxes are ensembled using WBF.\n\n\n## Results\n![result1.png](https://i.imgur.com/p2iHvpi.png)\n![result2.png](https://i.imgur.com/6Hm3GRQ.png)",
      "votes": null
    },
    {
      "id": "1693478",
      "postDate": "02/16/2022 17:38:01",
      "content": "<p>Thanks for sharing your solution! 🙏</p>\n<blockquote>\n  <p>I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. </p>\n</blockquote>\n<p>May I ask what models were you using and what approaches were you taking? I was thinking about following this for the whale competition where many classes have just 1 image. </p>\n<p>TIA!</p>",
      "rawMarkdown": "Thanks for sharing your solution! 🙏\n\n> I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. \n\nMay I ask what models were you using and what approaches were you taking? I was thinking about following this for the whale competition where many classes have just 1 image. \n\nTIA!",
      "votes": null
    },
    {
      "id": "1693484",
      "postDate": "02/16/2022 17:40:09",
      "content": "<p>GAN augmentation only seems to work in papers, I also never made it work for models, they are clever enough. Only solution I ever saw it work was in Bengali.</p>",
      "rawMarkdown": "GAN augmentation only seems to work in papers, I also never made it work for models, they are clever enough. Only solution I ever saw it work was in Bengali.",
      "votes": null
    },
    {
      "id": "1693518",
      "postDate": "02/16/2022 17:57:02",
      "content": "<p>Oh wow-I didn't know about the Bengali competition. I found the <a href=\"https://www.kaggle.com/c/bengaliai-cv19/discussion/135984\" target=\"_blank\">writeup</a> by the winning team incase anyone reading here is interested. </p>\n<p>Thank you, Psi 🦁! 🍵</p>",
      "rawMarkdown": "Oh wow-I didn't know about the Bengali competition. I found the [writeup](https://www.kaggle.com/c/bengaliai-cv19/discussion/135984) by the winning team incase anyone reading here is interested. \n\nThank you, Psi 🦁! 🍵",
      "votes": null
    },
    {
      "id": "1693529",
      "postDate": "02/16/2022 18:07:28",
      "content": "<p>Hey <a href=\"https://www.kaggle.com/init27\" target=\"_blank\">@init27</a>, StyleGAN2, I tried many models in <a href=\"https://www.kaggle.com/c/generative-dog-images\" target=\"_blank\">https://www.kaggle.com/c/generative-dog-images</a> competition and followed progresses after that. The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems. </p>",
      "rawMarkdown": "Hey @init27, StyleGAN2, I tried many models in https://www.kaggle.com/c/generative-dog-images competition and followed progresses after that. The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.",
      "votes": null
    },
    {
      "id": "1693556",
      "postDate": "02/16/2022 18:26:58",
      "content": "<p>is there a paper or code reference for poisson blending? nice tabulation of results!</p>",
      "rawMarkdown": "is there a paper or code reference for poisson blending? nice tabulation of results!",
      "votes": null
    },
    {
      "id": "1693838",
      "postDate": "02/17/2022 02:04:00",
      "content": "<p>Great job, tkx</p>",
      "rawMarkdown": "Great job, tkx",
      "votes": null
    },
    {
      "id": "1694195",
      "postDate": "02/17/2022 08:36:07",
      "content": "<blockquote>\n  <p>Training a classification model to predict whether a box with COTS is real or fake.</p>\n</blockquote>\n<p>Can this part describe the process in detail?</p>\n<ol>\n<li>How to construct the target of training data, first pass copy-paste and then manually select whether it is real or fake?</li>\n<li>What model was chosen?</li>\n<li>Is it to classify the whole image, or only the bbox?</li>\n<li>proportion of generated data to original data, then fold all data?</li>\n</ol>\n<p>If you have relevant code for reference, it would be greatly appreciated.</p>",
      "rawMarkdown": "> Training a classification model to predict whether a box with COTS is real or fake.\n\nCan this part describe the process in detail?\n1. How to construct the target of training data, first pass copy-paste and then manually select whether it is real or fake?\n2. What model was chosen?\n3. Is it to classify the whole image, or only the bbox?\n4. proportion of generated data to original data, then fold all data?\n\nIf you have relevant code for reference, it would be greatly appreciated.",
      "votes": null
    },
    {
      "id": "1694291",
      "postDate": "02/17/2022 10:22:33",
      "content": "<p><a href=\"https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf\" target=\"_blank\">https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf</a><br>\n<a href=\"https://github.com/PPPW/poisson-image-editing\" target=\"_blank\">https://github.com/PPPW/poisson-image-editing</a></p>",
      "rawMarkdown": "https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf\nhttps://github.com/PPPW/poisson-image-editing",
      "votes": null
    },
    {
      "id": "1694300",
      "postDate": "02/17/2022 10:28:18",
      "content": "<ol>\n<li><p>The bbox in training set is real, so the target is 1, the poisson blending COTS boxes is fake, the target is 0.</p></li>\n<li><p>Any classification model is OK for this task, such resnet34.</p></li>\n<li><p>bbox, resize to 64x64.</p></li>\n<li><p>1.4k fake images</p></li>\n</ol>",
      "rawMarkdown": "1.  The bbox in training set is real, so the target is 1, the poisson blending COTS boxes is fake, the target is 0.\n\n2. Any classification model is OK for this task, such resnet34.\n\n3. bbox, resize to 64x64.\n4. 1.4k fake images",
      "votes": null
    },
    {
      "id": "1694530",
      "postDate": "02/17/2022 13:52:14",
      "content": "<p>OpenCV supports poisson blending as <code>seamlessClone</code>.<br>\n<a href=\"https://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d\" target=\"_blank\">https://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d</a><br>\n<a href=\"https://learnopencv.com/seamless-cloning-using-opencv-python-cpp/\" target=\"_blank\">https://learnopencv.com/seamless-cloning-using-opencv-python-cpp/</a></p>",
      "rawMarkdown": "OpenCV supports poisson blending as `seamlessClone`.\nhttps://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d\nhttps://learnopencv.com/seamless-cloning-using-opencv-python-cpp/",
      "votes": null
    },
    {
      "id": "1695659",
      "postDate": "02/18/2022 09:37:15",
      "content": "<p>Congraatulations🤩🤩Thanks for sharing your code <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> , feel free to check out my <a href=\"https://www.kaggle.com/arunasivapragasam/notebooks\" target=\"_blank\">notebooks</a> as well  😊</p>",
      "rawMarkdown": "Congraatulations🤩🤩Thanks for sharing your code @bestfitting , feel free to check out my [notebooks](https://www.kaggle.com/arunasivapragasam/notebooks) as well  😊",
      "votes": null
    },
    {
      "id": "1696366",
      "postDate": "02/18/2022 19:22:55",
      "content": "<p>So from what I understand <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a>, to increase the data on which model can train, you created a script that copies and paste the starfish on different video at a different location and then use poison blending so that it fits in that background. Is that right?</p>",
      "rawMarkdown": "So from what I understand @bestfitting, to increase the data on which model can train, you created a script that copies and paste the starfish on different video at a different location and then use poison blending so that it fits in that background. Is that right?",
      "votes": null
    },
    {
      "id": "1696602",
      "postDate": "02/19/2022 00:41:04",
      "content": "<p><a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> from github link it seems we need <strong>mask</strong> to do image poissioning, how did you get the mask?<br>\n<img src=\"https://github.com/PPPW/poisson-image-editing/raw/master/figs/example1/all.png\" alt=\"\"></p>",
      "rawMarkdown": "bestfitting from github link it seems we need **mask** to do image poissioning, how did you get the mask?\n![](https://github.com/PPPW/poisson-image-editing/raw/master/figs/example1/all.png)",
      "votes": null
    },
    {
      "id": "1696698",
      "postDate": "02/19/2022 03:32:12",
      "content": "<p>I think we should fill the box containing COTS with 255 to generate the mask. <br>\nbtw, I did not use the lib indeed, I gave you as reference.</p>",
      "rawMarkdown": "I think we should fill the box containing COTS with 255 to generate the mask. \nbtw, I did not use the lib indeed, I gave you as reference.",
      "votes": null
    },
    {
      "id": "1696700",
      "postDate": "02/19/2022 03:33:52",
      "content": "<p>yes! Then I selected the generated COTS with different backgroud using the classification model.</p>",
      "rawMarkdown": "yes! Then I selected the generated COTS with different backgroud using the classification model.",
      "votes": null
    },
    {
      "id": "1698109",
      "postDate": "02/20/2022 06:35:18",
      "content": "<p>The poisson blending method is very interesting, and seems like a traditional CV-like GAN to me.</p>\n<p>How did you train the discriminator (classifier) for your pipeline?</p>",
      "rawMarkdown": "The poisson blending method is very interesting, and seems like a traditional CV-like GAN to me.\n\nHow did you train the discriminator (classifier) for your pipeline?",
      "votes": null
    },
    {
      "id": "1698229",
      "postDate": "02/20/2022 08:14:55",
      "content": "<p>The box containing real COTS as positive sample, the box containing fake/blending COTS as negative sample, training a binary classification model(Resnet34). Then use this model to predict a  fake sample, if the score as positive sample is high, then use this fake sample.</p>",
      "rawMarkdown": "The box containing real COTS as positive sample, the box containing fake/blending COTS as negative sample, training a binary classification model(Resnet34). Then use this model to predict a  fake sample, if the score as positive sample is high, then use this fake sample.",
      "votes": null
    },
    {
      "id": "1698555",
      "postDate": "02/20/2022 13:34:33",
      "content": "<p><a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> I saw that how did you train the classification model to classify fake and real and at the end you got 1.4k fake images but how did you annotate 1.4 fake images for bbox? How did you resize bbox to 64x64?</p>",
      "rawMarkdown": "bestfitting I saw that how did you train the classification model to classify fake and real and at the end you got 1.4k fake images but how did you annotate 1.4 fake images for bbox? How did you resize bbox to 64x64?",
      "votes": null
    },
    {
      "id": "1698698",
      "postDate": "02/20/2022 15:31:14",
      "content": "<p>I generated many many fake images by using copy&amp;paste then poisson blending, then selected 1.4k of them by the model.<br>\nSince the fake image is generated by pasting COTS to a background, the backgroud itself can be patch with size 64x64 or large, after we paste the COTS to it ,then resize to 64x64.</p>",
      "rawMarkdown": "I generated many many fake images by using copy&paste then poisson blending, then selected 1.4k of them by the model.\nSince the fake image is generated by pasting COTS to a background, the backgroud itself can be patch with size 64x64 or large, after we paste the COTS to it ,then resize to 64x64.",
      "votes": null
    },
    {
      "id": "1699134",
      "postDate": "02/21/2022 00:16:41",
      "content": "<p>Thank you for sharing</p>",
      "rawMarkdown": "Thank you for sharing",
      "votes": null
    },
    {
      "id": "1702354",
      "postDate": "02/23/2022 14:40:37",
      "content": "<p>A novel idea. I want to be able to master it</p>",
      "rawMarkdown": "A novel idea. I want to be able to master it",
      "votes": null
    },
    {
      "id": "1718534",
      "postDate": "03/10/2022 23:26:20",
      "content": "<blockquote>\n  <p>\"The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.\"</p>\n</blockquote>\n<p>Hi, <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a>. congrats! We have some agreement on this.<br>\n1) GAN doesn't work for this. According to information theory, you train the GAN by these photos; then generate photos again? Actually, these two photo sets have the same \"information size\", nothing more.<br>\n2) image blending works. I agree.</p>",
      "rawMarkdown": "> \"The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.\"\n\nHi, @bestfitting. congrats! We have some agreement on this.\n1) GAN doesn't work for this. According to information theory, you train the GAN by these photos; then generate photos again? Actually, these two photo sets have the same \"information size\", nothing more.\n2) image blending works. I agree.",
      "votes": null
    },
    {
      "id": "1719073",
      "postDate": "03/11/2022 12:57:09",
      "content": "<p>hey,<br>\nIf we paste a generated COTS to other background, it's will help our models as an augmentation method.<br>\nI had planed to use other COTS from internet to generate samples, but was not sure whether an image or a video is permitted to use or not and I am very busy during this competition, so I did not use any of them.</p>",
      "rawMarkdown": "hey,\nIf we paste a generated COTS to other background, it's will help our models as an augmentation method.\nI had planed to use other COTS from internet to generate samples, but was not sure whether an image or a video is permitted to use or not and I am very busy during this competition, so I did not use any of them.",
      "votes": null
    },
    {
      "id": "1719105",
      "postDate": "03/11/2022 13:43:00",
      "content": "<blockquote>\n  <p>\"I had planed to use other COTS from internet to generate samples\"<br>\n  Yes, you could do it, I also tried it. But the problem is that you cannot find the right starfish picture with the same color style on the internet. Lots of high-quality photos of starfish are there, but you know you cannot add them into your training dataset as probably they would not be in the test datasets either. Finally, I believe your thought at that time is right.</p>\n</blockquote>",
      "rawMarkdown": "> \"I had planed to use other COTS from internet to generate samples\"\nYes, you could do it, I also tried it. But the problem is that you cannot find the right starfish picture with the same color style on the internet. Lots of high-quality photos of starfish are there, but you know you cannot add them into your training dataset as probably they would not be in the test datasets either. Finally, I believe your thought at that time is right.",
      "votes": null
    },
    {
      "id": "1755191",
      "postDate": "04/14/2022 12:10:43",
      "content": "<p>Need a bigger bbox than the original one to include the feature edge,  before resize, is it right?</p>",
      "rawMarkdown": "Need a bigger bbox than the original one to include the feature edge,  before resize, is it right?",
      "votes": null
    },
    {
      "id": "1763030",
      "postDate": "04/21/2022 08:12:36",
      "content": "<p><a href=\"https://www.kaggle.com/w3579628328\" target=\"_blank\">@w3579628328</a> <br>\nyes, bigger bbox to include some background…</p>",
      "rawMarkdown": "w3579628328 \nyes, bigger bbox to include some background...",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1693478,
      "author_name": "init27",
      "author_url": "",
      "post_date": "02/16/2022 17:38:01",
      "content": "<p>Thanks for sharing your solution! 🙏</p>\n<blockquote>\n  <p>I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. </p>\n</blockquote>\n<p>May I ask what models were you using and what approaches were you taking? I was thinking about following this for the whale competition where many classes have just 1 image. </p>\n<p>TIA!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1693484,
          "author_name": "philippsinger",
          "author_url": "",
          "post_date": "02/16/2022 17:40:09",
          "content": "<p>GAN augmentation only seems to work in papers, I also never made it work for models, they are clever enough. Only solution I ever saw it work was in Bengali.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1693518,
          "author_name": "init27",
          "author_url": "",
          "post_date": "02/16/2022 17:57:02",
          "content": "<p>Oh wow-I didn't know about the Bengali competition. I found the <a href=\"https://www.kaggle.com/c/bengaliai-cv19/discussion/135984\" target=\"_blank\">writeup</a> by the winning team incase anyone reading here is interested. </p>\n<p>Thank you, Psi 🦁! 🍵</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1693529,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/16/2022 18:07:28",
          "content": "<p>Hey <a href=\"https://www.kaggle.com/init27\" target=\"_blank\">@init27</a>, StyleGAN2, I tried many models in <a href=\"https://www.kaggle.com/c/generative-dog-images\" target=\"_blank\">https://www.kaggle.com/c/generative-dog-images</a> competition and followed progresses after that. The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1693556,
      "author_name": "mpdroid",
      "author_url": "",
      "post_date": "02/16/2022 18:26:58",
      "content": "<p>is there a paper or code reference for poisson blending? nice tabulation of results!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1694291,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/17/2022 10:22:33",
          "content": "<p><a href=\"https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf\" target=\"_blank\">https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf</a><br>\n<a href=\"https://github.com/PPPW/poisson-image-editing\" target=\"_blank\">https://github.com/PPPW/poisson-image-editing</a></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1694530,
          "author_name": "shinya7y",
          "author_url": "",
          "post_date": "02/17/2022 13:52:14",
          "content": "<p>OpenCV supports poisson blending as <code>seamlessClone</code>.<br>\n<a href=\"https://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d\" target=\"_blank\">https://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d</a><br>\n<a href=\"https://learnopencv.com/seamless-cloning-using-opencv-python-cpp/\" target=\"_blank\">https://learnopencv.com/seamless-cloning-using-opencv-python-cpp/</a></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1696602,
          "author_name": "awsaf49",
          "author_url": "",
          "post_date": "02/19/2022 00:41:04",
          "content": "<p><a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> from github link it seems we need <strong>mask</strong> to do image poissioning, how did you get the mask?<br>\n<img src=\"https://github.com/PPPW/poisson-image-editing/raw/master/figs/example1/all.png\" alt=\"\"></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1696698,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/19/2022 03:32:12",
          "content": "<p>I think we should fill the box containing COTS with 255 to generate the mask. <br>\nbtw, I did not use the lib indeed, I gave you as reference.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1693838,
      "author_name": "kittylina",
      "author_url": "",
      "post_date": "02/17/2022 02:04:00",
      "content": "<p>Great job, tkx</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1694195,
      "author_name": "tikboa",
      "author_url": "",
      "post_date": "02/17/2022 08:36:07",
      "content": "<blockquote>\n  <p>Training a classification model to predict whether a box with COTS is real or fake.</p>\n</blockquote>\n<p>Can this part describe the process in detail?</p>\n<ol>\n<li>How to construct the target of training data, first pass copy-paste and then manually select whether it is real or fake?</li>\n<li>What model was chosen?</li>\n<li>Is it to classify the whole image, or only the bbox?</li>\n<li>proportion of generated data to original data, then fold all data?</li>\n</ol>\n<p>If you have relevant code for reference, it would be greatly appreciated.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1694300,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/17/2022 10:28:18",
          "content": "<ol>\n<li><p>The bbox in training set is real, so the target is 1, the poisson blending COTS boxes is fake, the target is 0.</p></li>\n<li><p>Any classification model is OK for this task, such resnet34.</p></li>\n<li><p>bbox, resize to 64x64.</p></li>\n<li><p>1.4k fake images</p></li>\n</ol>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1755191,
          "author_name": "w3579628328",
          "author_url": "",
          "post_date": "04/14/2022 12:10:43",
          "content": "<p>Need a bigger bbox than the original one to include the feature edge,  before resize, is it right?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1763030,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "04/21/2022 08:12:36",
          "content": "<p><a href=\"https://www.kaggle.com/w3579628328\" target=\"_blank\">@w3579628328</a> <br>\nyes, bigger bbox to include some background…</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1695659,
      "author_name": "arunasivapragasam",
      "author_url": "",
      "post_date": "02/18/2022 09:37:15",
      "content": "<p>Congraatulations🤩🤩Thanks for sharing your code <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> , feel free to check out my <a href=\"https://www.kaggle.com/arunasivapragasam/notebooks\" target=\"_blank\">notebooks</a> as well  😊</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1696366,
      "author_name": "keagle",
      "author_url": "",
      "post_date": "02/18/2022 19:22:55",
      "content": "<p>So from what I understand <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a>, to increase the data on which model can train, you created a script that copies and paste the starfish on different video at a different location and then use poison blending so that it fits in that background. Is that right?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1696700,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/19/2022 03:33:52",
          "content": "<p>yes! Then I selected the generated COTS with different backgroud using the classification model.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1698109,
      "author_name": "kyoshioka47",
      "author_url": "",
      "post_date": "02/20/2022 06:35:18",
      "content": "<p>The poisson blending method is very interesting, and seems like a traditional CV-like GAN to me.</p>\n<p>How did you train the discriminator (classifier) for your pipeline?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1698229,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/20/2022 08:14:55",
          "content": "<p>The box containing real COTS as positive sample, the box containing fake/blending COTS as negative sample, training a binary classification model(Resnet34). Then use this model to predict a  fake sample, if the score as positive sample is high, then use this fake sample.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1698555,
      "author_name": "nyanswanaung",
      "author_url": "",
      "post_date": "02/20/2022 13:34:33",
      "content": "<p><a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a> I saw that how did you train the classification model to classify fake and real and at the end you got 1.4k fake images but how did you annotate 1.4 fake images for bbox? How did you resize bbox to 64x64?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1698698,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "02/20/2022 15:31:14",
          "content": "<p>I generated many many fake images by using copy&amp;paste then poisson blending, then selected 1.4k of them by the model.<br>\nSince the fake image is generated by pasting COTS to a background, the backgroud itself can be patch with size 64x64 or large, after we paste the COTS to it ,then resize to 64x64.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1699134,
      "author_name": "yongjaeyou",
      "author_url": "",
      "post_date": "02/21/2022 00:16:41",
      "content": "<p>Thank you for sharing</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1702354,
      "author_name": "hiro310",
      "author_url": "",
      "post_date": "02/23/2022 14:40:37",
      "content": "<p>A novel idea. I want to be able to master it</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1718534,
      "author_name": "jeffreyhao",
      "author_url": "",
      "post_date": "03/10/2022 23:26:20",
      "content": "<blockquote>\n  <p>\"The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.\"</p>\n</blockquote>\n<p>Hi, <a href=\"https://www.kaggle.com/bestfitting\" target=\"_blank\">@bestfitting</a>. congrats! We have some agreement on this.<br>\n1) GAN doesn't work for this. According to information theory, you train the GAN by these photos; then generate photos again? Actually, these two photo sets have the same \"information size\", nothing more.<br>\n2) image blending works. I agree.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1719073,
          "author_name": "bestfitting",
          "author_url": "",
          "post_date": "03/11/2022 12:57:09",
          "content": "<p>hey,<br>\nIf we paste a generated COTS to other background, it's will help our models as an augmentation method.<br>\nI had planed to use other COTS from internet to generate samples, but was not sure whether an image or a video is permitted to use or not and I am very busy during this competition, so I did not use any of them.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1719105,
          "author_name": "jeffreyhao",
          "author_url": "",
          "post_date": "03/11/2022 13:43:00",
          "content": "<blockquote>\n  <p>\"I had planed to use other COTS from internet to generate samples\"<br>\n  Yes, you could do it, I also tried it. But the problem is that you cannot find the right starfish picture with the same color style on the internet. Lots of high-quality photos of starfish are there, but you know you cannot add them into your training dataset as probably they would not be in the test datasets either. Finally, I believe your thought at that time is right.</p>\n</blockquote>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "1693417": "Congrats to all the winners, and thanks to organizers.\n\nThe following ideas and methods helped me survive from this challenging competition.\n1.Copy COTS box and paste into background image, apply poisson blending.\n2.Several detection models training and inference with different image sizes.\n3.Appending boxes to detection results by finding homography matrix.\n4.Trust Local CV.\n\n## Data\nAs the dataset is relative small, if we have more samples we can benefit from them.\nWe can generate more star fishes and put them in different under-sea images.\n![poisson.png](https://i.imgur.com/eRzAF1s.png)\n\nThe simplest way is to crop the star fishes in train-set and paste it to other images, but we can find two obvious problems.\n1.The boundary and color is not real.\n2.The COTS is not on reasonable places.\n\nI solved these two problems by:\n\n1.Poisson blending\n2.Training a classification model to predict whether a box with COTS is real or fake.\n\nThis idea helped me to improve the score.\n\nI did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. \nI think it’s limited by the count of unique star fishes are small, if we can use more COTS downloaded from internet, I guess we could improve the score. I am not sure whether an image is allowed to use or not, so I did not use any of them. \nOther methods such as image harmonization did not bring  improvement.  \nAnyway, despite quite a lot of time spent without too many gains in this competition, I quite enjoyed it.\n\n## Model training\n\n**Validation Strategy**\nSplit 5 folds by sequence\n\n**Models**\nYOLOv5-S6, YOLOv5-M6, YOLOv5-L6, YOLOX-L, YOLOR-P6 and HRNetV2P-W18\n\n**Training details**\nYOLOv5: \nNetwork: YOLOv5-S6, YOLOv5-M6, YOLOv5-L6\nTraining-size: 3600\nInference-Size: 4800\nOptimizer: SGD\nScheduler: Warm Up + Linear LR + lr=0.01 + 15 epochs\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose\n\nYOLOX:\nNetwork: YOLOX-L\nTraining-size: 1280\nInference-Size: 1600\nOptimizer: SGD\nScheduler: yoloxwarmcos + 20 epochs\nAugmentation: hsv, flip, degrees, translate, shear, mosaic, mixup, no_aug_epochs=5\n\nYOLOR:\nNetwork: YOLOR-P6\nTraining-size: 2560\nInference-Size: 2560\nOptimizer: SGD\nScheduler: Warm Up + Linear LR + lr=0.005 + 15 epochs\nAugmentation: hsv, translate, scale, flipud, fliplr, mosaic, mixup, water-augment, transpose\n\nHRNet:\nNetwork: HRNetV2P-W18\nTraining-size: 3600\nInference-Size: 3600\nOptimizer: SGD\nScheduler: Warm Up + linear LR + lr=0.02 + 10 epochs\nAugmentation: Resize, RandomFlip\n\n## Tracking\nIf the detection model has found a box in  previous frames and we can predict the box in the current frame by the following way:\n1.Kalman Filter\n2.Optic Flow\n3.Finding homography matrix and then apply the matrix to get the box in the current frame.\n\nI find the third method is the best for this dataset.\nWe can get keypoint descriptors by using SuperPoint/SuperGlue and then find homography matrix.\n\n**The Tracking pipeline is:**\n1.If there is a box detected a frame t-10, then append a box using the homography matrix to frame t-9 unless there already a box is there(IOU greater than 0.4). Then repeat this procedure from t-9 until current frame.\n2.Apply DeepSort to get a track.\n3.Determining a box on a track is kept or not by the ratio of the model predicted boxes. If the ratio is too low, the track may be False Positive.\n\n## Ensemble\nCalculating IOU between the boxes which predicted by different models in an image.\nIf max IOU with other boxes of a box is less than 0.55,then drop this box.\nThe remaining boxes are ensembled using WBF.\n\n\n## Results\n![result1.png](https://i.imgur.com/p2iHvpi.png)\n![result2.png](https://i.imgur.com/6Hm3GRQ.png)",
    "1693478": "Thanks for sharing your solution! 🙏\n\n> I did not stop my experiments, I tried to train GAN models to generate starfishes, although the generated samples were quite real, the score did not improve. \n\nMay I ask what models were you using and what approaches were you taking? I was thinking about following this for the whale competition where many classes have just 1 image. \n\nTIA!",
    "1693484": "GAN augmentation only seems to work in papers, I also never made it work for models, they are clever enough. Only solution I ever saw it work was in Bengali.",
    "1693518": "Oh wow-I didn't know about the Bengali competition. I found the [writeup](https://www.kaggle.com/c/bengaliai-cv19/discussion/135984) by the winning team incase anyone reading here is interested. \n\nThank you, Psi 🦁! 🍵",
    "1693529": "Hey @init27, StyleGAN2, I tried many models in https://www.kaggle.com/c/generative-dog-images competition and followed progresses after that. The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.",
    "1693556": "is there a paper or code reference for poisson blending? nice tabulation of results!",
    "1693838": "Great job, tkx",
    "1694195": "> Training a classification model to predict whether a box with COTS is real or fake.\n\nCan this part describe the process in detail?\n1. How to construct the target of training data, first pass copy-paste and then manually select whether it is real or fake?\n2. What model was chosen?\n3. Is it to classify the whole image, or only the bbox?\n4. proportion of generated data to original data, then fold all data?\n\nIf you have relevant code for reference, it would be greatly appreciated.",
    "1694291": "https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf\nhttps://github.com/PPPW/poisson-image-editing",
    "1694300": "1.  The bbox in training set is real, so the target is 1, the poisson blending COTS boxes is fake, the target is 0.\n\n2. Any classification model is OK for this task, such resnet34.\n\n3. bbox, resize to 64x64.\n4. 1.4k fake images",
    "1694530": "OpenCV supports poisson blending as `seamlessClone`.\nhttps://docs.opencv.org/4.5.5/df/da0/group__photo__clone.html#ga2bf426e4c93a6b1f21705513dfeca49d\nhttps://learnopencv.com/seamless-cloning-using-opencv-python-cpp/",
    "1695659": "Congraatulations🤩🤩Thanks for sharing your code @bestfitting , feel free to check out my [notebooks](https://www.kaggle.com/arunasivapragasam/notebooks) as well  😊",
    "1696366": "So from what I understand @bestfitting, to increase the data on which model can train, you created a script that copies and paste the starfish on different video at a different location and then use poison blending so that it fits in that background. Is that right?",
    "1696602": "bestfitting from github link it seems we need **mask** to do image poissioning, how did you get the mask?\n![](https://github.com/PPPW/poisson-image-editing/raw/master/figs/example1/all.png)",
    "1696698": "I think we should fill the box containing COTS with 255 to generate the mask. \nbtw, I did not use the lib indeed, I gave you as reference.",
    "1696700": "yes! Then I selected the generated COTS with different backgroud using the classification model.",
    "1698109": "The poisson blending method is very interesting, and seems like a traditional CV-like GAN to me.\n\nHow did you train the discriminator (classifier) for your pipeline?",
    "1698229": "The box containing real COTS as positive sample, the box containing fake/blending COTS as negative sample, training a binary classification model(Resnet34). Then use this model to predict a  fake sample, if the score as positive sample is high, then use this fake sample.",
    "1698555": "bestfitting I saw that how did you train the classification model to classify fake and real and at the end you got 1.4k fake images but how did you annotate 1.4 fake images for bbox? How did you resize bbox to 64x64?",
    "1698698": "I generated many many fake images by using copy&paste then poisson blending, then selected 1.4k of them by the model.\nSince the fake image is generated by pasting COTS to a background, the backgroud itself can be patch with size 64x64 or large, after we paste the COTS to it ,then resize to 64x64.",
    "1699134": "Thank you for sharing",
    "1702354": "A novel idea. I want to be able to master it",
    "1718534": "> \"The main reason I entered this competition is to check whether GAN and image blending technologies can help solve this kind of problems.\"\n\nHi, @bestfitting. congrats! We have some agreement on this.\n1) GAN doesn't work for this. According to information theory, you train the GAN by these photos; then generate photos again? Actually, these two photo sets have the same \"information size\", nothing more.\n2) image blending works. I agree.",
    "1719073": "hey,\nIf we paste a generated COTS to other background, it's will help our models as an augmentation method.\nI had planed to use other COTS from internet to generate samples, but was not sure whether an image or a video is permitted to use or not and I am very busy during this competition, so I did not use any of them.",
    "1719105": "> \"I had planed to use other COTS from internet to generate samples\"\nYes, you could do it, I also tried it. But the problem is that you cannot find the right starfish picture with the same color style on the internet. Lots of high-quality photos of starfish are there, but you know you cannot add them into your training dataset as probably they would not be in the test datasets either. Finally, I believe your thought at that time is right.",
    "1755191": "Need a bigger bbox than the original one to include the feature edge,  before resize, is it right?",
    "1763030": "w3579628328 \nyes, bigger bbox to include some background..."
  },
  "source": "meta"
}