{
  "id": 75640,
  "title": "Best single model without leak",
  "url": "/competitions/human-protein-atlas-image-classification/discussion/75640",
  "author_name": "Kevin Zheng",
  "post_date": "2018-12-24T10:35:54.436000",
  "votes": 30,
  "comment_count": 109,
  "views": 0,
  "content": "<p>Hi, everyone, I am curious what is your best single model on public LB without any leak?\nPlease post your results here if you would like to share.\nFor me:\nLB 0.580 for self-designed resnet18 with external data (single fold result)</p>",
  "messages": [
    {
      "id": 444589,
      "postDate": "2018-12-24T10:35:54.437Z",
      "content": "<p>Hi, everyone, I am curious what is your best single model on public LB without any leak?\nPlease post your results here if you would like to share.\nFor me:\nLB 0.580 for self-designed resnet18 with external data (single fold result)</p>",
      "rawMarkdown": "Hi, everyone, I am curious what is your best single model on public LB without any leak?\nPlease post your results here if you would like to share.\nFor me:\nLB 0.580 for self-designed resnet18 with external data (single fold result)",
      "votes": 29
    },
    {
      "id": 445783,
      "postDate": "2018-12-27T03:50:09.140Z",
      "content": "<p>my weird results on 512x512 images. All results below is single fold without TTA, without ensemble</p>\n\n<p>resnet18 on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.755 (F1@0.5)</p>\n\n<p>public lb: 0.551 (F1@0.3) without leak</p>\n\n<p>public lb: 0.550 (F1@0.3) overwrite prediction with leak259</p>\n\n<hr>\n\n<p>inception-bn on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.785 (F1@0.5)</p>\n\n<p>public lb: 0.530 (F1@0.3) without leak</p>\n\n<p>public lb: 0.530 (F1@0.3) overwrite prediction with leak259</p>\n\n<hr>\n\n<p>resnet34 on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.795 (F1@0.5)</p>\n\n<p>public lb: 0.511 (F1@0.3) overwrite prediction with leak259</p>",
      "rawMarkdown": "my weird results on 512x512 images. All results below is single fold without TTA, without ensemble\n\n\n\n\nresnet18 on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.755 (F1@0.5)\n\npublic lb: 0.551 (F1@0.3) without leak\n\npublic lb: 0.550 (F1@0.3) overwrite prediction with leak259\n\n\n---\n\n\ninception-bn on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.785 (F1@0.5)\n\npublic lb: 0.530 (F1@0.3) without leak\n\npublic lb: 0.530 (F1@0.3) overwrite prediction with leak259\n\n\n---\n\n\nresnet34 on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.795 (F1@0.5)\n\npublic lb: 0.511 (F1@0.3) overwrite prediction with leak259\n\n \n",
      "votes": 11,
      "replies": [
        {
          "id": 445792,
          "postDate": "2018-12-27T04:15:22.420Z",
          "content": "<p>Thank you for sharing your result. Did you find the explanation to the decrease of public LB score with increase of the val score? I see exactly the same trend, and my model with 0.80 val score perform worse on public LB than models having 0.75?</p>",
          "rawMarkdown": "Thank you for sharing your result. Did you find the explanation to the decrease of public LB score with increase of the val score? I see exactly the same trend, and my model with 0.80 val score perform worse on public LB than models having 0.75?",
          "votes": 1
        },
        {
          "id": 445816,
          "postDate": "2018-12-27T04:59:57.613Z",
          "content": "<p>Far from being expert but my guess would be that the model became better at predicting the abundant classes, hence the val_loss improvement (which is not class  avg) but it caused the f1 macro score (which is class avg) to drop. Very hard to avoid this, alas.... I actually over-sampled only in my training set and thinking back it might not be the correct strategy. </p>",
          "rawMarkdown": "Far from being expert but my guess would be that the model became better at predicting the abundant classes, hence the val_loss improvement (which is not class  avg) but it caused the f1 macro score (which is class avg) to drop. Very hard to avoid this, alas.... I actually over-sampled only in my training set and thinking back it might not be the correct strategy. \n"
        },
        {
          "id": 445849,
          "postDate": "2018-12-27T05:49:14.833Z",
          "content": "<p>Hi Heng CherKeng. For \"F1@0.5\", what's the meaning of @?</p>",
          "rawMarkdown": "Hi Heng CherKeng. For \"F1@0.5\", what's the meaning of @?"
        },
        {
          "id": 445851,
          "postDate": "2018-12-27T05:57:39.483Z",
          "content": "<p>F1 computed with threshold 0.5</p>",
          "rawMarkdown": "F1 computed with threshold 0.5"
        },
        {
          "id": 445872,
          "postDate": "2018-12-27T06:36:47.107Z",
          "content": "<p>Thank you~</p>",
          "rawMarkdown": "Thank you~"
        },
        {
          "id": 449629,
          "postDate": "2019-01-03T13:18:20.417Z",
          "content": "<p>How did you split data into train and val?</p>",
          "rawMarkdown": "How did you split data into train and val?"
        },
        {
          "id": 453154,
          "postDate": "2019-01-09T18:45:12.310Z",
          "content": "<p><a href=\"/hengck23\">@hengck23</a> and @iafos just started to use external data and I am observing exactly the same F1 0.75-0.80  with resnet18 scores 0.53-0.51 on LB. Any advice?</p>",
          "rawMarkdown": "@hengck23 and @iafos just started to use external data and I am observing exactly the same F1 0.75-0.80  with resnet18 scores 0.53-0.51 on LB. Any advice?"
        }
      ]
    },
    {
      "id": 449127,
      "postDate": "2019-01-02T17:35:35.170Z",
      "content": "<p>I have two quite different architectures both LB 0.6+</p>\n\n<ul>\n<li>5-fold</li>\n<li>rgb</li>\n<li>512x512</li>\n</ul>\n\n<p><a href=\"/trangle1302\">@trangle1302</a> If I would run in kernels I guess I could reach 0.55+ with them</p>",
      "rawMarkdown": "I have two quite different architectures both LB 0.6+\n\n- 5-fold\n- rgb\n- 512x512\n\n@trangle1302 If I would run in kernels I guess I could reach 0.55+ with them",
      "votes": 8,
      "replies": [
        {
          "id": 449545,
          "postDate": "2019-01-03T10:32:44.677Z",
          "rawMarkdown": "",
          "isDeleted": true
        },
        {
          "id": 451713,
          "postDate": "2019-01-07T14:32:08.343Z",
          "content": "<p>How to preprocess the images with 4 channels, when using pre-trained models. With 5-fold CV and 512 image size, and oversampling and using adam, I am not able to get past 0.50 :(</p>",
          "rawMarkdown": "How to preprocess the images with 4 channels, when using pre-trained models. With 5-fold CV and 512 image size, and oversampling and using adam, I am not able to get past 0.50 :("
        },
        {
          "id": 451799,
          "postDate": "2019-01-07T17:17:02.440Z",
          "content": "<p>I also used external data for training but not the leak file. <a href=\"/sourajmishra\">@sourajmishra</a> I did not use 4 channels, only 3</p>",
          "rawMarkdown": "I also used external data for training but not the leak file. @sourajmishra I did not use 4 channels, only 3",
          "votes": 1
        },
        {
          "id": 451809,
          "postDate": "2019-01-07T17:55:33.340Z",
          "content": "<p>Thanks. Do you process to compress RBGY to 3 channel somehow, or just use RGB and ignore Y?</p>",
          "rawMarkdown": "Thanks. Do you process to compress RBGY to 3 channel somehow, or just use RGB and ignore Y?",
          "votes": 2
        },
        {
          "id": 453137,
          "postDate": "2019-01-09T18:17:36.133Z",
          "content": "<p>ignore Y</p>",
          "rawMarkdown": "ignore Y"
        },
        {
          "id": 454221,
          "postDate": "2019-01-11T09:10:19.143Z",
          "content": "<p>i wrote a quick summary here:</p>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/77300\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/77300</a></p>",
          "rawMarkdown": "i wrote a quick summary here:\n\nhttps://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/77300",
          "votes": 1
        }
      ]
    },
    {
      "id": 444721,
      "postDate": "2018-12-24T16:34:49.177Z",
      "content": "<p>self-designed InceptionV3 (external data + image size 512x512): 0.577 single fold, 0.599 average of 3 folds</p>",
      "rawMarkdown": "self-designed InceptionV3 (external data + image size 512x512): 0.577 single fold, 0.599 average of 3 folds",
      "votes": 6,
      "replies": [
        {
          "id": 444732,
          "postDate": "2018-12-24T16:59:56.207Z",
          "content": "<p>Great work! May I ask that did you use green channel mask attention?</p>",
          "rawMarkdown": "Great work! May I ask that did you use green channel mask attention?"
        },
        {
          "id": 444765,
          "postDate": "2018-12-24T18:51:09.973Z",
          "content": "<p>Very impressive. Can you drop some hints on your approach? </p>",
          "rawMarkdown": "Very impressive. Can you drop some hints on your approach? "
        },
        {
          "id": 444850,
          "postDate": "2018-12-25T01:31:23.903Z",
          "content": "<p>I did not use green channel mask attention. Instead, I design a new method to make the network attend on the rare labels.</p>",
          "rawMarkdown": "I did not use green channel mask attention. Instead, I design a new method to make the network attend on the rare labels.",
          "votes": 6
        },
        {
          "id": 444866,
          "postDate": "2018-12-25T02:41:34.843Z",
          "content": "<p>Thanks for sharing!</p>",
          "rawMarkdown": "Thanks for sharing!"
        },
        {
          "id": 445307,
          "postDate": "2018-12-26T07:28:35.357Z",
          "content": "<p>May I ask which loss function you used for this report?</p>",
          "rawMarkdown": "May I ask which loss function you used for this report?"
        },
        {
          "id": 445347,
          "postDate": "2018-12-26T08:49:05.817Z",
          "content": "<p>Hi Chris, I'm using binary cross-entropy. I tried to combine it with focal loss and f1 loss but pure binary cross-entropy gave me the best result.</p>",
          "rawMarkdown": "Hi Chris, I'm using binary cross-entropy. I tried to combine it with focal loss and f1 loss but pure binary cross-entropy gave me the best result.",
          "votes": 1
        },
        {
          "id": 447099,
          "postDate": "2018-12-29T06:23:28.703Z",
          "content": "<p>That's just the opposite of my observation. I'm using self-designed resnet50 with focal loss got 0.574 single fold.</p>",
          "rawMarkdown": "That's just the opposite of my observation. I'm using self-designed resnet50 with focal loss got 0.574 single fold."
        },
        {
          "id": 447102,
          "postDate": "2018-12-29T06:32:33.840Z",
          "content": "<p>Did you tune the gamma and alpha value? I used the default set up, gamma=2, alpha=0.25</p>",
          "rawMarkdown": "Did you tune the gamma and alpha value? I used the default set up, gamma=2, alpha=0.25",
          "votes": 1
        },
        {
          "id": 447183,
          "postDate": "2018-12-29T10:18:20.943Z",
          "content": "<p>I have tried different settings for gamma and alpha, found that gamma=2, alpha=0.25 gives the best performance.</p>",
          "rawMarkdown": "I have tried different settings for gamma and alpha, found that gamma=2, alpha=0.25 gives the best performance.",
          "votes": 1
        },
        {
          "id": 450964,
          "postDate": "2019-01-06T07:00:29.613Z",
          "content": "<p>Hi, @Chris J.Liu, by using normal ResNet50, how much LB do you get for single fold with focal loss?</p>",
          "rawMarkdown": "Hi, @Chris J.Liu, by using normal ResNet50, how much LB do you get for single fold with focal loss?"
        }
      ]
    },
    {
      "id": 444609,
      "postDate": "2018-12-24T11:15:39.450Z",
      "content": "<p>Could you give me some hints about your loss function??</p>",
      "rawMarkdown": "Could you give me some hints about your loss function??",
      "votes": 1,
      "replies": [
        {
          "id": 444613,
          "postDate": "2018-12-24T11:49:42.517Z",
          "content": "<p>Check this excellent kernel: <a href=\"https://www.kaggle.com/rejpalcz/best-loss-function-for-f1-score-metric\">https://www.kaggle.com/rejpalcz/best-loss-function-for-f1-score-metric</a>. For me, soft f1 loss works well, some combination may help, on experiment.</p>",
          "rawMarkdown": "Check this excellent kernel: https://www.kaggle.com/rejpalcz/best-loss-function-for-f1-score-metric. For me, soft f1 loss works well, some combination may help, on experiment.",
          "votes": 4
        },
        {
          "id": 444814,
          "postDate": "2018-12-24T21:56:24.160Z",
          "content": "<p>I was under the impression that F1, being a macro metrics, works ok only on very large batches. What is the size of your batch?</p>",
          "rawMarkdown": "I was under the impression that F1, being a macro metrics, works ok only on very large batches. What is the size of your batch?"
        },
        {
          "id": 444882,
          "postDate": "2018-12-25T04:09:05.297Z",
          "content": "<p>I have the same experience. On 256x256 with batches 64 and 128 F1 loss works. However, when I tried to move to 512x512 images the performance has degraded, even if I mixed focal and F1 loss. With batch size 16 training didn't really work. </p>",
          "rawMarkdown": "I have the same experience. On 256x256 with batches 64 and 128 F1 loss works. However, when I tried to move to 512x512 images the performance has degraded, even if I mixed focal and F1 loss. With batch size 16 training didn't really work. ",
          "votes": 1
        },
        {
          "id": 444896,
          "postDate": "2018-12-25T05:00:12.140Z",
          "content": "<p>Now my batch size is 128, the performance better than 64.</p>",
          "rawMarkdown": "Now my batch size is 128, the performance better than 64."
        },
        {
          "id": 448892,
          "postDate": "2019-01-02T10:26:51.957Z",
          "content": "<p>definitely larger batch could represent the true distribution of whole dataset, but I wonder the image size u r using now, is it possible to get LB 0.58 + with size 256 * 256 ? \nhope for ur answer hh </p>",
          "rawMarkdown": "definitely larger batch could represent the true distribution of whole dataset, but I wonder the image size u r using now, is it possible to get LB 0.58 + with size 256 * 256 ? \nhope for ur answer hh "
        }
      ]
    },
    {
      "id": 449449,
      "postDate": "2019-01-03T06:47:03.997Z",
      "content": "<p>I have a Resnet50, 512 x 512 image size, external data, and some test data leak, gives a LB 0.569</p>",
      "rawMarkdown": "I have a Resnet50, 512 x 512 image size, external data, and some test data leak, gives a LB 0.569",
      "votes": 2,
      "replies": [
        {
          "id": 451811,
          "postDate": "2019-01-07T17:57:29.420Z",
          "content": "<p>Do you get this score with Binary cross entropy, or with some custom loss?</p>",
          "rawMarkdown": "Do you get this score with Binary cross entropy, or with some custom loss?",
          "votes": 1
        },
        {
          "id": 451867,
          "postDate": "2019-01-07T19:51:45.377Z",
          "content": "<p>With BCE, I got higher validation score, but poor LB score, but with focal loss, I got a much better LB score</p>",
          "rawMarkdown": "With BCE, I got higher validation score, but poor LB score, but with focal loss, I got a much better LB score"
        },
        {
          "id": 452012,
          "postDate": "2019-01-08T03:07:08.417Z",
          "content": "<p>Thank You. With the focal loss, I have tried Adam with staring lr 0.001 and then decreasing it every 10 epochs with gamma 0.1 to 0.5. But it gets stuck on around 0.3 on LB.  Can you suggest some strategy for this.</p>",
          "rawMarkdown": "Thank You. With the focal loss, I have tried Adam with staring lr 0.001 and then decreasing it every 10 epochs with gamma 0.1 to 0.5. But it gets stuck on around 0.3 on LB.  Can you suggest some strategy for this."
        },
        {
          "id": 452593,
          "postDate": "2019-01-08T23:34:53.607Z",
          "content": "<p>I started with 2e-5, and decreasing every 10 epochs, trained with total 30 epochs. </p>",
          "rawMarkdown": "I started with 2e-5, and decreasing every 10 epochs, trained with total 30 epochs. "
        }
      ]
    },
    {
      "id": 444755,
      "postDate": "2018-12-24T18:24:37.677Z",
      "content": "<p>0.564, 512x512, resnet34 with HPAv18 external data, single fold. I'm running a 5-fold experiment, but it's taking forever to finish with the external data.</p>",
      "rawMarkdown": "0.564, 512x512, resnet34 with HPAv18 external data, single fold. I'm running a 5-fold experiment, but it's taking forever to finish with the external data.",
      "votes": 2,
      "replies": [
        {
          "id": 444890,
          "postDate": "2018-12-25T04:41:52.730Z",
          "content": "<p>Good work!</p>",
          "rawMarkdown": "Good work!"
        },
        {
          "id": 444913,
          "postDate": "2018-12-25T06:27:33.850Z",
          "content": "<blockquote>\n  <blockquote>\n    <p>0.564, 512x512, resnet34 with HPAv18 external data, single fold</p>\n  </blockquote>\n</blockquote>\n\n<p>Is this with TTA or just on original input images? With is the threshold you are using?</p>",
          "rawMarkdown": "&gt;&gt; 0.564, 512x512, resnet34 with HPAv18 external data, single fold\n\nIs this with TTA or just on original input images? With is the threshold you are using?"
        },
        {
          "id": 445093,
          "postDate": "2018-12-25T15:54:00.843Z",
          "content": "<p>With TTA and adjusted thresholds fitted on the validation set. </p>",
          "rawMarkdown": "With TTA and adjusted thresholds fitted on the validation set. ",
          "votes": 1
        }
      ]
    },
    {
      "id": 446094,
      "postDate": "2018-12-27T13:35:16.253Z",
      "content": "<p>Hi, @Kevin Zheng, Do you train from scratch? Can you share more details? Like loss function, image size, optimizer, init lr, etc.</p>",
      "rawMarkdown": "Hi, @Kevin Zheng, Do you train from scratch? Can you share more details? Like loss function, image size, optimizer, init lr, etc.",
      "votes": 1
    },
    {
      "id": 445841,
      "postDate": "2018-12-27T05:35:15.313Z",
      "content": "<p>Thanks, can you share the lr schedule?</p>",
      "rawMarkdown": "Thanks, can you share the lr schedule?",
      "votes": -1,
      "replies": [
        {
          "id": 445914,
          "postDate": "2018-12-27T07:48:58.197Z",
          "content": "<p>SGD,  lr start with 0.1, reduce lr by 0.2 when the loss stop decrease in 8 epochs.</p>",
          "rawMarkdown": "SGD,  lr start with 0.1, reduce lr by 0.2 when the loss stop decrease in 8 epochs.",
          "votes": 2
        },
        {
          "id": 446710,
          "postDate": "2018-12-28T14:53:35.627Z",
          "content": "<p>Wow!\nHow many epochs does it take?</p>",
          "rawMarkdown": "Wow!\nHow many epochs does it take?"
        },
        {
          "id": 447254,
          "postDate": "2018-12-29T13:37:57.153Z",
          "content": "<p>80~100</p>",
          "rawMarkdown": "80~100",
          "votes": 1
        }
      ]
    },
    {
      "id": 453564,
      "postDate": "2019-01-10T11:28:18.270Z",
      "content": "<p>I am curious about what type of resnet you are using?</p>",
      "rawMarkdown": "I am curious about what type of resnet you are using?",
      "replies": [
        {
          "id": 453581,
          "postDate": "2019-01-10T12:25:17.020Z",
          "content": "<p>Same here. People often state they are using self-defined well-known architecture but I have seen cases where this stands for changing the output layer to nets that are just inspired by well known architectures (residual, inception block, etc.). I assume head is self defined but none of the earlier layers are changed (perhaps in conv1 3=&gt;4 channels). </p>",
          "rawMarkdown": "Same here. People often state they are using self-defined well-known architecture but I have seen cases where this stands for changing the output layer to nets that are just inspired by well known architectures (residual, inception block, etc.). I assume head is self defined but none of the earlier layers are changed (perhaps in conv1 3=&gt;4 channels). "
        }
      ]
    },
    {
      "id": 451791,
      "postDate": "2019-01-07T16:51:27.943Z",
      "content": "<p>I use a Resnet34, 512 x 512 image size, RGBY, external data, no leaked data, single fold with data augmentation and TTA, upsample of the less frequent classes and it gives a LB 0.568</p>",
      "rawMarkdown": "I use a Resnet34, 512 x 512 image size, RGBY, external data, no leaked data, single fold with data augmentation and TTA, upsample of the less frequent classes and it gives a LB 0.568"
    },
    {
      "id": 451337,
      "postDate": "2019-01-06T22:15:54.170Z",
      "content": "<p>0.577</p>\n\n<p>Resnet50, 512x512 rgb images, oversampling rare classes, simple data augmentation, external data, 5-fold with TTA, BCE loss</p>\n\n<p>The leak boosts me to 0.588. Oversampling dramatically reduced the boost I was getting from the leak.</p>",
      "rawMarkdown": "0.577\n\nResnet50, 512x512 rgb images, oversampling rare classes, simple data augmentation, external data, 5-fold with TTA, BCE loss\n\nThe leak boosts me to 0.588. Oversampling dramatically reduced the boost I was getting from the leak.",
      "replies": [
        {
          "id": 451397,
          "postDate": "2019-01-07T02:43:52.157Z",
          "content": "<p>cool, thx for ur sharing. Do u use leak126 ?</p>",
          "rawMarkdown": "cool, thx for ur sharing. Do u use leak126 ?"
        },
        {
          "id": 451406,
          "postDate": "2019-01-07T03:01:58.177Z",
          "content": "<p>Thanks for sharing, May I ask did you try rgby? what's the result?</p>",
          "rawMarkdown": "Thanks for sharing, May I ask did you try rgby? what's the result?"
        },
        {
          "id": 451416,
          "postDate": "2019-01-07T03:47:40.093Z",
          "content": "<p>I've been using leak259</p>",
          "rawMarkdown": "I've been using leak259"
        },
        {
          "id": 451417,
          "postDate": "2019-01-07T03:49:21.777Z",
          "content": "<p>I've tried rgby several times with slightly worse results than rgb. I don't have a good understanding why that is.</p>",
          "rawMarkdown": "I've tried rgby several times with slightly worse results than rgb. I don't have a good understanding why that is."
        },
        {
          "id": 451533,
          "postDate": "2019-01-07T08:34:41.310Z",
          "content": "<p>Hi, Do you use same threshold for all classes? or choose threshold from validation set?</p>",
          "rawMarkdown": "Hi, Do you use same threshold for all classes? or choose threshold from validation set?"
        }
      ]
    },
    {
      "id": 448773,
      "postDate": "2019-01-02T04:18:18.413Z",
      "content": "<p>Can you guys tell me the way of split the trainval? my val is not robust, the score on lb didn't increase even thought local increases by a large margin</p>",
      "rawMarkdown": "Can you guys tell me the way of split the trainval? my val is not robust, the score on lb didn't increase even thought local increases by a large margin"
    },
    {
      "id": 447844,
      "postDate": "2018-12-30T18:02:19.110Z",
      "content": "<p>ResNet18 is overfitting even after using external data and dropout(0.5). Can Anyone give any suggestion to avoid this problem??</p>",
      "rawMarkdown": "ResNet18 is overfitting even after using external data and dropout(0.5). Can Anyone give any suggestion to avoid this problem??",
      "replies": [
        {
          "id": 447881,
          "postDate": "2018-12-30T18:56:13.693Z",
          "content": "<p>Few things to deal with overfitting:</p>\n\n<ol>\n<li><p>Most robust way is to use a validation set that is not very similar to train set but still represents test set. Usually, when your training loss is getting lower significantly compared to validation loss, it's a sign of overfitting. You may want to use early stopping or use an earlier checkpoint in that case when validation loss starts increasing. However, sometimes maximising competition validation metric helps, even if validation loss increases. But for this competition, there are similar images in train set. So your validation metric(e.g. F-1) may increase with your training, but it is because your validation set contains similar images like train, and you will not know if your model is overfitting.</p></li>\n<li><p>Be careful when using Dropout. If there are certain features present in your data that doesn't represent general feature but overfitting feature, dropout may force the network to learn overfitting features to decrease loss. (you can think of an overfitting feature something that is not protein in an image, but something irrelevant present in a given class). Other regularisation techniques help in complementary to dropout. </p></li>\n</ol>\n\n<p>Fun fact: Neural networks are like babies. You can spoil them really easily if you force to teach them everything or leave them alone to learn as they will. Teach them slowly and patiently.</p>\n\n<p>Have fun!!</p>",
          "rawMarkdown": "Few things to deal with overfitting:\n\n1. Most robust way is to use a validation set that is not very similar to train set but still represents test set. Usually, when your training loss is getting lower significantly compared to validation loss, it's a sign of overfitting. You may want to use early stopping or use an earlier checkpoint in that case when validation loss starts increasing. However, sometimes maximising competition validation metric helps, even if validation loss increases. But for this competition, there are similar images in train set. So your validation metric(e.g. F-1) may increase with your training, but it is because your validation set contains similar images like train, and you will not know if your model is overfitting.\n\n2. Be careful when using Dropout. If there are certain features present in your data that doesn't represent general feature but overfitting feature, dropout may force the network to learn overfitting features to decrease loss. (you can think of an overfitting feature something that is not protein in an image, but something irrelevant present in a given class). Other regularisation techniques help in complementary to dropout. \n\nFun fact: Neural networks are like babies. You can spoil them really easily if you force to teach them everything or leave them alone to learn as they will. Teach them slowly and patiently.\n\nHave fun!!",
          "votes": 9
        },
        {
          "id": 447883,
          "postDate": "2018-12-30T19:07:39.980Z",
          "content": "<p>Augmentation is your friend! Try flipping and rotating for start. The more augmentation you use the more robust your network will be, as it won't see \"the same\" images all the time. Make sure the original images still show once in a while... </p>",
          "rawMarkdown": "Augmentation is your friend! Try flipping and rotating for start. The more augmentation you use the more robust your network will be, as it won't see \"the same\" images all the time. Make sure the original images still show once in a while... ",
          "votes": 2
        },
        {
          "id": 447886,
          "postDate": "2018-12-30T19:09:22.767Z",
          "content": "<p>Actually it's the other way around. Babies are like neural networks :) </p>",
          "rawMarkdown": "Actually it's the other way around. Babies are like neural networks :) ",
          "votes": 7
        },
        {
          "id": 448544,
          "postDate": "2019-01-01T13:13:33.023Z",
          "content": "<p>Actually, too wild augmentation can hurt you!</p>",
          "rawMarkdown": "Actually, too wild augmentation can hurt you!\n"
        },
        {
          "id": 449034,
          "postDate": "2019-01-02T15:08:52.120Z",
          "content": "<p>Hi <a href=\"/sgalib\">@sgalib</a>,</p>\n\n<p>Your 1st point is actually really interesting...  How can you make sure that the model is not overfitting if you can't use early stopping ? and can't really trust your local CV F1 score and loss ? Is the solution to manually design this val set to avoid being too similar to train ? Or are you able to completely avoid overfitting with regularization ? </p>",
          "rawMarkdown": "Hi @sgalib,\n\nYour 1st point is actually really interesting...  How can you make sure that the model is not overfitting if you can't use early stopping ? and can't really trust your local CV F1 score and loss ? Is the solution to manually design this val set to avoid being too similar to train ? Or are you able to completely avoid overfitting with regularization ? "
        },
        {
          "id": 449228,
          "postDate": "2019-01-02T20:27:48.487Z",
          "content": "<p>Interesting question. I hope I understood your question correctly.</p>\n\n<ol>\n<li><p>If you can't use early stopping: I suppose every neural network will overfit with favorable hyper-parameter selection if you train them for very long period of time. This is particularly true if the dataset is small and your neural network architecture is very deep/complex.So you have to stop somewhere depending on your training and validation metric.</p></li>\n<li><p>If you can't trust local validation metric: I guess validation metric is your only friend while training. The more effort you put to construct a validation set, the more reward you get. Making a good validation set can be effort-some. You can explore some clustering algorithms to divide your dataset, so that same clusters from same class are not present in both of your tain-val sets. This is one approach, there are tons of others. Fold-wise cross-validation will also give you a hint on how much varience you have between folds, and potentially in test set also. So yes, it's a semi-manual process.</p></li>\n<li><p>In this specific competition, dataset is rather small even with external data. State-of-the art imagenet architectures overfit pretty easily. Regularization reduces overfit but it also suffers from underfitting. So there is a trade-off. I have mostly played with lighter architectures which are less likely to overfit. And early-stopping as well.</p></li>\n<li><p>Last but not the least, suppose you have constructed a good validation set, played to reduce overfit but still not satisfied with your local to LB performance, then check the the ghost in some other places. Study competition metric and have a sense how it might be affecting, because your validation set still may not represent Public LB set!</p></li>\n</ol>\n\n<p>Hope this helps!</p>",
          "rawMarkdown": "Interesting question. I hope I understood your question correctly.\n\n1. If you can't use early stopping: I suppose every neural network will overfit with favorable hyper-parameter selection if you train them for very long period of time. This is particularly true if the dataset is small and your neural network architecture is very deep/complex.So you have to stop somewhere depending on your training and validation metric.\n\n2. If you can't trust local validation metric: I guess validation metric is your only friend while training. The more effort you put to construct a validation set, the more reward you get. Making a good validation set can be effort-some. You can explore some clustering algorithms to divide your dataset, so that same clusters from same class are not present in both of your tain-val sets. This is one approach, there are tons of others. Fold-wise cross-validation will also give you a hint on how much varience you have between folds, and potentially in test set also. So yes, it's a semi-manual process.\n\n3. In this specific competition, dataset is rather small even with external data. State-of-the art imagenet architectures overfit pretty easily. Regularization reduces overfit but it also suffers from underfitting. So there is a trade-off. I have mostly played with lighter architectures which are less likely to overfit. And early-stopping as well.\n\n4. Last but not the least, suppose you have constructed a good validation set, played to reduce overfit but still not satisfied with your local to LB performance, then check the the ghost in some other places. Study competition metric and have a sense how it might be affecting, because your validation set still may not represent Public LB set!\n\nHope this helps!",
          "votes": 5
        },
        {
          "id": 449326,
          "postDate": "2019-01-03T01:02:38.440Z",
          "content": "<p>Thanks a lot for your answer <a href=\"/sgalib\">@sgalib</a> !</p>\n\n<p>Yes I think you got my point. As you said \"there are similar images in train set.\" so when creating your validation you might end up with similar data in train and val, and so even though you overfit, your val loss might still decrease and you won't be able to use early stopping. At least that's the problem I ran into with one of my models. So I wanted to know if you had any advice for this particular case. I guess I should have spent more time on making a proper CV earlier in the competition. I agree with using light models. Where you able to get a stable LB / CV F1 difference ? </p>",
          "rawMarkdown": "Thanks a lot for your answer @sgalib !\n\nYes I think you got my point. As you said \"there are similar images in train set.\" so when creating your validation you might end up with similar data in train and val, and so even though you overfit, your val loss might still decrease and you won't be able to use early stopping. At least that's the problem I ran into with one of my models. So I wanted to know if you had any advice for this particular case. I guess I should have spent more time on making a proper CV earlier in the competition. I agree with using light models. Where you able to get a stable LB / CV F1 difference ? ",
          "votes": 1
        },
        {
          "id": 449802,
          "postDate": "2019-01-03T19:17:22.337Z",
          "content": "<p>Aha... I got your point. If I do not have time to do CV, a quick fix in that case I would do is train a few models with random validation split, average/ensemble predictions. Usually you won't be disappointed! :)</p>",
          "rawMarkdown": "Aha... I got your point. If I do not have time to do CV, a quick fix in that case I would do is train a few models with random validation split, average/ensemble predictions. Usually you won't be disappointed! :)",
          "votes": 1
        }
      ]
    },
    {
      "id": 445226,
      "postDate": "2018-12-26T02:22:41.770Z",
      "content": "<p>I got 0.532 without specifically treating the leak as per the posted leak csv. But for this, I did use the HPA data which had the leak data in it. I did not specifically exclude this. \nAdding the leak csv to this boosted the score a bunch.</p>\n\n<p>Have you tried adding leak info to your submission? If so, what boost did you get?</p>",
      "rawMarkdown": "I got 0.532 without specifically treating the leak as per the posted leak csv. But for this, I did use the HPA data which had the leak data in it. I did not specifically exclude this. \nAdding the leak csv to this boosted the score a bunch.\n\nHave you tried adding leak info to your submission? If so, what boost did you get?",
      "replies": [
        {
          "id": 445260,
          "postDate": "2018-12-26T04:20:48.353Z",
          "content": "<p>The difference is smaller and smaller as my models improve. Currently its 0.555-&gt;0.566</p>",
          "rawMarkdown": "The difference is smaller and smaller as my models improve. Currently its 0.555-&gt;0.566"
        },
        {
          "id": 445281,
          "postDate": "2018-12-26T05:58:17.600Z",
          "content": "<p>boost 0.006 with brain's 126 leak</p>",
          "rawMarkdown": "boost 0.006 with brain's 126 leak",
          "votes": 1
        },
        {
          "id": 445343,
          "postDate": "2018-12-26T08:45:38.897Z",
          "content": "<p>Amazing. Looks like you got a very good answer for those two classes without help, just by using HPA. To be honest, I feel that a lot of my score is due to random boosts and that randomness is playing a big part here.</p>",
          "rawMarkdown": "Amazing. Looks like you got a very good answer for those two classes without help, just by using HPA. To be honest, I feel that a lot of my score is due to random boosts and that randomness is playing a big part here.",
          "votes": -1
        },
        {
          "id": 445425,
          "postDate": "2018-12-26T12:30:32.073Z",
          "content": "<p>@Kevin Zheng</p>\n\n<p>there are two leak:</p>\n\n<ol>\n<li>leak 126 </li>\n</ol>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/73395\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/73395</a></p>\n\n<p><a href=\"https://storage.googleapis.com/kaggle-forum-message-attachments/433234/10820/overlap.py\">https://storage.googleapis.com/kaggle-forum-message-attachments/433234/10820/overlap.py</a></p>\n\n<ol>\n<li>leak 259</li>\n</ol>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/72534\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/72534</a></p>\n\n<p>TestEtraMatchingUnder_259_R14_G12_B10.csv (18.92 KB)</p>\n\n<p>for the same input test image, leak126 and leak256 sometimes disagree on the labels. i think leak259 is more correct </p>",
          "rawMarkdown": "@Kevin Zheng\n \nthere are two leak:\n\n\n1. leak 126 \n\nhttps://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/73395\n\nhttps://storage.googleapis.com/kaggle-forum-message-attachments/433234/10820/overlap.py\n\n\n2. leak 259\n\nhttps://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/72534\n\nTestEtraMatchingUnder_259_R14_G12_B10.csv (18.92 KB)\n\nfor the same input test image, leak126 and leak256 sometimes disagree on the labels. i think leak259 is more correct \n\n"
        },
        {
          "id": 445429,
          "postDate": "2018-12-26T12:44:14.290Z",
          "content": "<p>Thanks, Heng. Learn a lot from you. Happy to see you in the challenge!</p>",
          "rawMarkdown": "Thanks, Heng. Learn a lot from you. Happy to see you in the challenge!"
        },
        {
          "id": 449348,
          "postDate": "2019-01-03T02:16:21.337Z",
          "content": "<p>Thanks <a href=\"/hengck23\">@hengck23</a>. For the leaked data, I downloaded \"TestEtraMatchingUnder259R14G12B10.csv\" but don't see any labels. Is that left as an exercise for the reader?</p>",
          "rawMarkdown": "Thanks @hengck23. For the leaked data, I downloaded \"TestEtraMatchingUnder259R14G12B10.csv\" but don't see any labels. Is that left as an exercise for the reader?"
        }
      ]
    },
    {
      "id": 444883,
      "postDate": "2018-12-25T04:10:01.817Z",
      "content": "<p>0.576, 512 image size, BNInception, with external data.</p>",
      "rawMarkdown": "0.576, 512 image size, BNInception, with external data.",
      "replies": [
        {
          "id": 444897,
          "postDate": "2018-12-25T05:07:39.547Z",
          "content": "<p>Sounds like Inception help capture multi-scale information?</p>",
          "rawMarkdown": "Sounds like Inception help capture multi-scale information?"
        },
        {
          "id": 444898,
          "postDate": "2018-12-25T05:17:59.457Z",
          "content": "<p>Not sure, I used several models (inception or non-inception), they have similar performance.</p>",
          "rawMarkdown": "Not sure, I used several models (inception or non-inception), they have similar performance."
        },
        {
          "id": 445318,
          "postDate": "2018-12-26T07:48:13.873Z",
          "content": "<p>Can you share more details? Thx!</p>",
          "rawMarkdown": "Can you share more details? Thx!"
        },
        {
          "id": 445432,
          "postDate": "2018-12-26T12:53:51.743Z",
          "content": "<p>@ManyFoldCV</p>\n\n<p>\" I used several models (inception or non-inception), they have similar performance.\"</p>\n\n<p>In my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.</p>\n\n<p>resnet has less correct multi-label images and more less false positive.</p>",
          "rawMarkdown": "@ManyFoldCV\n \n\" I used several models (inception or non-inception), they have similar performance.\"\n\nIn my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.\n\nresnet has less correct multi-label images and more less false positive.",
          "votes": 1
        },
        {
          "id": 446105,
          "postDate": "2018-12-27T13:59:35.807Z",
          "content": "<p>Could you please share which implementation of BN-Inception do you use? Is it from Cadene repo with PyTorch pretrained models?</p>",
          "rawMarkdown": "Could you please share which implementation of BN-Inception do you use? Is it from Cadene repo with PyTorch pretrained models?",
          "votes": 1
        },
        {
          "id": 446121,
          "postDate": "2018-12-27T14:42:26.973Z",
          "content": "<p>Yes, i am using pretrain model from Cadene repo</p>",
          "rawMarkdown": "Yes, i am using pretrain model from Cadene repo",
          "votes": 2
        },
        {
          "id": 446163,
          "postDate": "2018-12-27T16:27:29.610Z",
          "rawMarkdown": "",
          "isDeleted": true
        },
        {
          "id": 446164,
          "postDate": "2018-12-27T16:28:13.957Z",
          "content": "<p>The one from Cadene repo <a href=\"/hokmund\">@hokmund</a></p>",
          "rawMarkdown": "The one from Cadene repo @hokmund",
          "votes": 1
        },
        {
          "id": 446165,
          "postDate": "2018-12-27T16:28:34.050Z",
          "content": "<p>Check my discussion post :D <a href=\"/chrisluu\">@chrisluu</a></p>",
          "rawMarkdown": "Check my discussion post :D @chrisluu"
        },
        {
          "id": 447888,
          "postDate": "2018-12-30T19:17:43.150Z",
          "content": "<p><a href=\"/hengck23\">@hengck23</a>\n'In my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.\nresnet has less correct multi-label images and more less false positive.'</p>\n\n<p>I think this is an important observation. I reached the same conclusion. I am using mostly resnets.</p>",
          "rawMarkdown": "@hengck23\n'In my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.\nresnet has less correct multi-label images and more less false positive.'\n\nI think this is an important observation. I reached the same conclusion. I am using mostly resnets.\n",
          "votes": 2
        },
        {
          "id": 447957,
          "postDate": "2018-12-30T22:38:42.107Z",
          "content": "<p>Hi <a href=\"/arnaurm\">@arnaurm</a>, Do you have any ideas about the reason?</p>",
          "rawMarkdown": "Hi @arnaurm, Do you have any ideas about the reason?"
        },
        {
          "id": 448151,
          "postDate": "2018-12-31T10:56:14.340Z",
          "content": "<p>No, not really</p>",
          "rawMarkdown": "No, not really"
        },
        {
          "id": 448429,
          "postDate": "2019-01-01T06:14:30.673Z",
          "content": "<p>Another observation:</p>\n\n<p>I compute f1 for single label and multi label for validation during the metering in the training iterations.  If i sample more multi label train images in a batch, i can see both validation f1 falls.</p>\n\n<p>However, public lb is significantly worsen.</p>",
          "rawMarkdown": "Another observation:\n\nI compute f1 for single label and multi label for validation during the metering in the training iterations.  If i sample more multi label train images in a batch, i can see both validation f1 falls.\n\nHowever, public lb is significantly worsen."
        }
      ]
    },
    {
      "id": 444737,
      "postDate": "2018-12-24T17:13:13.520Z",
      "content": "<p>0.545 resnet34 with naive 0.5 thresholds</p>",
      "rawMarkdown": "0.545 resnet34 with naive 0.5 thresholds",
      "replies": [
        {
          "id": 444865,
          "postDate": "2018-12-25T02:41:00.983Z",
          "content": "<p>Thanks for reply. Now I use multi thresholds searching from val dataset. I will try single threshold.</p>",
          "rawMarkdown": "Thanks for reply. Now I use multi thresholds searching from val dataset. I will try single threshold."
        },
        {
          "id": 444914,
          "postDate": "2018-12-25T06:29:12.733Z",
          "content": "<p>@Florian Muellerklein</p>\n\n<p>lower threshold (e.g. 0.3 for my case) seems to give better results. Did you compare results for other threshold values or adaptive thresholds for different classes?</p>",
          "rawMarkdown": "@Florian Muellerklein\n\nlower threshold (e.g. 0.3 for my case) seems to give better results. Did you compare results for other threshold values or adaptive thresholds for different classes?"
        },
        {
          "id": 445072,
          "postDate": "2018-12-25T14:51:20.017Z",
          "content": "<p>I don't want to choose thresholds just based only on the public leaderboard performance. I've done some local threshold search with my validation sets but they do worse on the public leaderboard. </p>",
          "rawMarkdown": "I don't want to choose thresholds just based only on the public leaderboard performance. I've done some local threshold search with my validation sets but they do worse on the public leaderboard. ",
          "votes": 2
        }
      ]
    },
    {
      "id": 444654,
      "postDate": "2018-12-24T13:50:08.520Z",
      "content": "<p>How image size do you use?\nI used self-designed seresnet50 with 512x512, Public LB: 0.539</p>",
      "rawMarkdown": "How image size do you use?\nI used self-designed seresnet50 with 512x512, Public LB: 0.539",
      "replies": [
        {
          "id": 444710,
          "postDate": "2018-12-24T16:09:29.317Z",
          "content": "<p>256x256</p>",
          "rawMarkdown": "256x256",
          "votes": 1
        }
      ]
    },
    {
      "id": 444598,
      "postDate": "2018-12-24T10:48:19.673Z",
      "content": "<p>I only got 0.517 without leak and additional data using backbone resnet50</p>",
      "rawMarkdown": "I only got 0.517 without leak and additional data using backbone resnet50",
      "replies": [
        {
          "id": 444608,
          "postDate": "2018-12-24T11:08:36.167Z",
          "content": "<p>Thanks for reply. Focus on your loss function design maybe help. Good luck.</p>",
          "rawMarkdown": "Thanks for reply. Focus on your loss function design maybe help. Good luck.",
          "votes": 3
        },
        {
          "id": 444659,
          "postDate": "2018-12-24T14:12:04.997Z",
          "content": "<p>I am curious about your image size. I think the reason why using resnet18 is to fit the larger image ?</p>",
          "rawMarkdown": "I am curious about your image size. I think the reason why using resnet18 is to fit the larger image ?"
        },
        {
          "id": 444709,
          "postDate": "2018-12-24T16:09:12.723Z",
          "content": "<p>256x256</p>",
          "rawMarkdown": "256x256",
          "votes": 2
        },
        {
          "id": 444712,
          "postDate": "2018-12-24T16:15:08.663Z",
          "content": "<p>Amazing performance ! Do you use external data ?</p>",
          "rawMarkdown": "Amazing performance ! Do you use external data ?"
        },
        {
          "id": 444716,
          "postDate": "2018-12-24T16:25:12.693Z",
          "content": "<p>Yes, I use HPAv18 external data.</p>",
          "rawMarkdown": "Yes, I use HPAv18 external data."
        },
        {
          "id": 444722,
          "postDate": "2018-12-24T16:45:16.100Z",
          "content": "<p>Just found out the author of this <a href=\"https://www.kaggle.com/mathormad/inceptionv3-baseline-lb-0-379\">kernel</a> can achieve 0.577 with external data (inception V3)</p>",
          "rawMarkdown": "Just found out the author of this [kernel][1] can achieve 0.577 with external data (inception V3)\n\n\n  [1]: https://www.kaggle.com/mathormad/inceptionv3-baseline-lb-0-379 \"kernel\"",
          "votes": 2
        },
        {
          "id": 444733,
          "postDate": "2018-12-24T17:00:18.223Z",
          "content": "<p>Thanks!</p>",
          "rawMarkdown": "Thanks!"
        },
        {
          "id": 445312,
          "postDate": "2018-12-26T07:35:04.487Z",
          "content": "<p>That's amazing! Do you try a larger image size? What about the results? For my observation, the larger image size will help improve LB score. </p>",
          "rawMarkdown": "That's amazing! Do you try a larger image size? What about the results? For my observation, the larger image size will help improve LB score. "
        },
        {
          "id": 445387,
          "postDate": "2018-12-26T10:59:02.143Z",
          "content": "<p>I will try. GPU is my bottleneck now...</p>",
          "rawMarkdown": "I will try. GPU is my bottleneck now..."
        },
        {
          "id": 448210,
          "postDate": "2018-12-31T13:18:58.480Z",
          "content": "<p>@tkuanlun350</p>\n\n<p>\"I only got 0.517 without leak and additional data using backbone resnet50\"</p>\n\n<p>0.517 is without hpa external data?</p>",
          "rawMarkdown": "@tkuanlun350\n\n\"I only got 0.517 without leak and additional data using backbone resnet50\"\n\n 0.517 is without hpa external data?"
        },
        {
          "id": 448230,
          "postDate": "2018-12-31T14:42:55.323Z",
          "content": "<p>Yes, however 0.517 for single fold without external and TTA is just one-time luck (cannot get external data work at that time). I cannot reproduce the performance for the same setting.  After some tuning and bug fixing, my current single fold model with external data ~0.58( with TTA )</p>",
          "rawMarkdown": "Yes, however 0.517 for single fold without external and TTA is just one-time luck (cannot get external data work at that time). I cannot reproduce the performance for the same setting.  After some tuning and bug fixing, my current single fold model with external data ~0.58( with TTA )"
        },
        {
          "id": 448418,
          "postDate": "2019-01-01T05:15:12.977Z",
          "content": "<p>Same as you. Now my single fold model with external data get lb 0.580. May I ask you how you choose threshold?</p>",
          "rawMarkdown": "Same as you. Now my single fold model with external data get lb 0.580. May I ask you how you choose threshold?"
        },
        {
          "id": 449160,
          "postDate": "2019-01-02T18:19:31.660Z",
          "content": "<p>You can decide on different threshold for each class which can be deduced from the validation set.</p>",
          "rawMarkdown": "You can decide on different threshold for each class which can be deduced from the validation set."
        },
        {
          "id": 449699,
          "postDate": "2019-01-03T16:08:38.990Z",
          "content": "<p><a href=\"/hdzheng\">@hdzheng</a>\nI am just using the same threshold for every class (based on LB). Threshold selection is not working very well in my current setting :(</p>",
          "rawMarkdown": "@hdzheng\nI am just using the same threshold for every class (based on LB). Threshold selection is not working very well in my current setting :("
        },
        {
          "id": 449709,
          "postDate": "2019-01-03T16:25:00.563Z",
          "content": "<p>@tkuanlun350,\nHow much did you improve the LB by fine-tuning the thresholds?\nmy best single model can get 0.59 on LB with the optimal threshold from 5-fold validation.\nSo I am wondering if I should change the threshold or not.</p>",
          "rawMarkdown": "@tkuanlun350,\nHow much did you improve the LB by fine-tuning the thresholds?\nmy best single model can get 0.59 on LB with the optimal threshold from 5-fold validation.\nSo I am wondering if I should change the threshold or not.\n"
        }
      ]
    },
    {
      "id": 448186,
      "postDate": "2018-12-31T11:58:12.313Z",
      "rawMarkdown": "",
      "votes": 2,
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 445783,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2018-12-27T03:50:09.140000",
      "content": "<p>my weird results on 512x512 images. All results below is single fold without TTA, without ensemble</p>\n\n<p>resnet18 on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.755 (F1@0.5)</p>\n\n<p>public lb: 0.551 (F1@0.3) without leak</p>\n\n<p>public lb: 0.550 (F1@0.3) overwrite prediction with leak259</p>\n\n<hr>\n\n<p>inception-bn on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.785 (F1@0.5)</p>\n\n<p>public lb: 0.530 (F1@0.3) without leak</p>\n\n<p>public lb: 0.530 (F1@0.3) overwrite prediction with leak259</p>\n\n<hr>\n\n<p>resnet34 on train = kaggle+external(HPAv18RBGY_wodpl):</p>\n\n<p>local lb : 0.795 (F1@0.5)</p>\n\n<p>public lb: 0.511 (F1@0.3) overwrite prediction with leak259</p>",
      "votes": 11,
      "replies": [
        {
          "id": 445792,
          "author_name": "Iafoss",
          "author_url": "",
          "post_date": "2018-12-27T04:15:22.420000",
          "content": "<p>Thank you for sharing your result. Did you find the explanation to the decrease of public LB score with increase of the val score? I see exactly the same trend, and my model with 0.80 val score perform worse on public LB than models having 0.75?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 445816,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2018-12-27T04:59:57.613000",
          "content": "<p>Far from being expert but my guess would be that the model became better at predicting the abundant classes, hence the val_loss improvement (which is not class  avg) but it caused the f1 macro score (which is class avg) to drop. Very hard to avoid this, alas.... I actually over-sampled only in my training set and thinking back it might not be the correct strategy. </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445849,
          "author_name": "Wang Xinliang",
          "author_url": "",
          "post_date": "2018-12-27T05:49:14.833000",
          "content": "<p>Hi Heng CherKeng. For \"F1@0.5\", what's the meaning of @?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445851,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-27T05:57:39.483000",
          "content": "<p>F1 computed with threshold 0.5</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445872,
          "author_name": "Wang Xinliang",
          "author_url": "",
          "post_date": "2018-12-27T06:36:47.107000",
          "content": "<p>Thank you~</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449629,
          "author_name": "Peterzhang",
          "author_url": "",
          "post_date": "2019-01-03T13:18:20.417000",
          "content": "<p>How did you split data into train and val?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 453154,
          "author_name": "Miroslav Valan",
          "author_url": "",
          "post_date": "2019-01-09T18:45:12.310000",
          "content": "<p><a href=\"/hengck23\">@hengck23</a> and @iafos just started to use external data and I am observing exactly the same F1 0.75-0.80  with resnet18 scores 0.53-0.51 on LB. Any advice?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 449127,
      "author_name": "Dieter",
      "author_url": "",
      "post_date": "2019-01-02T17:35:35.170000",
      "content": "<p>I have two quite different architectures both LB 0.6+</p>\n\n<ul>\n<li>5-fold</li>\n<li>rgb</li>\n<li>512x512</li>\n</ul>\n\n<p><a href=\"/trangle1302\">@trangle1302</a> If I would run in kernels I guess I could reach 0.55+ with them</p>",
      "votes": 8,
      "replies": [
        {
          "id": 449545,
          "author_name": "",
          "author_url": "",
          "post_date": "2019-01-03T10:32:44.677000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451713,
          "author_name": "souraj",
          "author_url": "",
          "post_date": "2019-01-07T14:32:08.343000",
          "content": "<p>How to preprocess the images with 4 channels, when using pre-trained models. With 5-fold CV and 512 image size, and oversampling and using adam, I am not able to get past 0.50 :(</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451799,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-01-07T17:17:02.440000",
          "content": "<p>I also used external data for training but not the leak file. <a href=\"/sourajmishra\">@sourajmishra</a> I did not use 4 channels, only 3</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 451809,
          "author_name": "souraj",
          "author_url": "",
          "post_date": "2019-01-07T17:55:33.340000",
          "content": "<p>Thanks. Do you process to compress RBGY to 3 channel somehow, or just use RGB and ignore Y?</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 453137,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-01-09T18:17:36.133000",
          "content": "<p>ignore Y</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 454221,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-01-11T09:10:19.143000",
          "content": "<p>i wrote a quick summary here:</p>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/77300\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/77300</a></p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 444721,
      "author_name": "Duc Nguyen",
      "author_url": "",
      "post_date": "2018-12-24T16:34:49.177000",
      "content": "<p>self-designed InceptionV3 (external data + image size 512x512): 0.577 single fold, 0.599 average of 3 folds</p>",
      "votes": 6,
      "replies": [
        {
          "id": 444732,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T16:59:56.207000",
          "content": "<p>Great work! May I ask that did you use green channel mask attention?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444765,
          "author_name": "Ashish Lal",
          "author_url": "",
          "post_date": "2018-12-24T18:51:09.973000",
          "content": "<p>Very impressive. Can you drop some hints on your approach? </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444850,
          "author_name": "Duc Nguyen",
          "author_url": "",
          "post_date": "2018-12-25T01:31:23.903000",
          "content": "<p>I did not use green channel mask attention. Instead, I design a new method to make the network attend on the rare labels.</p>",
          "votes": 6,
          "replies": []
        },
        {
          "id": 444866,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-25T02:41:34.843000",
          "content": "<p>Thanks for sharing!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445307,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-26T07:28:35.357000",
          "content": "<p>May I ask which loss function you used for this report?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445347,
          "author_name": "Duc Nguyen",
          "author_url": "",
          "post_date": "2018-12-26T08:49:05.817000",
          "content": "<p>Hi Chris, I'm using binary cross-entropy. I tried to combine it with focal loss and f1 loss but pure binary cross-entropy gave me the best result.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 447099,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-29T06:23:28.703000",
          "content": "<p>That's just the opposite of my observation. I'm using self-designed resnet50 with focal loss got 0.574 single fold.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 447102,
          "author_name": "Duc Nguyen",
          "author_url": "",
          "post_date": "2018-12-29T06:32:33.840000",
          "content": "<p>Did you tune the gamma and alpha value? I used the default set up, gamma=2, alpha=0.25</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 447183,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-29T10:18:20.943000",
          "content": "<p>I have tried different settings for gamma and alpha, found that gamma=2, alpha=0.25 gives the best performance.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 450964,
          "author_name": "good good study",
          "author_url": "",
          "post_date": "2019-01-06T07:00:29.613000",
          "content": "<p>Hi, @Chris J.Liu, by using normal ResNet50, how much LB do you get for single fold with focal loss?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 444609,
      "author_name": "Jsato",
      "author_url": "",
      "post_date": "2018-12-24T11:15:39.450000",
      "content": "<p>Could you give me some hints about your loss function??</p>",
      "votes": 1,
      "replies": [
        {
          "id": 444613,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T11:49:42.517000",
          "content": "<p>Check this excellent kernel: <a href=\"https://www.kaggle.com/rejpalcz/best-loss-function-for-f1-score-metric\">https://www.kaggle.com/rejpalcz/best-loss-function-for-f1-score-metric</a>. For me, soft f1 loss works well, some combination may help, on experiment.</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 444814,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2018-12-24T21:56:24.160000",
          "content": "<p>I was under the impression that F1, being a macro metrics, works ok only on very large batches. What is the size of your batch?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444882,
          "author_name": "Iafoss",
          "author_url": "",
          "post_date": "2018-12-25T04:09:05.297000",
          "content": "<p>I have the same experience. On 256x256 with batches 64 and 128 F1 loss works. However, when I tried to move to 512x512 images the performance has degraded, even if I mixed focal and F1 loss. With batch size 16 training didn't really work. </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 444896,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-25T05:00:12.140000",
          "content": "<p>Now my batch size is 128, the performance better than 64.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448892,
          "author_name": "GhMa",
          "author_url": "",
          "post_date": "2019-01-02T10:26:51.957000",
          "content": "<p>definitely larger batch could represent the true distribution of whole dataset, but I wonder the image size u r using now, is it possible to get LB 0.58 + with size 256 * 256 ? \nhope for ur answer hh </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 449449,
      "author_name": "sx318",
      "author_url": "",
      "post_date": "2019-01-03T06:47:03.997000",
      "content": "<p>I have a Resnet50, 512 x 512 image size, external data, and some test data leak, gives a LB 0.569</p>",
      "votes": 2,
      "replies": [
        {
          "id": 451811,
          "author_name": "souraj",
          "author_url": "",
          "post_date": "2019-01-07T17:57:29.420000",
          "content": "<p>Do you get this score with Binary cross entropy, or with some custom loss?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 451867,
          "author_name": "sx318",
          "author_url": "",
          "post_date": "2019-01-07T19:51:45.377000",
          "content": "<p>With BCE, I got higher validation score, but poor LB score, but with focal loss, I got a much better LB score</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 452012,
          "author_name": "souraj",
          "author_url": "",
          "post_date": "2019-01-08T03:07:08.417000",
          "content": "<p>Thank You. With the focal loss, I have tried Adam with staring lr 0.001 and then decreasing it every 10 epochs with gamma 0.1 to 0.5. But it gets stuck on around 0.3 on LB.  Can you suggest some strategy for this.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 452593,
          "author_name": "sx318",
          "author_url": "",
          "post_date": "2019-01-08T23:34:53.607000",
          "content": "<p>I started with 2e-5, and decreasing every 10 epochs, trained with total 30 epochs. </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 444755,
      "author_name": "YALICKJ",
      "author_url": "",
      "post_date": "2018-12-24T18:24:37.677000",
      "content": "<p>0.564, 512x512, resnet34 with HPAv18 external data, single fold. I'm running a 5-fold experiment, but it's taking forever to finish with the external data.</p>",
      "votes": 2,
      "replies": [
        {
          "id": 444890,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-25T04:41:52.730000",
          "content": "<p>Good work!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444913,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-25T06:27:33.850000",
          "content": "<blockquote>\n  <blockquote>\n    <p>0.564, 512x512, resnet34 with HPAv18 external data, single fold</p>\n  </blockquote>\n</blockquote>\n\n<p>Is this with TTA or just on original input images? With is the threshold you are using?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445093,
          "author_name": "YALICKJ",
          "author_url": "",
          "post_date": "2018-12-25T15:54:00.843000",
          "content": "<p>With TTA and adjusted thresholds fitted on the validation set. </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 446094,
      "author_name": "Jun Liu",
      "author_url": "",
      "post_date": "2018-12-27T13:35:16.253000",
      "content": "<p>Hi, @Kevin Zheng, Do you train from scratch? Can you share more details? Like loss function, image size, optimizer, init lr, etc.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 445841,
      "author_name": "Wang Xinliang",
      "author_url": "",
      "post_date": "2018-12-27T05:35:15.313000",
      "content": "<p>Thanks, can you share the lr schedule?</p>",
      "votes": -1,
      "replies": [
        {
          "id": 445914,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-27T07:48:58.197000",
          "content": "<p>SGD,  lr start with 0.1, reduce lr by 0.2 when the loss stop decrease in 8 epochs.</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 446710,
          "author_name": "Borys Tymchenko",
          "author_url": "",
          "post_date": "2018-12-28T14:53:35.627000",
          "content": "<p>Wow!\nHow many epochs does it take?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 447254,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-29T13:37:57.153000",
          "content": "<p>80~100</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 453564,
      "author_name": "Cape",
      "author_url": "",
      "post_date": "2019-01-10T11:28:18.270000",
      "content": "<p>I am curious about what type of resnet you are using?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 453581,
          "author_name": "Miroslav Valan",
          "author_url": "",
          "post_date": "2019-01-10T12:25:17.020000",
          "content": "<p>Same here. People often state they are using self-defined well-known architecture but I have seen cases where this stands for changing the output layer to nets that are just inspired by well known architectures (residual, inception block, etc.). I assume head is self defined but none of the earlier layers are changed (perhaps in conv1 3=&gt;4 channels). </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 451791,
      "author_name": "Gian12",
      "author_url": "",
      "post_date": "2019-01-07T16:51:27.943000",
      "content": "<p>I use a Resnet34, 512 x 512 image size, RGBY, external data, no leaked data, single fold with data augmentation and TTA, upsample of the less frequent classes and it gives a LB 0.568</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 451337,
      "author_name": "Phil Butcher",
      "author_url": "",
      "post_date": "2019-01-06T22:15:54.170000",
      "content": "<p>0.577</p>\n\n<p>Resnet50, 512x512 rgb images, oversampling rare classes, simple data augmentation, external data, 5-fold with TTA, BCE loss</p>\n\n<p>The leak boosts me to 0.588. Oversampling dramatically reduced the boost I was getting from the leak.</p>",
      "votes": 0,
      "replies": [
        {
          "id": 451397,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2019-01-07T02:43:52.157000",
          "content": "<p>cool, thx for ur sharing. Do u use leak126 ?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451406,
          "author_name": "Peterzhang",
          "author_url": "",
          "post_date": "2019-01-07T03:01:58.177000",
          "content": "<p>Thanks for sharing, May I ask did you try rgby? what's the result?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451416,
          "author_name": "Phil Butcher",
          "author_url": "",
          "post_date": "2019-01-07T03:47:40.093000",
          "content": "<p>I've been using leak259</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451417,
          "author_name": "Phil Butcher",
          "author_url": "",
          "post_date": "2019-01-07T03:49:21.777000",
          "content": "<p>I've tried rgby several times with slightly worse results than rgb. I don't have a good understanding why that is.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 451533,
          "author_name": "good good study",
          "author_url": "",
          "post_date": "2019-01-07T08:34:41.310000",
          "content": "<p>Hi, Do you use same threshold for all classes? or choose threshold from validation set?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 448773,
      "author_name": "Peterzhang",
      "author_url": "",
      "post_date": "2019-01-02T04:18:18.413000",
      "content": "<p>Can you guys tell me the way of split the trainval? my val is not robust, the score on lb didn't increase even thought local increases by a large margin</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 447844,
      "author_name": "Sabbir Ahmed",
      "author_url": "",
      "post_date": "2018-12-30T18:02:19.110000",
      "content": "<p>ResNet18 is overfitting even after using external data and dropout(0.5). Can Anyone give any suggestion to avoid this problem??</p>",
      "votes": 0,
      "replies": [
        {
          "id": 447881,
          "author_name": "Shai",
          "author_url": "",
          "post_date": "2018-12-30T18:56:13.693000",
          "content": "<p>Few things to deal with overfitting:</p>\n\n<ol>\n<li><p>Most robust way is to use a validation set that is not very similar to train set but still represents test set. Usually, when your training loss is getting lower significantly compared to validation loss, it's a sign of overfitting. You may want to use early stopping or use an earlier checkpoint in that case when validation loss starts increasing. However, sometimes maximising competition validation metric helps, even if validation loss increases. But for this competition, there are similar images in train set. So your validation metric(e.g. F-1) may increase with your training, but it is because your validation set contains similar images like train, and you will not know if your model is overfitting.</p></li>\n<li><p>Be careful when using Dropout. If there are certain features present in your data that doesn't represent general feature but overfitting feature, dropout may force the network to learn overfitting features to decrease loss. (you can think of an overfitting feature something that is not protein in an image, but something irrelevant present in a given class). Other regularisation techniques help in complementary to dropout. </p></li>\n</ol>\n\n<p>Fun fact: Neural networks are like babies. You can spoil them really easily if you force to teach them everything or leave them alone to learn as they will. Teach them slowly and patiently.</p>\n\n<p>Have fun!!</p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 447883,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2018-12-30T19:07:39.980000",
          "content": "<p>Augmentation is your friend! Try flipping and rotating for start. The more augmentation you use the more robust your network will be, as it won't see \"the same\" images all the time. Make sure the original images still show once in a while... </p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 447886,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2018-12-30T19:09:22.767000",
          "content": "<p>Actually it's the other way around. Babies are like neural networks :) </p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 448544,
          "author_name": "Borys Tymchenko",
          "author_url": "",
          "post_date": "2019-01-01T13:13:33.023000",
          "content": "<p>Actually, too wild augmentation can hurt you!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449034,
          "author_name": "Antoine",
          "author_url": "",
          "post_date": "2019-01-02T15:08:52.120000",
          "content": "<p>Hi <a href=\"/sgalib\">@sgalib</a>,</p>\n\n<p>Your 1st point is actually really interesting...  How can you make sure that the model is not overfitting if you can't use early stopping ? and can't really trust your local CV F1 score and loss ? Is the solution to manually design this val set to avoid being too similar to train ? Or are you able to completely avoid overfitting with regularization ? </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449228,
          "author_name": "Shai",
          "author_url": "",
          "post_date": "2019-01-02T20:27:48.487000",
          "content": "<p>Interesting question. I hope I understood your question correctly.</p>\n\n<ol>\n<li><p>If you can't use early stopping: I suppose every neural network will overfit with favorable hyper-parameter selection if you train them for very long period of time. This is particularly true if the dataset is small and your neural network architecture is very deep/complex.So you have to stop somewhere depending on your training and validation metric.</p></li>\n<li><p>If you can't trust local validation metric: I guess validation metric is your only friend while training. The more effort you put to construct a validation set, the more reward you get. Making a good validation set can be effort-some. You can explore some clustering algorithms to divide your dataset, so that same clusters from same class are not present in both of your tain-val sets. This is one approach, there are tons of others. Fold-wise cross-validation will also give you a hint on how much varience you have between folds, and potentially in test set also. So yes, it's a semi-manual process.</p></li>\n<li><p>In this specific competition, dataset is rather small even with external data. State-of-the art imagenet architectures overfit pretty easily. Regularization reduces overfit but it also suffers from underfitting. So there is a trade-off. I have mostly played with lighter architectures which are less likely to overfit. And early-stopping as well.</p></li>\n<li><p>Last but not the least, suppose you have constructed a good validation set, played to reduce overfit but still not satisfied with your local to LB performance, then check the the ghost in some other places. Study competition metric and have a sense how it might be affecting, because your validation set still may not represent Public LB set!</p></li>\n</ol>\n\n<p>Hope this helps!</p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 449326,
          "author_name": "Antoine",
          "author_url": "",
          "post_date": "2019-01-03T01:02:38.440000",
          "content": "<p>Thanks a lot for your answer <a href=\"/sgalib\">@sgalib</a> !</p>\n\n<p>Yes I think you got my point. As you said \"there are similar images in train set.\" so when creating your validation you might end up with similar data in train and val, and so even though you overfit, your val loss might still decrease and you won't be able to use early stopping. At least that's the problem I ran into with one of my models. So I wanted to know if you had any advice for this particular case. I guess I should have spent more time on making a proper CV earlier in the competition. I agree with using light models. Where you able to get a stable LB / CV F1 difference ? </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 449802,
          "author_name": "Shai",
          "author_url": "",
          "post_date": "2019-01-03T19:17:22.337000",
          "content": "<p>Aha... I got your point. If I do not have time to do CV, a quick fix in that case I would do is train a few models with random validation split, average/ensemble predictions. Usually you won't be disappointed! :)</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 445226,
      "author_name": "pete",
      "author_url": "",
      "post_date": "2018-12-26T02:22:41.770000",
      "content": "<p>I got 0.532 without specifically treating the leak as per the posted leak csv. But for this, I did use the HPA data which had the leak data in it. I did not specifically exclude this. \nAdding the leak csv to this boosted the score a bunch.</p>\n\n<p>Have you tried adding leak info to your submission? If so, what boost did you get?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 445260,
          "author_name": "Moshel",
          "author_url": "",
          "post_date": "2018-12-26T04:20:48.353000",
          "content": "<p>The difference is smaller and smaller as my models improve. Currently its 0.555-&gt;0.566</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445281,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-26T05:58:17.600000",
          "content": "<p>boost 0.006 with brain's 126 leak</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 445343,
          "author_name": "pete",
          "author_url": "",
          "post_date": "2018-12-26T08:45:38.897000",
          "content": "<p>Amazing. Looks like you got a very good answer for those two classes without help, just by using HPA. To be honest, I feel that a lot of my score is due to random boosts and that randomness is playing a big part here.</p>",
          "votes": -1,
          "replies": []
        },
        {
          "id": 445425,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-26T12:30:32.073000",
          "content": "<p>@Kevin Zheng</p>\n\n<p>there are two leak:</p>\n\n<ol>\n<li>leak 126 </li>\n</ol>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/73395\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/73395</a></p>\n\n<p><a href=\"https://storage.googleapis.com/kaggle-forum-message-attachments/433234/10820/overlap.py\">https://storage.googleapis.com/kaggle-forum-message-attachments/433234/10820/overlap.py</a></p>\n\n<ol>\n<li>leak 259</li>\n</ol>\n\n<p><a href=\"https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/72534\">https://www.kaggle.com/c/human-protein-atlas-image-classification/discussion/72534</a></p>\n\n<p>TestEtraMatchingUnder_259_R14_G12_B10.csv (18.92 KB)</p>\n\n<p>for the same input test image, leak126 and leak256 sometimes disagree on the labels. i think leak259 is more correct </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445429,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-26T12:44:14.290000",
          "content": "<p>Thanks, Heng. Learn a lot from you. Happy to see you in the challenge!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449348,
          "author_name": "Breck",
          "author_url": "",
          "post_date": "2019-01-03T02:16:21.337000",
          "content": "<p>Thanks <a href=\"/hengck23\">@hengck23</a>. For the leaked data, I downloaded \"TestEtraMatchingUnder259R14G12B10.csv\" but don't see any labels. Is that left as an exercise for the reader?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 444883,
      "author_name": "Kulbear",
      "author_url": "",
      "post_date": "2018-12-25T04:10:01.817000",
      "content": "<p>0.576, 512 image size, BNInception, with external data.</p>",
      "votes": 0,
      "replies": [
        {
          "id": 444897,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-25T05:07:39.547000",
          "content": "<p>Sounds like Inception help capture multi-scale information?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444898,
          "author_name": "Kulbear",
          "author_url": "",
          "post_date": "2018-12-25T05:17:59.457000",
          "content": "<p>Not sure, I used several models (inception or non-inception), they have similar performance.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445318,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-26T07:48:13.873000",
          "content": "<p>Can you share more details? Thx!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445432,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-26T12:53:51.743000",
          "content": "<p>@ManyFoldCV</p>\n\n<p>\" I used several models (inception or non-inception), they have similar performance.\"</p>\n\n<p>In my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.</p>\n\n<p>resnet has less correct multi-label images and more less false positive.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 446105,
          "author_name": "Dmytro Panchenko",
          "author_url": "",
          "post_date": "2018-12-27T13:59:35.807000",
          "content": "<p>Could you please share which implementation of BN-Inception do you use? Is it from Cadene repo with PyTorch pretrained models?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 446121,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-27T14:42:26.973000",
          "content": "<p>Yes, i am using pretrain model from Cadene repo</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 446163,
          "author_name": "",
          "author_url": "",
          "post_date": "2018-12-27T16:27:29.610000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 446164,
          "author_name": "Kulbear",
          "author_url": "",
          "post_date": "2018-12-27T16:28:13.957000",
          "content": "<p>The one from Cadene repo <a href=\"/hokmund\">@hokmund</a></p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 446165,
          "author_name": "Kulbear",
          "author_url": "",
          "post_date": "2018-12-27T16:28:34.050000",
          "content": "<p>Check my discussion post :D <a href=\"/chrisluu\">@chrisluu</a></p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 447888,
          "author_name": "FlYM",
          "author_url": "",
          "post_date": "2018-12-30T19:17:43.150000",
          "content": "<p><a href=\"/hengck23\">@hengck23</a>\n'In my experiments, they are same in F1 score. But inception has more correct multi-label images and more wrong false positive.\nresnet has less correct multi-label images and more less false positive.'</p>\n\n<p>I think this is an important observation. I reached the same conclusion. I am using mostly resnets.</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 447957,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-30T22:38:42.107000",
          "content": "<p>Hi <a href=\"/arnaurm\">@arnaurm</a>, Do you have any ideas about the reason?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448151,
          "author_name": "FlYM",
          "author_url": "",
          "post_date": "2018-12-31T10:56:14.340000",
          "content": "<p>No, not really</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448429,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2019-01-01T06:14:30.673000",
          "content": "<p>Another observation:</p>\n\n<p>I compute f1 for single label and multi label for validation during the metering in the training iterations.  If i sample more multi label train images in a batch, i can see both validation f1 falls.</p>\n\n<p>However, public lb is significantly worsen.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 444737,
      "author_name": "Florian Muellerklein",
      "author_url": "",
      "post_date": "2018-12-24T17:13:13.520000",
      "content": "<p>0.545 resnet34 with naive 0.5 thresholds</p>",
      "votes": 0,
      "replies": [
        {
          "id": 444865,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-25T02:41:00.983000",
          "content": "<p>Thanks for reply. Now I use multi thresholds searching from val dataset. I will try single threshold.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444914,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-25T06:29:12.733000",
          "content": "<p>@Florian Muellerklein</p>\n\n<p>lower threshold (e.g. 0.3 for my case) seems to give better results. Did you compare results for other threshold values or adaptive thresholds for different classes?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445072,
          "author_name": "Florian Muellerklein",
          "author_url": "",
          "post_date": "2018-12-25T14:51:20.017000",
          "content": "<p>I don't want to choose thresholds just based only on the public leaderboard performance. I've done some local threshold search with my validation sets but they do worse on the public leaderboard. </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 444654,
      "author_name": "owruby",
      "author_url": "",
      "post_date": "2018-12-24T13:50:08.520000",
      "content": "<p>How image size do you use?\nI used self-designed seresnet50 with 512x512, Public LB: 0.539</p>",
      "votes": 0,
      "replies": [
        {
          "id": 444710,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T16:09:29.317000",
          "content": "<p>256x256</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 444598,
      "author_name": "tkuanlun350",
      "author_url": "",
      "post_date": "2018-12-24T10:48:19.673000",
      "content": "<p>I only got 0.517 without leak and additional data using backbone resnet50</p>",
      "votes": 0,
      "replies": [
        {
          "id": 444608,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T11:08:36.167000",
          "content": "<p>Thanks for reply. Focus on your loss function design maybe help. Good luck.</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 444659,
          "author_name": "tkuanlun350",
          "author_url": "",
          "post_date": "2018-12-24T14:12:04.997000",
          "content": "<p>I am curious about your image size. I think the reason why using resnet18 is to fit the larger image ?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444709,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T16:09:12.723000",
          "content": "<p>256x256</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 444712,
          "author_name": "tkuanlun350",
          "author_url": "",
          "post_date": "2018-12-24T16:15:08.663000",
          "content": "<p>Amazing performance ! Do you use external data ?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444716,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T16:25:12.693000",
          "content": "<p>Yes, I use HPAv18 external data.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 444722,
          "author_name": "tkuanlun350",
          "author_url": "",
          "post_date": "2018-12-24T16:45:16.100000",
          "content": "<p>Just found out the author of this <a href=\"https://www.kaggle.com/mathormad/inceptionv3-baseline-lb-0-379\">kernel</a> can achieve 0.577 with external data (inception V3)</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 444733,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-24T17:00:18.223000",
          "content": "<p>Thanks!</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445312,
          "author_name": "Jun Liu",
          "author_url": "",
          "post_date": "2018-12-26T07:35:04.487000",
          "content": "<p>That's amazing! Do you try a larger image size? What about the results? For my observation, the larger image size will help improve LB score. </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 445387,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2018-12-26T10:59:02.143000",
          "content": "<p>I will try. GPU is my bottleneck now...</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448210,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2018-12-31T13:18:58.480000",
          "content": "<p>@tkuanlun350</p>\n\n<p>\"I only got 0.517 without leak and additional data using backbone resnet50\"</p>\n\n<p>0.517 is without hpa external data?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448230,
          "author_name": "tkuanlun350",
          "author_url": "",
          "post_date": "2018-12-31T14:42:55.323000",
          "content": "<p>Yes, however 0.517 for single fold without external and TTA is just one-time luck (cannot get external data work at that time). I cannot reproduce the performance for the same setting.  After some tuning and bug fixing, my current single fold model with external data ~0.58( with TTA )</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 448418,
          "author_name": "Kevin Zheng",
          "author_url": "",
          "post_date": "2019-01-01T05:15:12.977000",
          "content": "<p>Same as you. Now my single fold model with external data get lb 0.580. May I ask you how you choose threshold?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449160,
          "author_name": "Abhilash Awasthi",
          "author_url": "",
          "post_date": "2019-01-02T18:19:31.660000",
          "content": "<p>You can decide on different threshold for each class which can be deduced from the validation set.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449699,
          "author_name": "tkuanlun350",
          "author_url": "",
          "post_date": "2019-01-03T16:08:38.990000",
          "content": "<p><a href=\"/hdzheng\">@hdzheng</a>\nI am just using the same threshold for every class (based on LB). Threshold selection is not working very well in my current setting :(</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 449709,
          "author_name": "Zhijian Li",
          "author_url": "",
          "post_date": "2019-01-03T16:25:00.563000",
          "content": "<p>@tkuanlun350,\nHow much did you improve the LB by fine-tuning the thresholds?\nmy best single model can get 0.59 on LB with the optimal threshold from 5-fold validation.\nSo I am wondering if I should change the threshold or not.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 448186,
      "author_name": "",
      "author_url": "",
      "post_date": "2018-12-31T11:58:12.313000",
      "content": "",
      "votes": 2,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "444589": "Hi, everyone, I am curious what is your best single model on public LB without any leak?\nPlease post your results here if you would like to share.\nFor me:\nLB 0.580 for self-designed resnet18 with external data (single fold result)",
    "445783": "my weird results on 512x512 images. All results below is single fold without TTA, without ensemble\n\n\n\n\nresnet18 on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.755 (F1@0.5)\n\npublic lb: 0.551 (F1@0.3) without leak\n\npublic lb: 0.550 (F1@0.3) overwrite prediction with leak259\n\n\n---\n\n\ninception-bn on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.785 (F1@0.5)\n\npublic lb: 0.530 (F1@0.3) without leak\n\npublic lb: 0.530 (F1@0.3) overwrite prediction with leak259\n\n\n---\n\n\nresnet34 on train = kaggle+external(HPAv18RBGY_wodpl):\n\nlocal lb : 0.795 (F1@0.5)\n\npublic lb: 0.511 (F1@0.3) overwrite prediction with leak259\n\n \n",
    "449127": "I have two quite different architectures both LB 0.6+\n\n- 5-fold\n- rgb\n- 512x512\n\n@trangle1302 If I would run in kernels I guess I could reach 0.55+ with them",
    "444721": "self-designed InceptionV3 (external data + image size 512x512): 0.577 single fold, 0.599 average of 3 folds",
    "444609": "Could you give me some hints about your loss function??",
    "449449": "I have a Resnet50, 512 x 512 image size, external data, and some test data leak, gives a LB 0.569",
    "444755": "0.564, 512x512, resnet34 with HPAv18 external data, single fold. I'm running a 5-fold experiment, but it's taking forever to finish with the external data.",
    "446094": "Hi, @Kevin Zheng, Do you train from scratch? Can you share more details? Like loss function, image size, optimizer, init lr, etc.",
    "445841": "Thanks, can you share the lr schedule?",
    "453564": "I am curious about what type of resnet you are using?",
    "451791": "I use a Resnet34, 512 x 512 image size, RGBY, external data, no leaked data, single fold with data augmentation and TTA, upsample of the less frequent classes and it gives a LB 0.568",
    "451337": "0.577\n\nResnet50, 512x512 rgb images, oversampling rare classes, simple data augmentation, external data, 5-fold with TTA, BCE loss\n\nThe leak boosts me to 0.588. Oversampling dramatically reduced the boost I was getting from the leak.",
    "448773": "Can you guys tell me the way of split the trainval? my val is not robust, the score on lb didn't increase even thought local increases by a large margin",
    "447844": "ResNet18 is overfitting even after using external data and dropout(0.5). Can Anyone give any suggestion to avoid this problem??",
    "445226": "I got 0.532 without specifically treating the leak as per the posted leak csv. But for this, I did use the HPA data which had the leak data in it. I did not specifically exclude this. \nAdding the leak csv to this boosted the score a bunch.\n\nHave you tried adding leak info to your submission? If so, what boost did you get?",
    "444883": "0.576, 512 image size, BNInception, with external data.",
    "444737": "0.545 resnet34 with naive 0.5 thresholds",
    "444654": "How image size do you use?\nI used self-designed seresnet50 with 512x512, Public LB: 0.539",
    "444598": "I only got 0.517 without leak and additional data using backbone resnet50",
    "448186": ""
  }
}