{
  "id": 64901,
  "title": "26th place solution [0.38 private LB]",
  "url": "/competitions/google-ai-open-images-object-detection-track/writeups/chamo-26th-place-solution-0-38-private-lb",
  "author_name": "",
  "post_date": "2018-09-04T02:50:01.116057600Z",
  "votes": 10,
  "comment_count": 4,
  "views": 0,
  "content": "<h1>Software</h1>\n\n<ul>\n<li>Ubuntu 16.04</li>\n<li>tensorflow</li>\n<li>yolo3: <a href=\"https://github.com/qqwweee/keras-yolo3\">https://github.com/qqwweee/keras-yolo3</a></li>\n<li>faster rcnn: object detection in official models of tensorflow models</li>\n</ul>\n\n<h1>Main approach</h1>\n\n<ul>\n<li>data balancing</li>\n<li>tricks of learning rate</li>\n<li>study the rule of scoring</li>\n</ul>\n\n<h1>Code</h1>\n\n<ul>\n<li><a href=\"https://github.com/rabienrose/GoogleAIOpenImg2018\">https://github.com/rabienrose/GoogleAIOpenImg2018</a></li>\n<li>Include the necessary files for my project from tensorflow models and keras-yolo3</li>\n</ul>\n\n<h1>Experience</h1>\n\n<ul>\n<li>One of my friends suddenly asked me to join the challenge one day. I have never involved in any this kind of competition and I have not done any object detection projects before. I only did some classification projects before.Just reading the rule for the competition make me uneasy. But, I like the feeling of pushing myself to the limit, so I started to download the tensorflow models for github.</li>\n<li>I first tried the fast-rcnn model, before it was said the most powerful model current. But it was too slow to train, about 600ms per image with my 1080ti. I only trained with about 20,000 images for couple of epoch. The first submission is very bad, only something like 0.00002. The main result not because the training is bad but because some bugs: I mistake the order of xmin, ymin and so on. After fixed this, I got score like 0.02.</li>\n<li>The speed of training is a problem, with that speed, I have no time to adjust the model and study the result. So, I decided to move to yolo3. And I also do some data balancing: get rid of images that only contain the very common objects like person, face. Finally, I chose 200,000 images out of 1700,000 train images.</li>\n<li>It was about 4 hours to train one epoch, I increase the learning rate a little bit if I find the loss enters the platform status. Otherwise I just linearly decrease the learning rate as epoch increase.</li>\n</ul>\n\n<h1>Other configs</h1>\n\n<ul>\n<li>Confidence threshold: 0.01</li>\n<li>Expand the classes based on the hierarchy after prediction, not before training</li>\n<li>No ensemble (I really did not have time to train multiple models)</li>\n</ul>",
  "messages": [
    {
      "id": "381067",
      "postDate": "09/04/2018 02:50:01",
      "content": "<h1>Software</h1>\n\n<ul>\n<li>Ubuntu 16.04</li>\n<li>tensorflow</li>\n<li>yolo3: <a href=\"https://github.com/qqwweee/keras-yolo3\">https://github.com/qqwweee/keras-yolo3</a></li>\n<li>faster rcnn: object detection in official models of tensorflow models</li>\n</ul>\n\n<h1>Main approach</h1>\n\n<ul>\n<li>data balancing</li>\n<li>tricks of learning rate</li>\n<li>study the rule of scoring</li>\n</ul>\n\n<h1>Code</h1>\n\n<ul>\n<li><a href=\"https://github.com/rabienrose/GoogleAIOpenImg2018\">https://github.com/rabienrose/GoogleAIOpenImg2018</a></li>\n<li>Include the necessary files for my project from tensorflow models and keras-yolo3</li>\n</ul>\n\n<h1>Experience</h1>\n\n<ul>\n<li>One of my friends suddenly asked me to join the challenge one day. I have never involved in any this kind of competition and I have not done any object detection projects before. I only did some classification projects before.Just reading the rule for the competition make me uneasy. But, I like the feeling of pushing myself to the limit, so I started to download the tensorflow models for github.</li>\n<li>I first tried the fast-rcnn model, before it was said the most powerful model current. But it was too slow to train, about 600ms per image with my 1080ti. I only trained with about 20,000 images for couple of epoch. The first submission is very bad, only something like 0.00002. The main result not because the training is bad but because some bugs: I mistake the order of xmin, ymin and so on. After fixed this, I got score like 0.02.</li>\n<li>The speed of training is a problem, with that speed, I have no time to adjust the model and study the result. So, I decided to move to yolo3. And I also do some data balancing: get rid of images that only contain the very common objects like person, face. Finally, I chose 200,000 images out of 1700,000 train images.</li>\n<li>It was about 4 hours to train one epoch, I increase the learning rate a little bit if I find the loss enters the platform status. Otherwise I just linearly decrease the learning rate as epoch increase.</li>\n</ul>\n\n<h1>Other configs</h1>\n\n<ul>\n<li>Confidence threshold: 0.01</li>\n<li>Expand the classes based on the hierarchy after prediction, not before training</li>\n<li>No ensemble (I really did not have time to train multiple models)</li>\n</ul>",
      "rawMarkdown": "# Software\n* Ubuntu 16.04\n* tensorflow\n* yolo3: https://github.com/qqwweee/keras-yolo3\n* faster rcnn: object detection in official models of tensorflow models\n\n# Main approach\n* data balancing\n* tricks of learning rate\n* study the rule of scoring\n\n# Code\n* https://github.com/rabienrose/GoogleAIOpenImg2018\n* Include the necessary files for my project from tensorflow models and keras-yolo3\n\n# Experience\n- One of my friends suddenly asked me to join the challenge one day. I have never involved in any this kind of competition and I have not done any object detection projects before. I only did some classification projects before.Just reading the rule for the competition make me uneasy. But, I like the feeling of pushing myself to the limit, so I started to download the tensorflow models for github.\n- I first tried the fast-rcnn model, before it was said the most powerful model current. But it was too slow to train, about 600ms per image with my 1080ti. I only trained with about 20,000 images for couple of epoch. The first submission is very bad, only something like 0.00002. The main result not because the training is bad but because some bugs: I mistake the order of xmin, ymin and so on. After fixed this, I got score like 0.02.\n- The speed of training is a problem, with that speed, I have no time to adjust the model and study the result. So, I decided to move to yolo3. And I also do some data balancing: get rid of images that only contain the very common objects like person, face. Finally, I chose 200,000 images out of 1700,000 train images.\n- It was about 4 hours to train one epoch, I increase the learning rate a little bit if I find the loss enters the platform status. Otherwise I just linearly decrease the learning rate as epoch increase.\n\n# Other configs\n* Confidence threshold: 0.01\n* Expand the classes based on the hierarchy after prediction, not before training\n* No ensemble (I really did not have time to train multiple models)",
      "votes": null
    },
    {
      "id": "381147",
      "postDate": "09/04/2018 06:57:30",
      "content": "<p>The confidence threshold of 0.01 seems insanely low. Did you mean 0.99?</p>",
      "rawMarkdown": "The confidence threshold of 0.01 seems insanely low. Did you mean 0.99?",
      "votes": null
    },
    {
      "id": "381209",
      "postDate": "09/04/2018 09:26:45",
      "content": "<p>the way of calculating AP require you to submit all the result, both true and false class. The reason why it is 0.01 not 0, is because the evaluation system have the size limit of uploading file.</p>",
      "rawMarkdown": "the way of calculating AP require you to submit all the result, both true and false class. The reason why it is 0.01 not 0, is because the evaluation system have the size limit of uploading file.",
      "votes": null
    },
    {
      "id": "381867",
      "postDate": "09/05/2018 10:29:16",
      "content": "<p>I found the confidence score output by YOLOv3 was relatively low comparing to SSD or Faster R-CNN. I guess it's mainly because that YOLOv3 outputs \"product of <strong>objectness score</strong> and class softmax value\" as the final confidence score for each bounding box.</p>\n\n<p>I do agree with chamo's answer above. As ZFTurbo has put it in another way (<a href=\"https://www.kaggle.com/c/google-ai-open-images-object-detection-track/discussion/64633\">link</a>), \"Because of the metric nature, it is better to output the maximum number of rectangles even with low confidence score.\"</p>",
      "rawMarkdown": "I found the confidence score output by YOLOv3 was relatively low comparing to SSD or Faster R-CNN. I guess it's mainly because that YOLOv3 outputs \"product of **objectness score** and class softmax value\" as the final confidence score for each bounding box.\n\nI do agree with chamo's answer above. As ZFTurbo has put it in another way ([link][1]), \"Because of the metric nature, it is better to output the maximum number of rectangles even with low confidence score.\"\n\n\n  [1]: https://www.kaggle.com/c/google-ai-open-images-object-detection-track/discussion/64633",
      "votes": null
    },
    {
      "id": "382014",
      "postDate": "09/05/2018 14:32:40",
      "content": "<p>I like your simple solution. I think reducing the number of training images to 200K helped in convergence speed.</p>",
      "rawMarkdown": "I like your simple solution. I think reducing the number of training images to 200K helped in convergence speed.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 381147,
      "author_name": "leonluttenberger",
      "author_url": "",
      "post_date": "09/04/2018 06:57:30",
      "content": "<p>The confidence threshold of 0.01 seems insanely low. Did you mean 0.99?</p>",
      "votes": null,
      "replies": [
        {
          "id": 381209,
          "author_name": "rabienrose",
          "author_url": "",
          "post_date": "09/04/2018 09:26:45",
          "content": "<p>the way of calculating AP require you to submit all the result, both true and false class. The reason why it is 0.01 not 0, is because the evaluation system have the size limit of uploading file.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 381867,
          "author_name": "jkjung",
          "author_url": "",
          "post_date": "09/05/2018 10:29:16",
          "content": "<p>I found the confidence score output by YOLOv3 was relatively low comparing to SSD or Faster R-CNN. I guess it's mainly because that YOLOv3 outputs \"product of <strong>objectness score</strong> and class softmax value\" as the final confidence score for each bounding box.</p>\n\n<p>I do agree with chamo's answer above. As ZFTurbo has put it in another way (<a href=\"https://www.kaggle.com/c/google-ai-open-images-object-detection-track/discussion/64633\">link</a>), \"Because of the metric nature, it is better to output the maximum number of rectangles even with low confidence score.\"</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 382014,
      "author_name": "ohadlights",
      "author_url": "",
      "post_date": "09/05/2018 14:32:40",
      "content": "<p>I like your simple solution. I think reducing the number of training images to 200K helped in convergence speed.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "381067": "# Software\n* Ubuntu 16.04\n* tensorflow\n* yolo3: https://github.com/qqwweee/keras-yolo3\n* faster rcnn: object detection in official models of tensorflow models\n\n# Main approach\n* data balancing\n* tricks of learning rate\n* study the rule of scoring\n\n# Code\n* https://github.com/rabienrose/GoogleAIOpenImg2018\n* Include the necessary files for my project from tensorflow models and keras-yolo3\n\n# Experience\n- One of my friends suddenly asked me to join the challenge one day. I have never involved in any this kind of competition and I have not done any object detection projects before. I only did some classification projects before.Just reading the rule for the competition make me uneasy. But, I like the feeling of pushing myself to the limit, so I started to download the tensorflow models for github.\n- I first tried the fast-rcnn model, before it was said the most powerful model current. But it was too slow to train, about 600ms per image with my 1080ti. I only trained with about 20,000 images for couple of epoch. The first submission is very bad, only something like 0.00002. The main result not because the training is bad but because some bugs: I mistake the order of xmin, ymin and so on. After fixed this, I got score like 0.02.\n- The speed of training is a problem, with that speed, I have no time to adjust the model and study the result. So, I decided to move to yolo3. And I also do some data balancing: get rid of images that only contain the very common objects like person, face. Finally, I chose 200,000 images out of 1700,000 train images.\n- It was about 4 hours to train one epoch, I increase the learning rate a little bit if I find the loss enters the platform status. Otherwise I just linearly decrease the learning rate as epoch increase.\n\n# Other configs\n* Confidence threshold: 0.01\n* Expand the classes based on the hierarchy after prediction, not before training\n* No ensemble (I really did not have time to train multiple models)",
    "381147": "The confidence threshold of 0.01 seems insanely low. Did you mean 0.99?",
    "381209": "the way of calculating AP require you to submit all the result, both true and false class. The reason why it is 0.01 not 0, is because the evaluation system have the size limit of uploading file.",
    "381867": "I found the confidence score output by YOLOv3 was relatively low comparing to SSD or Faster R-CNN. I guess it's mainly because that YOLOv3 outputs \"product of **objectness score** and class softmax value\" as the final confidence score for each bounding box.\n\nI do agree with chamo's answer above. As ZFTurbo has put it in another way ([link][1]), \"Because of the metric nature, it is better to output the maximum number of rectangles even with low confidence score.\"\n\n\n  [1]: https://www.kaggle.com/c/google-ai-open-images-object-detection-track/discussion/64633",
    "382014": "I like your simple solution. I think reducing the number of training images to 200K helped in convergence speed."
  },
  "source": "meta"
}