{
  "id": 107923,
  "title": "Congrats to the winners (88th place solution)",
  "url": "/competitions/aptos2019-blindness-detection/discussion/107923",
  "author_name": "Quan",
  "post_date": "2019-09-08T01:00:33.950000",
  "votes": 8,
  "comment_count": 2,
  "views": 0,
  "content": "<p>Congrats to the winners 💯.\nMy result comes from a single model EfficientNetB3, pretrained on 2015 (combination of training and private testset), valid on 2015 public testset and then fine-tuned on 2019 dataset.\nI approached this problem as a regression problem, the output node is not a regular linear output but a rectified linear output with max_value of 4, so output value is in proper range.</p>\n\n<p>Image size 300x300.</p>\n\n<p>Image preprocessing: Crop blackbars, subtract local means (similar to Ben Graham's preprocessing technique, but his technique also remaps the images to 50% gray and removes outer shadow effect) with sigmaX = 10.</p>\n\n<p>Image augmentation: Random zoom (0.75-1.25), random rotation (360 degrees), random horizontal flip.</p>\n\n<p>I pretrained B3 on previous dataset until val-loss didn't improved after 5 epochs. </p>\n\n<p>First phase of finetuning: Load pretrained weights, train on 2019 dataset with 20% validation split for 40 epochs, monitor valloss. The purpose of this phase is to find the optimal number of epochs to train on entire 2019 dataset.\nSecond phase of finetuning: Load pretrained weights again, this time train on entire 2019 dataset where the number of epochs is when val-loss reaches minimum in the first phase.</p>\n\n<p>I tried TTA, Optimized Rounder and Model Ensembles but none works well for me on public score as well as private score. Maybe I made mistakes somewhere.</p>\n\n<p>Thanks kaggle, the organizers and all participants for this amazing and challenging competition. I was just a novice when I first take on this challenge and I've learned a lot along the way. Gaining knowledge and experience for me is a victory. Thank you all!</p>",
  "messages": [
    {
      "id": 620793,
      "postDate": "2019-09-08T01:00:33.950Z",
      "content": "<p>Congrats to the winners 💯.\nMy result comes from a single model EfficientNetB3, pretrained on 2015 (combination of training and private testset), valid on 2015 public testset and then fine-tuned on 2019 dataset.\nI approached this problem as a regression problem, the output node is not a regular linear output but a rectified linear output with max_value of 4, so output value is in proper range.</p>\n\n<p>Image size 300x300.</p>\n\n<p>Image preprocessing: Crop blackbars, subtract local means (similar to Ben Graham's preprocessing technique, but his technique also remaps the images to 50% gray and removes outer shadow effect) with sigmaX = 10.</p>\n\n<p>Image augmentation: Random zoom (0.75-1.25), random rotation (360 degrees), random horizontal flip.</p>\n\n<p>I pretrained B3 on previous dataset until val-loss didn't improved after 5 epochs. </p>\n\n<p>First phase of finetuning: Load pretrained weights, train on 2019 dataset with 20% validation split for 40 epochs, monitor valloss. The purpose of this phase is to find the optimal number of epochs to train on entire 2019 dataset.\nSecond phase of finetuning: Load pretrained weights again, this time train on entire 2019 dataset where the number of epochs is when val-loss reaches minimum in the first phase.</p>\n\n<p>I tried TTA, Optimized Rounder and Model Ensembles but none works well for me on public score as well as private score. Maybe I made mistakes somewhere.</p>\n\n<p>Thanks kaggle, the organizers and all participants for this amazing and challenging competition. I was just a novice when I first take on this challenge and I've learned a lot along the way. Gaining knowledge and experience for me is a victory. Thank you all!</p>",
      "rawMarkdown": "Congrats to the winners 💯.\nMy result comes from a single model EfficientNetB3, pretrained on 2015 (combination of training and private testset), valid on 2015 public testset and then fine-tuned on 2019 dataset.\nI approached this problem as a regression problem, the output node is not a regular linear output but a rectified linear output with max_value of 4, so output value is in proper range.\n\nImage size 300x300.\n\nImage preprocessing: Crop blackbars, subtract local means (similar to Ben Graham's preprocessing technique, but his technique also remaps the images to 50% gray and removes outer shadow effect) with sigmaX = 10.\n\nImage augmentation: Random zoom (0.75-1.25), random rotation (360 degrees), random horizontal flip.\n\nI pretrained B3 on previous dataset until val-loss didn't improved after 5 epochs. \n\nFirst phase of finetuning: Load pretrained weights, train on 2019 dataset with 20% validation split for 40 epochs, monitor valloss. The purpose of this phase is to find the optimal number of epochs to train on entire 2019 dataset.\nSecond phase of finetuning: Load pretrained weights again, this time train on entire 2019 dataset where the number of epochs is when val-loss reaches minimum in the first phase.\n\nI tried TTA, Optimized Rounder and Model Ensembles but none works well for me on public score as well as private score. Maybe I made mistakes somewhere.\n\nThanks kaggle, the organizers and all participants for this amazing and challenging competition. I was just a novice when I first take on this challenge and I've learned a lot along the way. Gaining knowledge and experience for me is a victory. Thank you all!",
      "votes": 8
    },
    {
      "id": 620911,
      "postDate": "2019-09-08T04:06:43.493Z",
      "content": "<p>Congrats <a href=\"/quandapro\">@quandapro</a> , Thanks for sharing your approach!</p>",
      "rawMarkdown": "Congrats @quandapro , Thanks for sharing your approach!",
      "votes": 1
    },
    {
      "id": 620906,
      "postDate": "2019-09-08T04:03:16.560Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 620911,
      "author_name": "Kranthi Kumar",
      "author_url": "",
      "post_date": "2019-09-08T04:06:43.493000",
      "content": "<p>Congrats <a href=\"/quandapro\">@quandapro</a> , Thanks for sharing your approach!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 620906,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-09-08T04:03:16.560000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "620793": "Congrats to the winners 💯.\nMy result comes from a single model EfficientNetB3, pretrained on 2015 (combination of training and private testset), valid on 2015 public testset and then fine-tuned on 2019 dataset.\nI approached this problem as a regression problem, the output node is not a regular linear output but a rectified linear output with max_value of 4, so output value is in proper range.\n\nImage size 300x300.\n\nImage preprocessing: Crop blackbars, subtract local means (similar to Ben Graham's preprocessing technique, but his technique also remaps the images to 50% gray and removes outer shadow effect) with sigmaX = 10.\n\nImage augmentation: Random zoom (0.75-1.25), random rotation (360 degrees), random horizontal flip.\n\nI pretrained B3 on previous dataset until val-loss didn't improved after 5 epochs. \n\nFirst phase of finetuning: Load pretrained weights, train on 2019 dataset with 20% validation split for 40 epochs, monitor valloss. The purpose of this phase is to find the optimal number of epochs to train on entire 2019 dataset.\nSecond phase of finetuning: Load pretrained weights again, this time train on entire 2019 dataset where the number of epochs is when val-loss reaches minimum in the first phase.\n\nI tried TTA, Optimized Rounder and Model Ensembles but none works well for me on public score as well as private score. Maybe I made mistakes somewhere.\n\nThanks kaggle, the organizers and all participants for this amazing and challenging competition. I was just a novice when I first take on this challenge and I've learned a lot along the way. Gaining knowledge and experience for me is a victory. Thank you all!",
    "620911": "Congrats @quandapro , Thanks for sharing your approach!",
    "620906": ""
  }
}