{
  "id": 45721,
  "title": "My solution [9th place private]",
  "url": "/competitions/cdiscount-image-classification-challenge/writeups/n01z3-my-solution-9th-place-private",
  "author_name": "",
  "post_date": "2017-12-15T11:12:22.687Z",
  "votes": 56,
  "comment_count": 2,
  "views": 0,
  "content": "<p>I had a standard scheme:</p>\n\n<ol>\n<li>Train FC adam (LR 0.001-&gt; 0.0001)</li>\n<li>Polishing, only FC SGD (LR 0.001 -&gt; 0.0001)</li>\n<li>Train full net SGD (LR 0.001-&gt; 0.0001)</li>\n<li>Manual annealing SGD (LR 0.01-&gt; 0.001 -&gt; 0.0001) 1-2 epochs at each\nstage, repeat twice</li>\n<li>Train without augs SGD LR 0.0001</li>\n</ol>\n\n<p>Tried: Resnext-101, Resnext-50, SE-Resnext-50, Resnet-101, Resnet-152. Best of all is Resnext-101. All nets with 160 input size and TTA10 for predicts.</p>\n\n<p>I tried to freeze the groups of conv layers. This gave faster convergence in the initial stages. But final accuracy was not good enough.</p>\n\n<p>I tried to sample strait, randomly, randomly one sample from the item. All this with and without hard negative use. Maybe I messed up something in the logs, but in the end it was best to sample randomly one sample from the item with a hard negative use. Without it accuracy were lower.</p>\n\n<p>I tried to make a collage of all the photos of the item and train the network with an input of 320x320. But speed was very low and I skiped this approach.</p>\n\n<p>I did not implement an update of the weights every n iteration to effectively increase the batch size, so I polished every net on a 4x1080 Ti to increase the batch.</p>\n\n<p>I did not experiment with weighted averaging the photos inside the item. I just put answers on clean image hashes, for which there was only one class in train. And the remaining predicates were given geometric mean without weights.</p>\n\n<p>Hardware:</p>\n\n<ol>\n<li><p>i7 6700k, 32gb, 2х Titan X (Maxwell)</p></li>\n<li><p>i7 7700k, 64gb, 2x 1080</p></li>\n<li><p>i7 5930K, 32gb, 3x 1080Ti</p></li>\n<li><p>Xeon 2696v3, 64gb, 4x 1080Ti</p></li>\n</ol>",
  "messages": [
    {
      "id": "257822",
      "postDate": "12/15/2017 01:05:18",
      "content": "<p>I had a standard scheme:</p>\n\n<ol>\n<li>Train FC adam (LR 0.001-&gt; 0.0001)</li>\n<li>Polishing, only FC SGD (LR 0.001 -&gt; 0.0001)</li>\n<li>Train full net SGD (LR 0.001-&gt; 0.0001)</li>\n<li>Manual annealing SGD (LR 0.01-&gt; 0.001 -&gt; 0.0001) 1-2 epochs at each\nstage, repeat twice</li>\n<li>Train without augs SGD LR 0.0001</li>\n</ol>\n\n<p>Tried: Resnext-101, Resnext-50, SE-Resnext-50, Resnet-101, Resnet-152. Best of all is Resnext-101. All nets with 160 input size and TTA10 for predicts.</p>\n\n<p>I tried to freeze the groups of conv layers. This gave faster convergence in the initial stages. But final accuracy was not good enough.</p>\n\n<p>I tried to sample strait, randomly, randomly one sample from the item. All this with and without hard negative use. Maybe I messed up something in the logs, but in the end it was best to sample randomly one sample from the item with a hard negative use. Without it accuracy were lower.</p>\n\n<p>I tried to make a collage of all the photos of the item and train the network with an input of 320x320. But speed was very low and I skiped this approach.</p>\n\n<p>I did not implement an update of the weights every n iteration to effectively increase the batch size, so I polished every net on a 4x1080 Ti to increase the batch.</p>\n\n<p>I did not experiment with weighted averaging the photos inside the item. I just put answers on clean image hashes, for which there was only one class in train. And the remaining predicates were given geometric mean without weights.</p>\n\n<p>Hardware:</p>\n\n<ol>\n<li><p>i7 6700k, 32gb, 2х Titan X (Maxwell)</p></li>\n<li><p>i7 7700k, 64gb, 2x 1080</p></li>\n<li><p>i7 5930K, 32gb, 3x 1080Ti</p></li>\n<li><p>Xeon 2696v3, 64gb, 4x 1080Ti</p></li>\n</ol>",
      "rawMarkdown": "I had a standard scheme:\n\n 1. Train FC adam (LR 0.001-&gt; 0.0001)\n 2. Polishing, only FC SGD (LR 0.001 -&gt; 0.0001)\n 3. Train full net SGD (LR 0.001-&gt; 0.0001)\n 4. Manual annealing SGD (LR 0.01-&gt; 0.001 -&gt; 0.0001) 1-2 epochs at each\n    stage, repeat twice\n 5. Train without augs SGD LR 0.0001\n\nTried: Resnext-101, Resnext-50, SE-Resnext-50, Resnet-101, Resnet-152. Best of all is Resnext-101. All nets with 160 input size and TTA10 for predicts.\n\nI tried to freeze the groups of conv layers. This gave faster convergence in the initial stages. But final accuracy was not good enough.\n\nI tried to sample strait, randomly, randomly one sample from the item. All this with and without hard negative use. Maybe I messed up something in the logs, but in the end it was best to sample randomly one sample from the item with a hard negative use. Without it accuracy were lower.\n\nI tried to make a collage of all the photos of the item and train the network with an input of 320x320. But speed was very low and I skiped this approach.\n\nI did not implement an update of the weights every n iteration to effectively increase the batch size, so I polished every net on a 4x1080 Ti to increase the batch.\n\nI did not experiment with weighted averaging the photos inside the item. I just put answers on clean image hashes, for which there was only one class in train. And the remaining predicates were given geometric mean without weights.\n\nHardware:\n\n 1. i7 6700k, 32gb, 2х Titan X (Maxwell)\n\n 2. i7 7700k, 64gb, 2x 1080\n\n 3. i7 5930K, 32gb, 3x 1080Ti\n\n 4. Xeon 2696v3, 64gb, 4x 1080Ti",
      "votes": null
    },
    {
      "id": "257832",
      "postDate": "12/15/2017 01:18:15",
      "content": "<p>@n01z3 thanks for sharing and congratulations for putting on a strong finish.</p>",
      "rawMarkdown": "n01z3 thanks for sharing and congratulations for putting on a strong finish.",
      "votes": null
    },
    {
      "id": "327936",
      "postDate": "05/13/2018 01:03:56",
      "content": "<p>Hi, n01z3. Did you save the data(.bson or .jpg)? The data has been removed after the competition, but I still want to use several images(Non-commercial). Could you please share it? Thank you~</p>",
      "rawMarkdown": "Hi, n01z3. Did you save the data(.bson or .jpg)? The data has been removed after the competition, but I still want to use several images(Non-commercial). Could you please share it? Thank you~",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 257832,
      "author_name": "sheriytm",
      "author_url": "",
      "post_date": "12/15/2017 01:18:15",
      "content": "<p>@n01z3 thanks for sharing and congratulations for putting on a strong finish.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 327936,
      "author_name": "zhangsongwei",
      "author_url": "",
      "post_date": "05/13/2018 01:03:56",
      "content": "<p>Hi, n01z3. Did you save the data(.bson or .jpg)? The data has been removed after the competition, but I still want to use several images(Non-commercial). Could you please share it? Thank you~</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "257822": "I had a standard scheme:\n\n 1. Train FC adam (LR 0.001-&gt; 0.0001)\n 2. Polishing, only FC SGD (LR 0.001 -&gt; 0.0001)\n 3. Train full net SGD (LR 0.001-&gt; 0.0001)\n 4. Manual annealing SGD (LR 0.01-&gt; 0.001 -&gt; 0.0001) 1-2 epochs at each\n    stage, repeat twice\n 5. Train without augs SGD LR 0.0001\n\nTried: Resnext-101, Resnext-50, SE-Resnext-50, Resnet-101, Resnet-152. Best of all is Resnext-101. All nets with 160 input size and TTA10 for predicts.\n\nI tried to freeze the groups of conv layers. This gave faster convergence in the initial stages. But final accuracy was not good enough.\n\nI tried to sample strait, randomly, randomly one sample from the item. All this with and without hard negative use. Maybe I messed up something in the logs, but in the end it was best to sample randomly one sample from the item with a hard negative use. Without it accuracy were lower.\n\nI tried to make a collage of all the photos of the item and train the network with an input of 320x320. But speed was very low and I skiped this approach.\n\nI did not implement an update of the weights every n iteration to effectively increase the batch size, so I polished every net on a 4x1080 Ti to increase the batch.\n\nI did not experiment with weighted averaging the photos inside the item. I just put answers on clean image hashes, for which there was only one class in train. And the remaining predicates were given geometric mean without weights.\n\nHardware:\n\n 1. i7 6700k, 32gb, 2х Titan X (Maxwell)\n\n 2. i7 7700k, 64gb, 2x 1080\n\n 3. i7 5930K, 32gb, 3x 1080Ti\n\n 4. Xeon 2696v3, 64gb, 4x 1080Ti",
    "257832": "n01z3 thanks for sharing and congratulations for putting on a strong finish.",
    "327936": "Hi, n01z3. Did you save the data(.bson or .jpg)? The data has been removed after the competition, but I still want to use several images(Non-commercial). Could you please share it? Thank you~"
  },
  "source": "meta"
}