{
  "id": 27234,
  "title": "First impressions",
  "url": "/competitions/dstl-satellite-imagery-feature-detection/discussion/27234",
  "author_name": "",
  "post_date": "2017-01-03T12:22:27.327Z",
  "votes": 1,
  "comment_count": 12,
  "views": 1030,
  "content": "<p>So, we have 10 classes and the total area per class is given bellow.</p>\n\n<pre><code>area by class\n1: 0.0000684367\n2: 0.0000146082\n3: 0.0000167485\n4: 0.0000621739\n5: 0.0002106242\n6: 0.0005706590\n7: 0.0000102319\n8: 0.0000034881\n9: 0.0000000772\n10: 0.0000003160\n</code></pre>\n\n<p>According to the evaluation formula, the Jaccard index for each class is averaged to calculate the total score (Averaged Jaccard Index). The maximum score for each class is 1 (perfect prediction, i.e. intersection == union) and they have the same weight, so in the end each class contributes to a maximum of 0.1 of the total score (which is 1.0).</p>\n\n<p>The first thing that strikes me is that classes are very different between each other and have very different amounts of effort involved. Waterways are easy to identify for example, and relatively easy to get 0.09/0.1 (90% of the perfect score). Small vehicles, otoh, have just a few pixels so lot's of noise between the real polygon and the polygon provided as truth, + for moving vehicles, their position differs between sensors M and P (I looked up quickly and the difference between bands could be 0.2s, for a vehicle at 100km/h that means more than the polygon bounds, i.e. 5 meters are almost 17 pixels considering a resolution of 0.3m for P). </p>\n\n<p>(not to mention sometimes I don't even see the distinction between roads -- class 3 -- and tracks -- class 4 -- for example. That thing on 6070_2_3 is a road?).</p>\n\n<p>Personally I'm starting with waterways, roads, buildings, crops and trees :-)</p>\n\n<p>The other thing I'd like to mention that is bothering me a little is that the test set is visible. This is different from the other competitions that I saw here on Kaggle. What will prevent people from overfitting perfectly? (I'm not saying someone will hand-label, but someone with enough resources could extract all polygons of the test set and build a solution that does not generalize to new images.</p>",
  "messages": [
    {
      "id": "153798",
      "postDate": "01/03/2017 12:22:27",
      "content": "<p>So, we have 10 classes and the total area per class is given bellow.</p>\n\n<pre><code>area by class\n1: 0.0000684367\n2: 0.0000146082\n3: 0.0000167485\n4: 0.0000621739\n5: 0.0002106242\n6: 0.0005706590\n7: 0.0000102319\n8: 0.0000034881\n9: 0.0000000772\n10: 0.0000003160\n</code></pre>\n\n<p>According to the evaluation formula, the Jaccard index for each class is averaged to calculate the total score (Averaged Jaccard Index). The maximum score for each class is 1 (perfect prediction, i.e. intersection == union) and they have the same weight, so in the end each class contributes to a maximum of 0.1 of the total score (which is 1.0).</p>\n\n<p>The first thing that strikes me is that classes are very different between each other and have very different amounts of effort involved. Waterways are easy to identify for example, and relatively easy to get 0.09/0.1 (90% of the perfect score). Small vehicles, otoh, have just a few pixels so lot's of noise between the real polygon and the polygon provided as truth, + for moving vehicles, their position differs between sensors M and P (I looked up quickly and the difference between bands could be 0.2s, for a vehicle at 100km/h that means more than the polygon bounds, i.e. 5 meters are almost 17 pixels considering a resolution of 0.3m for P). </p>\n\n<p>(not to mention sometimes I don't even see the distinction between roads -- class 3 -- and tracks -- class 4 -- for example. That thing on 6070_2_3 is a road?).</p>\n\n<p>Personally I'm starting with waterways, roads, buildings, crops and trees :-)</p>\n\n<p>The other thing I'd like to mention that is bothering me a little is that the test set is visible. This is different from the other competitions that I saw here on Kaggle. What will prevent people from overfitting perfectly? (I'm not saying someone will hand-label, but someone with enough resources could extract all polygons of the test set and build a solution that does not generalize to new images.</p>",
      "rawMarkdown": "So, we have 10 classes and the total area per class is given bellow.\r\n\r\n    area by class\r\n    1: 0.0000684367\r\n    2: 0.0000146082\r\n    3: 0.0000167485\r\n    4: 0.0000621739\r\n    5: 0.0002106242\r\n    6: 0.0005706590\r\n    7: 0.0000102319\r\n    8: 0.0000034881\r\n    9: 0.0000000772\r\n    10: 0.0000003160\r\n\r\nAccording to the evaluation formula, the Jaccard index for each class is averaged to calculate the total score (Averaged Jaccard Index). The maximum score for each class is 1 (perfect prediction, i.e. intersection == union) and they have the same weight, so in the end each class contributes to a maximum of 0.1 of the total score (which is 1.0).\r\n\r\nThe first thing that strikes me is that classes are very different between each other and have very different amounts of effort involved. Waterways are easy to identify for example, and relatively easy to get 0.09/0.1 (90% of the perfect score). Small vehicles, otoh, have just a few pixels so lot's of noise between the real polygon and the polygon provided as truth, + for moving vehicles, their position differs between sensors M and P (I looked up quickly and the difference between bands could be 0.2s, for a vehicle at 100km/h that means more than the polygon bounds, i.e. 5 meters are almost 17 pixels considering a resolution of 0.3m for P). \r\n\r\n(not to mention sometimes I don't even see the distinction between roads -- class 3 -- and tracks -- class 4 -- for example. That thing on 6070_2_3 is a road?).\r\n\r\nPersonally I'm starting with waterways, roads, buildings, crops and trees :-)\r\n\r\nThe other thing I'd like to mention that is bothering me a little is that the test set is visible. This is different from the other competitions that I saw here on Kaggle. What will prevent people from overfitting perfectly? (I'm not saying someone will hand-label, but someone with enough resources could extract all polygons of the test set and build a solution that does not generalize to new images.",
      "votes": null
    },
    {
      "id": "153806",
      "postDate": "01/03/2017 14:03:29",
      "content": "<p>after running few models on different classes, i came to conclusion that its not worth making polygons for some of the tasks due to very large noise - score of using one big polygon over all image is only slightly worse than making model based polygons... So i am working on more distinct classes as well :)</p>",
      "rawMarkdown": "after running few models on different classes, i came to conclusion that its not worth making polygons for some of the tasks due to very large noise - score of using one big polygon over all image is only slightly worse than making model based polygons... So i am working on more distinct classes as well :)",
      "votes": null
    },
    {
      "id": "153809",
      "postDate": "01/03/2017 14:20:55",
      "content": "<p>I'm approaching this incrementally. I started trying detection+segmentation for all classes at the same time and failed miserably. Some classes a simple CV approach give decent results. For classes where I couldn't get a decent result using CV I started trying classification of patches of images (64x64, 32x32 or 16x16). But this is giving Jaccard score around 0.025 (trees and crops, for example). I'm doing binary classification using either Keras (with spectral bands) or xgb  (but not on raw pixels). I think in the end people will need hybrid approaches over multiple stages. We could try to do segmentation after patches are classified, for example.</p>",
      "rawMarkdown": "I'm approaching this incrementally. I started trying detection+segmentation for all classes at the same time and failed miserably. Some classes a simple CV approach give decent results. For classes where I couldn't get a decent result using CV I started trying classification of patches of images (64x64, 32x32 or 16x16). But this is giving Jaccard score around 0.025 (trees and crops, for example). I'm doing binary classification using either Keras (with spectral bands) or xgb  (but not on raw pixels). I think in the end people will need hybrid approaches over multiple stages. We could try to do segmentation after patches are classified, for example.",
      "votes": null
    },
    {
      "id": "153821",
      "postDate": "01/03/2017 15:48:48",
      "content": "<p>Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?</p>\n\n<p>Thanx for sharing your thoughts!</p>",
      "rawMarkdown": "Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n\r\nThanx for sharing your thoughts!",
      "votes": null
    },
    {
      "id": "153872",
      "postDate": "01/03/2017 20:56:01",
      "content": "<p>One more thing, make sure you use the registered versions of the rasters. </p>\n\n<p>Thanx!</p>",
      "rawMarkdown": "One more thing, make sure you use the registered versions of the rasters. \r\n\r\nThanx!",
      "votes": null
    },
    {
      "id": "154004",
      "postDate": "01/04/2017 11:43:27",
      "content": "<p>@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(</p>\n\n<pre><code>mean(class1)         0.03792886202\nmean(class2)         0.02283831638\nmean(class3)         0.00990268851\nmean(class4)         0.05856104797\nmean(class5)         0.11574989582\nmean(class6)         0.27555158086\nmean(class7)         0.00508922851\nmean(class8)         0.00178708205\nmean(class9)         0.00005004688\nmean(class10)        0.00024835014\n</code></pre>\n\n<p>these are my numbers - % of pixels with a class label over 25 train images</p>",
      "rawMarkdown": "amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(\r\n\r\n    mean(class1)         0.03792886202\r\n    mean(class2)         0.02283831638\r\n    mean(class3)         0.00990268851\r\n    mean(class4)         0.05856104797\r\n    mean(class5)         0.11574989582\r\n    mean(class6)         0.27555158086\r\n    mean(class7)         0.00508922851\r\n    mean(class8)         0.00178708205\r\n    mean(class9)         0.00005004688\r\n    mean(class10)        0.00024835014\r\n\r\nthese are my numbers - % of pixels with a class label over 25 train images",
      "votes": null
    },
    {
      "id": "154007",
      "postDate": "01/04/2017 12:03:19",
      "content": "<p>The first numbers look like the sum of <code>multipolygon.area</code> in shapely on all the original polygons. </p>",
      "rawMarkdown": "The first numbers look like the sum of `multipolygon.area` in shapely on all the original polygons.",
      "votes": null
    },
    {
      "id": "154029",
      "postDate": "01/04/2017 13:55:18",
      "content": "<p>[quote=visoft;153821]</p>\n\n<p>Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?</p>\n\n<p>Thanx for sharing your thoughts!</p>\n\n<p>[/quote]</p>\n\n<p>RE: vehicles -- I still think they're more difficult than the others but not due to movement. I couldn't show movement clearly in the training dataset. Here's the kernel: <a href=\"https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles\">https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles</a>\n(didn't try to fix registration)</p>",
      "rawMarkdown": "[quote=visoft;153821]\r\n\r\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n\r\nThanx for sharing your thoughts!\r\n\r\n[/quote]\r\n\r\nRE: vehicles -- I still think they're more difficult than the others but not due to movement. I couldn't show movement clearly in the training dataset. Here's the kernel: https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles\r\n(didn't try to fix registration)",
      "votes": null
    },
    {
      "id": "154030",
      "postDate": "01/04/2017 13:58:20",
      "content": "<p>[quote=raddar;154004]</p>\n\n<p>@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(</p>\n\n<pre><code>mean(class1)         0.03792886202\nmean(class2)         0.02283831638\nmean(class3)         0.00990268851\nmean(class4)         0.05856104797\nmean(class5)         0.11574989582\nmean(class6)         0.27555158086\nmean(class7)         0.00508922851\nmean(class8)         0.00178708205\nmean(class9)         0.00005004688\nmean(class10)        0.00024835014\n</code></pre>\n\n<p>these are my numbers - % of pixels with a class label over 25 train images</p>\n\n<p>[/quote]</p>\n\n<p>Shawn guessed right, mine is sum of polygon areas as calculated by shapely.</p>",
      "rawMarkdown": "[quote=raddar;154004]\r\n\r\n@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(\r\n\r\n    mean(class1)         0.03792886202\r\n    mean(class2)         0.02283831638\r\n    mean(class3)         0.00990268851\r\n    mean(class4)         0.05856104797\r\n    mean(class5)         0.11574989582\r\n    mean(class6)         0.27555158086\r\n    mean(class7)         0.00508922851\r\n    mean(class8)         0.00178708205\r\n    mean(class9)         0.00005004688\r\n    mean(class10)        0.00024835014\r\n\r\nthese are my numbers - % of pixels with a class label over 25 train images\r\n\r\n\r\n[/quote]\r\n\r\nShawn guessed right, mine is sum of polygon areas as calculated by shapely.",
      "votes": null
    },
    {
      "id": "154044",
      "postDate": "01/04/2017 15:14:25",
      "content": "<p>Another thing that occurred to me is that regions for training and test set are the same! So we're given the truth data for a given image say 60xx_A_B and is asked to evaluate every other 24 images from 60xx_X_Y. As I see, this gives too much information. One could use the polygon data to search a public database and obtain real coordinates of the images (not too mention features leaking between borders such as roads).</p>",
      "rawMarkdown": "Another thing that occurred to me is that regions for training and test set are the same! So we're given the truth data for a given image say 60xx_A_B and is asked to evaluate every other 24 images from 60xx_X_Y. As I see, this gives too much information. One could use the polygon data to search a public database and obtain real coordinates of the images (not too mention features leaking between borders such as roads).",
      "votes": null
    },
    {
      "id": "154047",
      "postDate": "01/04/2017 15:22:55",
      "content": "<p>For those starting out and doing the image processing approach, here's a few tips: waterways, trees and lakes work well with NDVI. For crops I'm using textures in addition to colors (still in the range of about 0.03 Jaccard index but didn't try to improve much).</p>\n\n<p>I also posted something for buildings here:\n<a href=\"https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of\">https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of</a></p>\n\n<p>Thanks and let's start the competition :-)</p>",
      "rawMarkdown": "For those starting out and doing the image processing approach, here's a few tips: waterways, trees and lakes work well with NDVI. For crops I'm using textures in addition to colors (still in the range of about 0.03 Jaccard index but didn't try to improve much).\r\n\r\nI also posted something for buildings here:\r\nhttps://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of\r\n\r\nThanks and let's start the competition :-)",
      "votes": null
    },
    {
      "id": "155402",
      "postDate": "01/11/2017 01:41:53",
      "content": "<p>[quote=visoft;153821]\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\n[/quote]</p>\n\n<p>Look this one, I don't think it's due to misalignment:</p>",
      "rawMarkdown": "[quote=visoft;153821]\r\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n[/quote]\r\n\r\nLook this one, I don't think it's due to misalignment:",
      "votes": null
    },
    {
      "id": "155437",
      "postDate": "01/11/2017 09:03:20",
      "content": "<p>@amaia, tough to say. If the ground thruth is THAT sifted, we are well, screwed for this class. Except if you find a way to overfit and somehow guess in which direction to extend the mask.\nThe road looks fixed (so no registration problem) but the car moved. Weird, I would expect this at a geo satellite not a polar one. </p>",
      "rawMarkdown": "amaia, tough to say. If the ground thruth is THAT sifted, we are well, screwed for this class. Except if you find a way to overfit and somehow guess in which direction to extend the mask.\r\nThe road looks fixed (so no registration problem) but the car moved. Weird, I would expect this at a geo satellite not a polar one.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 153806,
      "author_name": "raddar",
      "author_url": "",
      "post_date": "01/03/2017 14:03:29",
      "content": "<p>after running few models on different classes, i came to conclusion that its not worth making polygons for some of the tasks due to very large noise - score of using one big polygon over all image is only slightly worse than making model based polygons... So i am working on more distinct classes as well :)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 153809,
      "author_name": "aamaia",
      "author_url": "",
      "post_date": "01/03/2017 14:20:55",
      "content": "<p>I'm approaching this incrementally. I started trying detection+segmentation for all classes at the same time and failed miserably. Some classes a simple CV approach give decent results. For classes where I couldn't get a decent result using CV I started trying classification of patches of images (64x64, 32x32 or 16x16). But this is giving Jaccard score around 0.025 (trees and crops, for example). I'm doing binary classification using either Keras (with spectral bands) or xgb  (but not on raw pixels). I think in the end people will need hybrid approaches over multiple stages. We could try to do segmentation after patches are classified, for example.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 153821,
      "author_name": "visoft",
      "author_url": "",
      "post_date": "01/03/2017 15:48:48",
      "content": "<p>Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?</p>\n\n<p>Thanx for sharing your thoughts!</p>",
      "votes": null,
      "replies": [
        {
          "id": 154029,
          "author_name": "aamaia",
          "author_url": "",
          "post_date": "01/04/2017 13:55:18",
          "content": "<p>[quote=visoft;153821]</p>\n\n<p>Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?</p>\n\n<p>Thanx for sharing your thoughts!</p>\n\n<p>[/quote]</p>\n\n<p>RE: vehicles -- I still think they're more difficult than the others but not due to movement. I couldn't show movement clearly in the training dataset. Here's the kernel: <a href=\"https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles\">https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles</a>\n(didn't try to fix registration)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 155402,
          "author_name": "aamaia",
          "author_url": "",
          "post_date": "01/11/2017 01:41:53",
          "content": "<p>[quote=visoft;153821]\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\n[/quote]</p>\n\n<p>Look this one, I don't think it's due to misalignment:</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 153872,
      "author_name": "visoft",
      "author_url": "",
      "post_date": "01/03/2017 20:56:01",
      "content": "<p>One more thing, make sure you use the registered versions of the rasters. </p>\n\n<p>Thanx!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 154004,
      "author_name": "raddar",
      "author_url": "",
      "post_date": "01/04/2017 11:43:27",
      "content": "<p>@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(</p>\n\n<pre><code>mean(class1)         0.03792886202\nmean(class2)         0.02283831638\nmean(class3)         0.00990268851\nmean(class4)         0.05856104797\nmean(class5)         0.11574989582\nmean(class6)         0.27555158086\nmean(class7)         0.00508922851\nmean(class8)         0.00178708205\nmean(class9)         0.00005004688\nmean(class10)        0.00024835014\n</code></pre>\n\n<p>these are my numbers - % of pixels with a class label over 25 train images</p>",
      "votes": null,
      "replies": [
        {
          "id": 154030,
          "author_name": "aamaia",
          "author_url": "",
          "post_date": "01/04/2017 13:58:20",
          "content": "<p>[quote=raddar;154004]</p>\n\n<p>@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(</p>\n\n<pre><code>mean(class1)         0.03792886202\nmean(class2)         0.02283831638\nmean(class3)         0.00990268851\nmean(class4)         0.05856104797\nmean(class5)         0.11574989582\nmean(class6)         0.27555158086\nmean(class7)         0.00508922851\nmean(class8)         0.00178708205\nmean(class9)         0.00005004688\nmean(class10)        0.00024835014\n</code></pre>\n\n<p>these are my numbers - % of pixels with a class label over 25 train images</p>\n\n<p>[/quote]</p>\n\n<p>Shawn guessed right, mine is sum of polygon areas as calculated by shapely.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 154007,
      "author_name": "shawn775",
      "author_url": "",
      "post_date": "01/04/2017 12:03:19",
      "content": "<p>The first numbers look like the sum of <code>multipolygon.area</code> in shapely on all the original polygons. </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 154044,
      "author_name": "aamaia",
      "author_url": "",
      "post_date": "01/04/2017 15:14:25",
      "content": "<p>Another thing that occurred to me is that regions for training and test set are the same! So we're given the truth data for a given image say 60xx_A_B and is asked to evaluate every other 24 images from 60xx_X_Y. As I see, this gives too much information. One could use the polygon data to search a public database and obtain real coordinates of the images (not too mention features leaking between borders such as roads).</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 154047,
      "author_name": "aamaia",
      "author_url": "",
      "post_date": "01/04/2017 15:22:55",
      "content": "<p>For those starting out and doing the image processing approach, here's a few tips: waterways, trees and lakes work well with NDVI. For crops I'm using textures in addition to colors (still in the range of about 0.03 Jaccard index but didn't try to improve much).</p>\n\n<p>I also posted something for buildings here:\n<a href=\"https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of\">https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of</a></p>\n\n<p>Thanks and let's start the competition :-)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 155437,
      "author_name": "visoft",
      "author_url": "",
      "post_date": "01/11/2017 09:03:20",
      "content": "<p>@amaia, tough to say. If the ground thruth is THAT sifted, we are well, screwed for this class. Except if you find a way to overfit and somehow guess in which direction to extend the mask.\nThe road looks fixed (so no registration problem) but the car moved. Weird, I would expect this at a geo satellite not a polar one. </p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "153798": "So, we have 10 classes and the total area per class is given bellow.\r\n\r\n    area by class\r\n    1: 0.0000684367\r\n    2: 0.0000146082\r\n    3: 0.0000167485\r\n    4: 0.0000621739\r\n    5: 0.0002106242\r\n    6: 0.0005706590\r\n    7: 0.0000102319\r\n    8: 0.0000034881\r\n    9: 0.0000000772\r\n    10: 0.0000003160\r\n\r\nAccording to the evaluation formula, the Jaccard index for each class is averaged to calculate the total score (Averaged Jaccard Index). The maximum score for each class is 1 (perfect prediction, i.e. intersection == union) and they have the same weight, so in the end each class contributes to a maximum of 0.1 of the total score (which is 1.0).\r\n\r\nThe first thing that strikes me is that classes are very different between each other and have very different amounts of effort involved. Waterways are easy to identify for example, and relatively easy to get 0.09/0.1 (90% of the perfect score). Small vehicles, otoh, have just a few pixels so lot's of noise between the real polygon and the polygon provided as truth, + for moving vehicles, their position differs between sensors M and P (I looked up quickly and the difference between bands could be 0.2s, for a vehicle at 100km/h that means more than the polygon bounds, i.e. 5 meters are almost 17 pixels considering a resolution of 0.3m for P). \r\n\r\n(not to mention sometimes I don't even see the distinction between roads -- class 3 -- and tracks -- class 4 -- for example. That thing on 6070_2_3 is a road?).\r\n\r\nPersonally I'm starting with waterways, roads, buildings, crops and trees :-)\r\n\r\nThe other thing I'd like to mention that is bothering me a little is that the test set is visible. This is different from the other competitions that I saw here on Kaggle. What will prevent people from overfitting perfectly? (I'm not saying someone will hand-label, but someone with enough resources could extract all polygons of the test set and build a solution that does not generalize to new images.",
    "153806": "after running few models on different classes, i came to conclusion that its not worth making polygons for some of the tasks due to very large noise - score of using one big polygon over all image is only slightly worse than making model based polygons... So i am working on more distinct classes as well :)",
    "153809": "I'm approaching this incrementally. I started trying detection+segmentation for all classes at the same time and failed miserably. Some classes a simple CV approach give decent results. For classes where I couldn't get a decent result using CV I started trying classification of patches of images (64x64, 32x32 or 16x16). But this is giving Jaccard score around 0.025 (trees and crops, for example). I'm doing binary classification using either Keras (with spectral bands) or xgb  (but not on raw pixels). I think in the end people will need hybrid approaches over multiple stages. We could try to do segmentation after patches are classified, for example.",
    "153821": "Hi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n\r\nThanx for sharing your thoughts!",
    "153872": "One more thing, make sure you use the registered versions of the rasters. \r\n\r\nThanx!",
    "154004": "amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(\r\n\r\n    mean(class1)         0.03792886202\r\n    mean(class2)         0.02283831638\r\n    mean(class3)         0.00990268851\r\n    mean(class4)         0.05856104797\r\n    mean(class5)         0.11574989582\r\n    mean(class6)         0.27555158086\r\n    mean(class7)         0.00508922851\r\n    mean(class8)         0.00178708205\r\n    mean(class9)         0.00005004688\r\n    mean(class10)        0.00024835014\r\n\r\nthese are my numbers - % of pixels with a class label over 25 train images",
    "154007": "The first numbers look like the sum of `multipolygon.area` in shapely on all the original polygons.",
    "154029": "[quote=visoft;153821]\r\n\r\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n\r\nThanx for sharing your thoughts!\r\n\r\n[/quote]\r\n\r\nRE: vehicles -- I still think they're more difficult than the others but not due to movement. I couldn't show movement clearly in the training dataset. Here's the kernel: https://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/small-vehicles\r\n(didn't try to fix registration)",
    "154030": "[quote=raddar;154004]\r\n\r\n@amaia, could you explain how you calculated the area plot? im getting different results and i yet can't see where i made an error :(\r\n\r\n    mean(class1)         0.03792886202\r\n    mean(class2)         0.02283831638\r\n    mean(class3)         0.00990268851\r\n    mean(class4)         0.05856104797\r\n    mean(class5)         0.11574989582\r\n    mean(class6)         0.27555158086\r\n    mean(class7)         0.00508922851\r\n    mean(class8)         0.00178708205\r\n    mean(class9)         0.00005004688\r\n    mean(class10)        0.00024835014\r\n\r\nthese are my numbers - % of pixels with a class label over 25 train images\r\n\r\n\r\n[/quote]\r\n\r\nShawn guessed right, mine is sum of polygon areas as calculated by shapely.",
    "154044": "Another thing that occurred to me is that regions for training and test set are the same! So we're given the truth data for a given image say 60xx_A_B and is asked to evaluate every other 24 images from 60xx_X_Y. As I see, this gives too much information. One could use the polygon data to search a public database and obtain real coordinates of the images (not too mention features leaking between borders such as roads).",
    "154047": "For those starting out and doing the image processing approach, here's a few tips: waterways, trees and lakes work well with NDVI. For crops I'm using textures in addition to colors (still in the range of about 0.03 Jaccard index but didn't try to improve much).\r\n\r\nI also posted something for buildings here:\r\nhttps://www.kaggle.com/aamaia/dstl-satellite-imagery-feature-detection/trees-are-red-buildings-are-blue-sort-of\r\n\r\nThanks and let's start the competition :-)",
    "155402": "[quote=visoft;153821]\r\nHi! Interesting observations! @amaia can you post some images wit movingh cars? And also the mask? My guess is that the masks fits the car in _3 image. _A it could be useless anyway. But panchromatic one and _M have a decent resolutions for the cars. Can you post some crops pls showing how the band images and masks look like?\r\n[/quote]\r\n\r\nLook this one, I don't think it's due to misalignment:",
    "155437": "amaia, tough to say. If the ground thruth is THAT sifted, we are well, screwed for this class. Except if you find a way to overfit and somehow guess in which direction to extend the mask.\r\nThe road looks fixed (so no registration problem) but the car moved. Weird, I would expect this at a geo satellite not a polar one."
  },
  "source": "meta"
}