{
  "id": 285516,
  "title": "[placeholder] my approach and results",
  "url": "/competitions/sartorius-cell-instance-segmentation/discussion/285516",
  "author_name": "hengck23",
  "post_date": "2021-11-05T03:08:16.959000",
  "votes": 110,
  "comment_count": 55,
  "views": 0,
  "content": "<p>this post will document my approach and results for the competition submission.<br>\ni will update as I work along.</p>\n<p>summary of approach:<br>\nstep 1:</p>\n<ul>\n<li>use unet,etc method to translate input image to pixel per label segmentation (e.g. background, cell, cell boundary, cell center)</li>\n</ul>\n<p>step 2:</p>\n<ul>\n<li>input per label segmentation (and maybe also original image) into instance segmentation model like mask-rcnn.</li>\n</ul>\n<p>i suspect with the additional pixel label, anchor-free/box-free instance segmentation model may also work</p>\n<p>to get high lb score, it is important that</p>\n<ul>\n<li>the center detection rate mask be high in step.1</li>\n<li>if we can do without the use of original image in step.2, we can have effective transfer learning. I am also thinking of using GAN to generate more train samples</li>\n<li>it may be possible to combine step.1 and step2 in single end-to-end model</li>\n<li>to find the upper limit of the approach or as a proof of concept, one can feed in ground truth of step1 into mask rcnn/anchor free model, etc  and train that model first.</li>\n<li>a simple way to do self-supervised learning:<ul>\n<li>from an image, create an augmented version, e.g. flip or scale or rotate</li>\n<li>the pixel label from unet in step.1 should be consistent. hence you can use consistency loss or contrastive loss</li></ul></li>\n</ul>",
  "messages": [
    {
      "id": 1571625,
      "postDate": "2021-11-05T03:08:16.960Z",
      "content": "<p>this post will document my approach and results for the competition submission.<br>\ni will update as I work along.</p>\n<p>summary of approach:<br>\nstep 1:</p>\n<ul>\n<li>use unet,etc method to translate input image to pixel per label segmentation (e.g. background, cell, cell boundary, cell center)</li>\n</ul>\n<p>step 2:</p>\n<ul>\n<li>input per label segmentation (and maybe also original image) into instance segmentation model like mask-rcnn.</li>\n</ul>\n<p>i suspect with the additional pixel label, anchor-free/box-free instance segmentation model may also work</p>\n<p>to get high lb score, it is important that</p>\n<ul>\n<li>the center detection rate mask be high in step.1</li>\n<li>if we can do without the use of original image in step.2, we can have effective transfer learning. I am also thinking of using GAN to generate more train samples</li>\n<li>it may be possible to combine step.1 and step2 in single end-to-end model</li>\n<li>to find the upper limit of the approach or as a proof of concept, one can feed in ground truth of step1 into mask rcnn/anchor free model, etc  and train that model first.</li>\n<li>a simple way to do self-supervised learning:<ul>\n<li>from an image, create an augmented version, e.g. flip or scale or rotate</li>\n<li>the pixel label from unet in step.1 should be consistent. hence you can use consistency loss or contrastive loss</li></ul></li>\n</ul>",
      "rawMarkdown": "this post will document my approach and results for the competition submission.\ni will update as I work along.\n\nsummary of approach:\nstep 1:\n- use unet,etc method to translate input image to pixel per label segmentation (e.g. background, cell, cell boundary, cell center)\n\nstep 2:\n- input per label segmentation (and maybe also original image) into instance segmentation model like mask-rcnn.\n\ni suspect with the additional pixel label, anchor-free/box-free instance segmentation model may also work\n\nto get high lb score, it is important that\n- the center detection rate mask be high in step.1\n- if we can do without the use of original image in step.2, we can have effective transfer learning. I am also thinking of using GAN to generate more train samples\n- it may be possible to combine step.1 and step2 in single end-to-end model\n- to find the upper limit of the approach or as a proof of concept, one can feed in ground truth of step1 into mask rcnn/anchor free model, etc  and train that model first.\n- a simple way to do self-supervised learning:\n  - from an image, create an augmented version, e.g. flip or scale or rotate\n  - the pixel label from unet in step.1 should be consistent. hence you can use consistency loss or contrastive loss",
      "votes": 109
    },
    {
      "id": 1582746,
      "postDate": "2021-11-15T08:23:16.937Z",
      "content": "<p>first validation results!<br>\n*no post-processing/filtering of results (e.g. remove small mask)</p>\n<p><a href=\"https://ibb.co/vjsYnWn\"><img src=\"https://i.ibb.co/MC860H0/Selection-999-379.png\" alt=\"Selection-999-379\"></a></p>\n<p><a href=\"https://ibb.co/Bf9sgqr\" target=\"_blank\">https://ibb.co/Bf9sgqr</a><br>\n<a href=\"https://ibb.co/8x5tXwK\" target=\"_blank\">https://ibb.co/8x5tXwK</a><br>\n<a href=\"https://ibb.co/GH5FPPS\" target=\"_blank\">https://ibb.co/GH5FPPS</a></p>\n<p>I train one model for single cell type for now to check pre/post processing parameters. i may combine them into single model later. Here is validation results for other cell type:<br>\ncort   0.359497</p>",
      "rawMarkdown": "first validation results!\n*no post-processing/filtering of results (e.g. remove small mask)\n\n\n<a href=\"https://ibb.co/vjsYnWn\"><img src=\"https://i.ibb.co/MC860H0/Selection-999-379.png\" alt=\"Selection-999-379\" border=\"0\"></a>\n\nhttps://ibb.co/Bf9sgqr\nhttps://ibb.co/8x5tXwK\nhttps://ibb.co/GH5FPPS\n\n\nI train one model for single cell type for now to check pre/post processing parameters. i may combine them into single model later. Here is validation results for other cell type:\ncort   0.359497",
      "votes": 7
    },
    {
      "id": 1575237,
      "postDate": "2021-11-08T09:08:47.943Z",
      "content": "<p>update of results:<br>\ni think this is promising</p>\n<p><a href=\"https://ibb.co/hFmZyNZ\"><img src=\"https://i.ibb.co/F4D0K10/Selection-999-287.png\" alt=\"Selection-999-287\"></a><br>\n<a href=\"https://ibb.co/bWS53wm\"><img src=\"https://i.ibb.co/mDL5BZT/Selection-999-286.png\" alt=\"Selection-999-286\"></a><br>\n<a href=\"https://ibb.co/chn56CK\"><img src=\"https://i.ibb.co/v4n53QC/Selection-999-285.png\" alt=\"Selection-999-285\"></a><br>\n<a href=\"https://ibb.co/bL4p2x5\"><img src=\"https://i.ibb.co/P42B9RG/Selection-999-284.png\" alt=\"Selection-999-284\"></a><br>\n<a href=\"https://ibb.co/9p9PGRp\"><img src=\"https://i.ibb.co/yNn2VLN/Selection-999-283.png\" alt=\"Selection-999-283\"></a><br>\n<a href=\"https://ibb.co/88KHY5P\"><img src=\"https://i.ibb.co/vzwSXPL/Selection-999-282.png\" alt=\"Selection-999-282\"></a><br><a target=\"_blank\" href=\"https://dedupelist.com/\">deduplicate list online</a><br></p>",
      "rawMarkdown": "update of results:\ni think this is promising\n\n<a href=\"https://ibb.co/hFmZyNZ\"><img src=\"https://i.ibb.co/F4D0K10/Selection-999-287.png\" alt=\"Selection-999-287\" border=\"0\"></a>\n<a href=\"https://ibb.co/bWS53wm\"><img src=\"https://i.ibb.co/mDL5BZT/Selection-999-286.png\" alt=\"Selection-999-286\" border=\"0\"></a>\n<a href=\"https://ibb.co/chn56CK\"><img src=\"https://i.ibb.co/v4n53QC/Selection-999-285.png\" alt=\"Selection-999-285\" border=\"0\"></a>\n<a href=\"https://ibb.co/bL4p2x5\"><img src=\"https://i.ibb.co/P42B9RG/Selection-999-284.png\" alt=\"Selection-999-284\" border=\"0\"></a>\n<a href=\"https://ibb.co/9p9PGRp\"><img src=\"https://i.ibb.co/yNn2VLN/Selection-999-283.png\" alt=\"Selection-999-283\" border=\"0\"></a>\n<a href=\"https://ibb.co/88KHY5P\"><img src=\"https://i.ibb.co/vzwSXPL/Selection-999-282.png\" alt=\"Selection-999-282\" border=\"0\"></a><br /><a target='_blank' href='https://dedupelist.com/'>deduplicate list online</a><br />\n",
      "votes": 5,
      "replies": [
        {
          "id": 1575245,
          "postDate": "2021-11-08T09:15:02.700Z",
          "content": "<p>other reference:</p>\n<p>TextField: Learning A Deep Direction Field for Irregular Scene Text Detection<br>\n<a href=\"https://github.com/YukangWang/TextField\" target=\"_blank\">https://github.com/YukangWang/TextField</a></p>\n<p>Omnipose: a high-precision morphology-independent solution for bacterial cell segmentation<br>\n<a href=\"https://github.com/MouseLand/cellpose\" target=\"_blank\">https://github.com/MouseLand/cellpose</a></p>\n<p><a href=\"https://ibb.co/3fmHdCn\"><img src=\"https://i.ibb.co/LQdfRZ3/Selection-999-288.png\" alt=\"Selection-999-288\"></a></p>\n<p>Applying Deep Watershed Transform to Kaggle Data Science Bowl 2018 (dockerized solution)<br>\n<a href=\"https://spark-in.me/post/playing-with-dwt-and-ds-bowl-2018\" target=\"_blank\">https://spark-in.me/post/playing-with-dwt-and-ds-bowl-2018</a></p>\n<p>Learn to segment single cells with deep distance estimator and deep cell detector</p>",
          "rawMarkdown": "other reference:\n\nTextField: Learning A Deep Direction Field for Irregular Scene Text Detection\nhttps://github.com/YukangWang/TextField\n\nOmnipose: a high-precision morphology-independent solution for bacterial cell segmentation\nhttps://github.com/MouseLand/cellpose\n\n<a href=\"https://ibb.co/3fmHdCn\"><img src=\"https://i.ibb.co/LQdfRZ3/Selection-999-288.png\" alt=\"Selection-999-288\" border=\"0\"></a>\n\nApplying Deep Watershed Transform to Kaggle Data Science Bowl 2018 (dockerized solution)\nhttps://spark-in.me/post/playing-with-dwt-and-ds-bowl-2018\n\nLearn to segment single cells with deep distance estimator and deep cell detector",
          "votes": 3
        },
        {
          "id": 1576564,
          "postDate": "2021-11-09T10:04:55.357Z",
          "content": "<p><a href=\"https://ibb.co/t3stVZL\"><img src=\"https://i.ibb.co/pnz8YWh/Selection-999-296.png\" alt=\"Selection-999-296\"></a></p>\n<p>be sure to read the top solution and code from <a href=\"https://www.kaggle.com/selimsef\" target=\"_blank\">@selimsef</a> <br>\n<a href=\"https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741\" target=\"_blank\">https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741</a></p>",
          "rawMarkdown": "<a href=\"https://ibb.co/t3stVZL\"><img src=\"https://i.ibb.co/pnz8YWh/Selection-999-296.png\" alt=\"Selection-999-296\" border=\"0\"></a>\n\nbe sure to read the top solution and code from @selimsef \nhttps://www.kaggle.com/c/data-science-bowl-2018/discussion/54741"
        },
        {
          "id": 1577370,
          "postDate": "2021-11-10T03:07:59.140Z",
          "content": "<p>intermediate dirty code to generate the barrier:<br>\n<a href=\"https://drive.google.com/drive/folders/1KKx88H-CxpU_mzn555jymLrg0VE4cvZ2?usp=sharing\" target=\"_blank\">https://drive.google.com/drive/folders/1KKx88H-CxpU_mzn555jymLrg0VE4cvZ2?usp=sharing</a><br>\n<img src=\"https://i.ibb.co/Cmr5yqf/Selection-999-306.png\" alt=\"https://i.ibb.co/Cmr5yqf/Selection-999-306.png\"></p>",
          "rawMarkdown": "intermediate dirty code to generate the barrier:\nhttps://drive.google.com/drive/folders/1KKx88H-CxpU_mzn555jymLrg0VE4cvZ2?usp=sharing\n![https://i.ibb.co/Cmr5yqf/Selection-999-306.png](https://i.ibb.co/Cmr5yqf/Selection-999-306.png)",
          "votes": 4
        },
        {
          "id": 1608524,
          "postDate": "2021-12-06T12:17:21.717Z",
          "content": "<p>In section 4.3 of the <a href=\"https://arxiv.org/pdf/1611.08303.pdf\" target=\"_blank\">Deep Watershed Transform paper</a>, the authors point out that, after training the Direction Net and Watershed Transform Net separately, they cascade the 2 networks and fine-tune the this, using the <em>distance transform</em> as the target.  </p>\n<blockquote>\n  <p>End-to-end fine-tuning: We cascaded the pre-trained<br>\n  models for the DN and WTN and fine-tuned the complete<br>\n  model for 20 epochs using the RGB image and semantic<br>\n  segmentation output of PSPNet as input, and the ground<br>\n  truth distance transforms as the training target. We use a<br>\n  batch size of 3, constant learning rate of 5e-6, and a L2<br>\n  weight penalty of 1e-6.</p>\n</blockquote>\n<p>I don't think they mention which loss function is used for this fine-tuning.  Any idea?</p>",
          "rawMarkdown": "In section 4.3 of the [Deep Watershed Transform paper](https://arxiv.org/pdf/1611.08303.pdf), the authors point out that, after training the Direction Net and Watershed Transform Net separately, they cascade the 2 networks and fine-tune the this, using the *distance transform* as the target.  \n\n> End-to-end fine-tuning: We cascaded the pre-trained\nmodels for the DN and WTN and fine-tuned the complete\nmodel for 20 epochs using the RGB image and semantic\nsegmentation output of PSPNet as input, and the ground\ntruth distance transforms as the training target. We use a\nbatch size of 3, constant learning rate of 5e-6, and a L2\nweight penalty of 1e-6.\n\nI don't think they mention which loss function is used for this fine-tuning.  Any idea?"
        }
      ]
    },
    {
      "id": 1612343,
      "postDate": "2021-12-08T19:22:43.053Z",
      "content": "<p>yet another good method:<br>\n<a href=\"https://github.com/ruotianluo/adaptis.pytorch\" target=\"_blank\">https://github.com/ruotianluo/adaptis.pytorch</a></p>\n<p><a href=\"https://ibb.co/F4pRr4r\"><img src=\"https://i.ibb.co/1GcFgGg/toy-v2-comparison.jpg\" alt=\"toy-v2-comparison\"></a></p>",
      "rawMarkdown": "yet another good method:\nhttps://github.com/ruotianluo/adaptis.pytorch\n\n<a href=\"https://ibb.co/F4pRr4r\"><img src=\"https://i.ibb.co/1GcFgGg/toy-v2-comparison.jpg\" alt=\"toy-v2-comparison\" border=\"0\"></a>",
      "votes": 3
    },
    {
      "id": 1583696,
      "postDate": "2021-11-16T02:15:33.907Z",
      "content": "<p>solo instance encode:</p>\n<p><a href=\"https://ibb.co/dtnZGHS\"><img src=\"https://i.ibb.co/MfqdMJb/Selection-999-392.png\" alt=\"Selection-999-392\"></a><br></p>\n<p>to convert from instance encoding to label image, use max pooling:<br>\n<a href=\"https://github.com/kornia/kornia/pull/1184\" target=\"_blank\">https://github.com/kornia/kornia/pull/1184</a></p>\n<p>the whole process from the input image to the connected component label (CCL) to now fully differentiable.<br>\nbut I haven't figure out how to write the differentiable loss function between two CCL images.</p>\n<p>in training you can modify kornia code to include seeding value. this ensures the CCL labels corresponds to ground truth CCL in loss</p>",
      "rawMarkdown": "solo instance encode:\n\n<a href=\"https://ibb.co/dtnZGHS\"><img src=\"https://i.ibb.co/MfqdMJb/Selection-999-392.png\" alt=\"Selection-999-392\" border=\"0\"></a><br />\n\nto convert from instance encoding to label image, use max pooling:\nhttps://github.com/kornia/kornia/pull/1184\n\nthe whole process from the input image to the connected component label (CCL) to now fully differentiable.\nbut I haven't figure out how to write the differentiable loss function between two CCL images.\n\nin training you can modify kornia code to include seeding value. this ensures the CCL labels corresponds to ground truth CCL in loss\n",
      "votes": 3,
      "replies": [
        {
          "id": 1583824,
          "postDate": "2021-11-16T05:06:48.190Z",
          "content": "<p><a href=\"https://ibb.co/NNTPNQT\"><img src=\"https://i.ibb.co/7pk5p8k/Selection-999-410.png\" alt=\"Selection-999-410\"></a><br>\n<a href=\"https://ibb.co/4K67Z0d\"><img src=\"https://i.ibb.co/0mgcjzt/Selection-999-409.png\" alt=\"Selection-999-409\"></a></p>",
          "rawMarkdown": "\n\n<a href=\"https://ibb.co/NNTPNQT\"><img src=\"https://i.ibb.co/7pk5p8k/Selection-999-410.png\" alt=\"Selection-999-410\" border=\"0\"></a>\n<a href=\"https://ibb.co/4K67Z0d\"><img src=\"https://i.ibb.co/0mgcjzt/Selection-999-409.png\" alt=\"Selection-999-409\" border=\"0\"></a>"
        },
        {
          "id": 1586294,
          "postDate": "2021-11-18T01:08:04.807Z",
          "content": "<p>Do you really need CCL though? the whole point of SOLO is to assign a mask to location. So you already have instance segmentation info in the outputs…</p>",
          "rawMarkdown": "Do you really need CCL though? the whole point of SOLO is to assign a mask to location. So you already have instance segmentation info in the outputs..."
        },
        {
          "id": 1586315,
          "postDate": "2021-11-18T01:47:14.970Z",
          "content": "<p>it depends on how you divide the grid for solo.<br>\nif the target object is small and overlapping, your grid is dense. I work out that SxS in solo is too large for efficient convolution if you use the full image resolution.</p>\n<p>some cell are large and some are small. some needs large context, etc</p>\n<p>it seems to me that instance-FCN paper is a more efficient solution</p>",
          "rawMarkdown": "it depends on how you divide the grid for solo.\nif the target object is small and overlapping, your grid is dense. I work out that SxS in solo is too large for efficient convolution if you use the full image resolution.\n\nsome cell are large and some are small. some needs large context, etc\n\nit seems to me that instance-FCN paper is a more efficient solution"
        },
        {
          "id": 1586317,
          "postDate": "2021-11-18T01:52:08.027Z",
          "content": "<p>Have you tried SOLOv2? The idea behind it is quite neat, and doesn't require SxS segmentation maps. So in theory you can have finer grid (like, S=50) and still be able to produce some results.</p>\n<p>PS: thanks for trying out all sorts of ideas btw :) I find this topic quite helpful in broadening my knowledge about segmentation models :)</p>",
          "rawMarkdown": "Have you tried SOLOv2? The idea behind it is quite neat, and doesn't require SxS segmentation maps. So in theory you can have finer grid (like, S=50) and still be able to produce some results.\n\nPS: thanks for trying out all sorts of ideas btw :) I find this topic quite helpful in broadening my knowledge about segmentation models :)"
        }
      ]
    },
    {
      "id": 1634355,
      "postDate": "2021-12-31T16:10:38.293Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> do you mind if I ask what happened, have you never finished your solution? I was fully expecting you to jump to the top at any time, based on the intermediate results you were sharing.</p>",
      "rawMarkdown": "@hengck23 do you mind if I ask what happened, have you never finished your solution? I was fully expecting you to jump to the top at any time, based on the intermediate results you were sharing.",
      "votes": 1,
      "replies": [
        {
          "id": 1634755,
          "postDate": "2022-01-01T05:59:48.640Z",
          "content": "<p><a href=\"https://www.kaggle.com/slawekbiel\" target=\"_blank\">@slawekbiel</a> </p>\n<p>thanks for the concern. unfortunately, i had a fall a few weeks ago and fractured my kneecap.<br>\nmy doctor advised me to rest more in bed and hence I haven't completed my solution yet. <br>\nmaybe i will make a notebook when i am well and free later.</p>\n<p>lastly, congrats for finishing 3rd place in the ranking. it is very good work in this very short period of time.👍</p>",
          "rawMarkdown": "@slawekbiel \n\nthanks for the concern. unfortunately, i had a fall a few weeks ago and fractured my kneecap.\nmy doctor advised me to rest more in bed and hence I haven't completed my solution yet. \nmaybe i will make a notebook when i am well and free later.\n\nlastly, congrats for finishing 3rd place in the ranking. it is very good work in this very short period of time.👍",
          "votes": 3
        },
        {
          "id": 1634986,
          "postDate": "2022-01-01T11:17:25.937Z",
          "content": "<p>Ouch! Get well and thanks for sharing your work and insights.</p>",
          "rawMarkdown": "Ouch! Get well and thanks for sharing your work and insights."
        }
      ]
    },
    {
      "id": 1600592,
      "postDate": "2021-11-30T14:51:34.277Z",
      "content": "<p>the astro class is the most difficult. it has complex cell shape. some are very long and thin.<br>\nIt is difficult to use watershed for complex shape.<br>\nAfter some work, I manage to find a feasible solution below.</p>\n<p>Hint: this method is also applicable to any other method like mask rcnn. results of your model are used as seed.<br>\nthe coloring net is a refinement network at full resolution.</p>\n<p><a href=\"https://ibb.co/6W823dM\"><img src=\"https://i.ibb.co/pLQgtm7/Selection-999-520.png\" alt=\"Selection-999-520\"></a><br>\n<a href=\"https://ibb.co/sH15rMR\"><img src=\"https://i.ibb.co/cL8bd73/Selection-999-519.png\" alt=\"Selection-999-519\"></a><br>\n<a href=\"https://ibb.co/7twrkvY\"><img src=\"https://i.ibb.co/s90sWjm/Selection-999-518.png\" alt=\"Selection-999-518\"></a></p>\n<p>only top results of the top seeds are shown. i need to train a mask iou predicted to rank the results</p>",
      "rawMarkdown": "the astro class is the most difficult. it has complex cell shape. some are very long and thin.\nIt is difficult to use watershed for complex shape.\nAfter some work, I manage to find a feasible solution below.\n\n\nHint: this method is also applicable to any other method like mask rcnn. results of your model are used as seed.\nthe coloring net is a refinement network at full resolution.\n\n\n\n<a href=\"https://ibb.co/6W823dM\"><img src=\"https://i.ibb.co/pLQgtm7/Selection-999-520.png\" alt=\"Selection-999-520\" border=\"0\"></a>\n<a href=\"https://ibb.co/sH15rMR\"><img src=\"https://i.ibb.co/cL8bd73/Selection-999-519.png\" alt=\"Selection-999-519\" border=\"0\"></a>\n<a href=\"https://ibb.co/7twrkvY\"><img src=\"https://i.ibb.co/s90sWjm/Selection-999-518.png\" alt=\"Selection-999-518\" border=\"0\"></a>\n\nonly top results of the top seeds are shown. i need to train a mask iou predicted to rank the results",
      "votes": 1,
      "replies": [
        {
          "id": 1603963,
          "postDate": "2021-12-03T01:23:55.333Z",
          "content": "<p>code to split cells into subset of non touching ones:<br>\n<a href=\"https://www.kaggle.com/hengck23/split-adjoining-cell-into-subsets-of-non-touching\" target=\"_blank\">https://www.kaggle.com/hengck23/split-adjoining-cell-into-subsets-of-non-touching</a></p>",
          "rawMarkdown": "code to split cells into subset of non touching ones:\nhttps://www.kaggle.com/hengck23/split-adjoining-cell-into-subsets-of-non-touching",
          "votes": 1
        },
        {
          "id": 1604946,
          "postDate": "2021-12-03T21:43:17.477Z",
          "content": "<p>example code for coloring network is up<br>\n<a href=\"https://www.kaggle.com/hengck23/coloring-network-for-instance-segmentation\" target=\"_blank\">https://www.kaggle.com/hengck23/coloring-network-for-instance-segmentation</a></p>",
          "rawMarkdown": "example code for coloring network is up\nhttps://www.kaggle.com/hengck23/coloring-network-for-instance-segmentation",
          "votes": 2
        },
        {
          "id": 1616616,
          "postDate": "2021-12-13T14:41:01.020Z",
          "content": "<p>Thank you. great job. how did you train the model? can there be a repository?</p>",
          "rawMarkdown": "Thank you. great job. how did you train the model? can there be a repository?"
        }
      ]
    },
    {
      "id": 1583587,
      "postDate": "2021-11-16T00:38:03.783Z",
      "content": "<p>in theory, we could output mask RLE encode directly<br>\n<img src=\"https://i.ibb.co/gZK3BKQ/Selection-999-382.png\" alt=\"https://i.ibb.co/gZK3BKQ/Selection-999-382.png\"></p>\n<p>I also see papers that uses pca to compress the mask. they predict pca coefficient per pixel to encode mask<br>\n(hmm … how about VAE as a non linear version of pca)</p>",
      "rawMarkdown": "in theory, we could output mask RLE encode directly\n![https://i.ibb.co/gZK3BKQ/Selection-999-382.png](https://i.ibb.co/gZK3BKQ/Selection-999-382.png)\n\nI also see papers that uses pca to compress the mask. they predict pca coefficient per pixel to encode mask\n(hmm ... how about VAE as a non linear version of pca)",
      "votes": 1,
      "replies": [
        {
          "id": 1585702,
          "postDate": "2021-11-17T13:05:08.317Z",
          "content": "<p>i just find a paper that does this:</p>\n<p><a href=\"http://www.cs.toronto.edu/~fidler/papers/sgn_iccv17.pdf\" target=\"_blank\">http://www.cs.toronto.edu/~fidler/papers/sgn_iccv17.pdf</a><br>\nSequential Grouping Networks for Instance Segmentation (SGN，ICCV 2017)</p>\n<p><img src=\"https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png\" alt=\"https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png\"></p>",
          "rawMarkdown": "i just find a paper that does this:\n\nhttp://www.cs.toronto.edu/~fidler/papers/sgn_iccv17.pdf\nSequential Grouping Networks for Instance Segmentation (SGN，ICCV 2017)\n\n![https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png](https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png)"
        }
      ]
    },
    {
      "id": 1581659,
      "postDate": "2021-11-14T05:21:27.073Z",
      "content": "<p><a href=\"https://github.com/JunMa11/SegWithDistMap\" target=\"_blank\">https://github.com/JunMa11/SegWithDistMap</a><br>\nMotivation: How Distance Transform Maps Boost Segmentation CNNs (MIDL 2020)</p>",
      "rawMarkdown": "https://github.com/JunMa11/SegWithDistMap\nMotivation: How Distance Transform Maps Boost Segmentation CNNs (MIDL 2020)",
      "votes": 1,
      "replies": [
        {
          "id": 1582235,
          "postDate": "2021-11-14T17:06:18.403Z",
          "content": "<p>I tried deep watershed transform for a bit. The model seems to over-smooth the energy landscape (compared to normal watershed technique which over segments). Logical next step seems to be using boundary information as suggested.</p>\n<p>P.S. Trained with ground truth image gradient.</p>",
          "rawMarkdown": "I tried deep watershed transform for a bit. The model seems to over-smooth the energy landscape (compared to normal watershed technique which over segments). Logical next step seems to be using boundary information as suggested.\n\nP.S. Trained with ground truth image gradient."
        }
      ]
    },
    {
      "id": 1577987,
      "postDate": "2021-11-10T14:43:09.080Z",
      "content": "<p>Inpainting Networks Learn to Separate Cells in Microscopy Images<br>\n<a href=\"https://www.bmvc2020-conference.com/conference/papers/paper_0528.html\" target=\"_blank\">https://www.bmvc2020-conference.com/conference/papers/paper_0528.html</a><br>\n<a href=\"https://arxiv.org/pdf/2003.00891.pdf\" target=\"_blank\">https://arxiv.org/pdf/2003.00891.pdf</a><br>\n<a href=\"https://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf\" target=\"_blank\">https://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf</a></p>",
      "rawMarkdown": "Inpainting Networks Learn to Separate Cells in Microscopy Images\nhttps://www.bmvc2020-conference.com/conference/papers/paper_0528.html\nhttps://arxiv.org/pdf/2003.00891.pdf\nhttps://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf",
      "votes": 1,
      "replies": [
        {
          "id": 1580534,
          "postDate": "2021-11-12T21:01:35.477Z",
          "content": "<blockquote>\n  <p><a href=\"https://www.bmvc2020-conference.com/conference/papers/paper_0528.html\" target=\"_blank\">https://www.bmvc2020-conference.com/conference/papers/paper_0528.html</a></p>\n  <p>A current limitation of our<br>\n  method is the runtime: INPAINTAFF requires around 48h to process a 700x1100 image on<br>\n  a single GPU. </p>\n</blockquote>\n<p>This might not work :)</p>",
          "rawMarkdown": "> https://www.bmvc2020-conference.com/conference/papers/paper_0528.html\n\n>A current limitation of our\nmethod is the runtime: INPAINTAFF requires around 48h to process a 700x1100 image on\na single GPU. \n\nThis might not work :)"
        }
      ]
    },
    {
      "id": 1577082,
      "postDate": "2021-11-09T18:34:12.800Z",
      "content": "<p>i came across this interesting paper:</p>\n<ul>\n<li>perform cell vs non-cell 2 class semantic segmentation</li>\n<li>for each cell pixel, use a voting network to vote its center location. this creates a heatmap.</li>\n<li>the detect the center, threshold on the heatmap. though voting backprojection recover the instance segmentation.</li>\n</ul>\n<p><a href=\"https://ibb.co/WB7GpKj\"><img src=\"https://i.ibb.co/wp8Br6j/Selection-999-304.png\" alt=\"Selection-999-304\"></a></p>",
      "rawMarkdown": "i came across this interesting paper:\n\n- perform cell vs non-cell 2 class semantic segmentation\n- for each cell pixel, use a voting network to vote its center location. this creates a heatmap.\n- the detect the center, threshold on the heatmap. though voting backprojection recover the instance segmentation.\n\n\n\n<a href=\"https://ibb.co/WB7GpKj\"><img src=\"https://i.ibb.co/wp8Br6j/Selection-999-304.png\" alt=\"Selection-999-304\" border=\"0\"></a>",
      "votes": 1
    },
    {
      "id": 1572633,
      "postDate": "2021-11-05T20:10:37.337Z",
      "content": "<p>some tricks</p>\n<ol>\n<li>upsize image for input to give better iou at prediction</li>\n</ol>\n<hr>\n<p>important resource:</p>\n<ul>\n<li><a href=\"https://github.com/sartorius-research/LIVECell/tree/main/model\" target=\"_blank\">https://github.com/sartorius-research/LIVECell/tree/main/model</a></li>\n</ul>\n<p>… more to come …</p>",
      "rawMarkdown": "some tricks\n1.  upsize image for input to give better iou at prediction\n\n\n---\nimportant resource:\n- https://github.com/sartorius-research/LIVECell/tree/main/model\n\n... more to come ...",
      "votes": 1
    },
    {
      "id": 1578015,
      "postDate": "2021-11-10T15:06:10.960Z",
      "content": "<p>a good writeup:<br>\n<a href=\"https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49\" target=\"_blank\">https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49</a></p>\n<p>also here:<br>\n<a href=\"https://www.youtube.com/watch?v=LMZI8DDyltQ&amp;t=3699s\" target=\"_blank\">https://www.youtube.com/watch?v=LMZI8DDyltQ&amp;t=3699s</a></p>",
      "rawMarkdown": "a good writeup:\nhttps://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49\n\nalso here:\nhttps://www.youtube.com/watch?v=LMZI8DDyltQ&t=3699s",
      "votes": 2,
      "replies": [
        {
          "id": 1578321,
          "postDate": "2021-11-10T21:49:48.960Z",
          "content": "<p>after reading the article, the conclusion is that you don't need to crop roi if the target object don't overlap. we can convert mask-rcnn (instance segmentation) into multiple unet problem (semantic):</p>\n<p><a href=\"https://ibb.co/tswyN3F\"><img src=\"https://i.ibb.co/BZH87wF/Selection-999-344.png\" alt=\"Selection-999-344\"></a><br></p>\n<p>there are multiple channels corresponding to different object location and sizes. if we can predict that the output channel would be empty, we can skip it.</p>\n<p>actually, in mask rcnn, we have the predicted size of the object prior to segmentation. we can use this information to group segmentation such that they don't overlap. then we can output a set of semantic segmentation sub problems. For each sub problem, we need to specify which object to segment, e.g. using seed or marker as input.</p>\n<pre><code>improved rcnn (get rid of the roi cropping!!!):\nimage --&gt;[rpn]--&gt;proposal --&gt;[rcnn head] --&gt; location,size of object --&gt;[assemble] --&gt; group of non-overlap objects --&gt;[semantic segmnatation head] ---&gt;output masks\n</code></pre>\n<p><a href=\"https://ibb.co/cCC96x3\"><img src=\"https://i.ibb.co/4YYL8Jt/Selection-999-352.png\" alt=\"Selection-999-352\"></a></p>\n<p>tip: perturb seed slightly for TTA</p>",
          "rawMarkdown": "after reading the article, the conclusion is that you don't need to crop roi if the target object don't overlap. we can convert mask-rcnn (instance segmentation) into multiple unet problem (semantic):\n\n\n<a href=\"https://ibb.co/tswyN3F\"><img src=\"https://i.ibb.co/BZH87wF/Selection-999-344.png\" alt=\"Selection-999-344\" border=\"0\"></a><br />\n\nthere are multiple channels corresponding to different object location and sizes. if we can predict that the output channel would be empty, we can skip it.\n\nactually, in mask rcnn, we have the predicted size of the object prior to segmentation. we can use this information to group segmentation such that they don't overlap. then we can output a set of semantic segmentation sub problems. For each sub problem, we need to specify which object to segment, e.g. using seed or marker as input.\n\n```\nimproved rcnn (get rid of the roi cropping!!!):\nimage -->[rpn]-->proposal -->[rcnn head] --> location,size of object -->[assemble] --> group of non-overlap objects -->[semantic segmnatation head] --->output masks\n\n\n```\n<a href=\"https://ibb.co/cCC96x3\"><img src=\"https://i.ibb.co/4YYL8Jt/Selection-999-352.png\" alt=\"Selection-999-352\" border=\"0\"></a>\n\ntip: perturb seed slightly for TTA",
          "votes": 1
        },
        {
          "id": 1579034,
          "postDate": "2021-11-11T13:27:57.850Z",
          "content": "<p>will the output channel number effect performance?</p>",
          "rawMarkdown": "will the output channel number effect performance?"
        }
      ]
    },
    {
      "id": 1577868,
      "postDate": "2021-11-10T13:26:50.013Z",
      "content": "<p>i try on a few validation images, it seems to work.</p>\n<p>but I have a slight problem assigning random colors to the seed … i need to make sure no two adjacent seed have the same color</p>\n<p><a href=\"https://ibb.co/syDzhZ0\"><img src=\"https://i.ibb.co/3B8QwnD/Selection-999-342.png\" alt=\"Selection-999-342\"></a><br>\n<a href=\"https://ibb.co/bJBJdRS\"><img src=\"https://i.ibb.co/WtytKpb/Selection-999-341.png\" alt=\"Selection-999-341\"></a></p>",
      "rawMarkdown": "i try on a few validation images, it seems to work.\n\nbut I have a slight problem assigning random colors to the seed ... i need to make sure no two adjacent seed have the same color\n\n<a href=\"https://ibb.co/syDzhZ0\"><img src=\"https://i.ibb.co/3B8QwnD/Selection-999-342.png\" alt=\"Selection-999-342\" border=\"0\"></a>\n<a href=\"https://ibb.co/bJBJdRS\"><img src=\"https://i.ibb.co/WtytKpb/Selection-999-341.png\" alt=\"Selection-999-341\" border=\"0\"></a>",
      "votes": 2
    },
    {
      "id": 1576530,
      "postDate": "2021-11-09T09:27:36.343Z",
      "content": "<p>I'm following you again (and I still have to debug my ventilator code from your baseline 😤)</p>",
      "rawMarkdown": "I'm following you again (and I still have to debug my ventilator code from your baseline 😤)",
      "votes": 2
    },
    {
      "id": 1571932,
      "postDate": "2021-11-05T09:36:06.920Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> welcome to this competition! After finishing GB Ventilator I was considering whether to join this competition. After seeing you here it' clear. Thank you for all your absolutely great analyses in both my previous competition -  GB Ventilator and G2Net. They are an extremely valuable source of knowledge for many others.</p>",
      "rawMarkdown": "@hengck23 welcome to this competition! After finishing GB Ventilator I was considering whether to join this competition. After seeing you here it' clear. Thank you for all your absolutely great analyses in both my previous competition -  GB Ventilator and G2Net. They are an extremely valuable source of knowledge for many others.",
      "votes": 2
    },
    {
      "id": 1602155,
      "postDate": "2021-12-01T19:51:48.330Z",
      "content": "<p>i find an interesting paper:<br>\n2d instance segmentation is just semantic segmentation in 3d</p>\n<p><a href=\"https://ibb.co/PYDyxvc\"><img src=\"https://i.ibb.co/ZJ2rdpB/Selection-999-529.png\" alt=\"Selection-999-529\"></a></p>",
      "rawMarkdown": "i find an interesting paper:\n2d instance segmentation is just semantic segmentation in 3d\n\n\n<a href=\"https://ibb.co/PYDyxvc\"><img src=\"https://i.ibb.co/ZJ2rdpB/Selection-999-529.png\" alt=\"Selection-999-529\" border=\"0\"></a>"
    },
    {
      "id": 1601500,
      "postDate": "2021-12-01T11:02:35.180Z",
      "content": "<p>demo results from open source<br>\n<a href=\"https://ibb.co/f4ZsJM4\"><img src=\"https://i.ibb.co/cDRjqJD/Selection-999-527.png\" alt=\"Selection-999-527\"></a></p>",
      "rawMarkdown": "demo results from open source\n<a href=\"https://ibb.co/f4ZsJM4\"><img src=\"https://i.ibb.co/cDRjqJD/Selection-999-527.png\" alt=\"Selection-999-527\" border=\"0\"></a>"
    },
    {
      "id": 1587504,
      "postDate": "2021-11-18T18:43:37.703Z",
      "content": "<p>i have an interesting bug.</p>\n<p>results of coloring network?<br>\n<a href=\"https://i.postimg.cc/1t8GJgDG/coloring.gif\" target=\"_blank\">https://i.postimg.cc/1t8GJgDG/coloring.gif</a></p>",
      "rawMarkdown": "i have an interesting bug.\n\nresults of coloring network?\nhttps://i.postimg.cc/1t8GJgDG/coloring.gif\n\n "
    },
    {
      "id": 1581557,
      "postDate": "2021-11-13T23:59:23.903Z",
      "content": "<p>Nice work!</p>",
      "rawMarkdown": "Nice work!"
    },
    {
      "id": 1580807,
      "postDate": "2021-11-13T06:11:48.233Z",
      "content": "<p><a href=\"https://github.com/constantinpape/torch-em\" target=\"_blank\">https://github.com/constantinpape/torch-em</a><br>\n<a href=\"https://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html\" target=\"_blank\">https://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html</a></p>",
      "rawMarkdown": "https://github.com/constantinpape/torch-em\nhttps://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html\n"
    },
    {
      "id": 1580675,
      "postDate": "2021-11-13T02:45:13.303Z",
      "content": "<p>one way to encode instance segmentation<br>\n<a href=\"https://ibb.co/RyvJmmd\"><img src=\"https://i.ibb.co/VmjkZZ5/Selection-999-365.png\" alt=\"Selection-999-365\"></a></p>\n<p>i came to realise that this is what the \"assembling based\" methods are doing(e.g. rfcn, yoloact,solov2)<br>\nsee also: <a href=\"https://arxiv.org/pdf/2101.10913.pdf\" target=\"_blank\">https://arxiv.org/pdf/2101.10913.pdf</a></p>",
      "rawMarkdown": "one way to encode instance segmentation\n<a href=\"https://ibb.co/RyvJmmd\"><img src=\"https://i.ibb.co/VmjkZZ5/Selection-999-365.png\" alt=\"Selection-999-365\" border=\"0\"></a>\n\ni came to realise that this is what the \"assembling based\" methods are doing(e.g. rfcn, yoloact,solov2)\nsee also: https://arxiv.org/pdf/2101.10913.pdf"
    },
    {
      "id": 1580655,
      "postDate": "2021-11-13T01:50:44.717Z",
      "content": "<p><a href=\"https://www.youtube.com/watch?v=MVDUnbVXMGM\" target=\"_blank\">https://www.youtube.com/watch?v=MVDUnbVXMGM</a></p>\n<p>Deep Learning for Cell Imaging Segmentation - Lecture 20 - MIT ML in Life Sciences (Spring 2021)</p>",
      "rawMarkdown": "https://www.youtube.com/watch?v=MVDUnbVXMGM\n\nDeep Learning for Cell Imaging Segmentation - Lecture 20 - MIT ML in Life Sciences (Spring 2021)"
    },
    {
      "id": 1580649,
      "postDate": "2021-11-13T01:27:43.223Z",
      "content": "<p>Self-supervised pretraining for transferable quantitative phase image cell segmentation<br>\n<a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/\" target=\"_blank\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/</a></p>\n<p><img src=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg\" alt=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg\"></p>\n<p><a href=\"https://ibb.co/n3KVcVP\"><img src=\"https://i.ibb.co/ZHbw8w2/Selection-999-363.png\" alt=\"Selection-999-363\"></a></p>\n<p><a href=\"https://ibb.co/ZKYDSRc\"><img src=\"https://i.ibb.co/6b1C8cD/boe-12-10-6514-g001.jpg\" alt=\"boe-12-10-6514-g001\"></a></p>",
      "rawMarkdown": "Self-supervised pretraining for transferable quantitative phase image cell segmentation\nhttps://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/\n\n![https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg)\n\n<a href=\"https://ibb.co/n3KVcVP\"><img src=\"https://i.ibb.co/ZHbw8w2/Selection-999-363.png\" alt=\"Selection-999-363\" border=\"0\"></a>\n\n<a href=\"https://ibb.co/ZKYDSRc\"><img src=\"https://i.ibb.co/6b1C8cD/boe-12-10-6514-g001.jpg\" alt=\"boe-12-10-6514-g001\" border=\"0\"></a>"
    },
    {
      "id": 1578721,
      "postDate": "2021-11-11T09:39:07.363Z",
      "content": "<p>👍good work</p>",
      "rawMarkdown": "👍good work"
    },
    {
      "id": 1577965,
      "postDate": "2021-11-10T14:27:38.027Z",
      "content": "<p><a href=\"https://github.com/juglab/EmbedSeg\" target=\"_blank\">https://github.com/juglab/EmbedSeg</a><br>\nembedding-based Instance Segmentation of Microscopy Images.</p>",
      "rawMarkdown": "https://github.com/juglab/EmbedSeg\nembedding-based Instance Segmentation of Microscopy Images."
    },
    {
      "id": 1577533,
      "postDate": "2021-11-10T06:57:05.700Z",
      "content": "<p><img src=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png\" alt=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png\"></p>\n<p><a href=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation\" target=\"_blank\">https://github.com/yijingru/ObjGuided-Instance-Segmentation</a></p>",
      "rawMarkdown": "![https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png](https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png)\n\nhttps://github.com/yijingru/ObjGuided-Instance-Segmentation"
    },
    {
      "id": 1577088,
      "postDate": "2021-11-09T18:46:08.197Z",
      "content": "<p>[place holder] </p>\n<ol>\n<li>how to adapt puzzle-cam for semi-supervised learning</li>\n<li>are the semi-supervised learning images related by time? if so can cell tracking be used?</li>\n</ol>\n<p><a href=\"https://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001\" target=\"_blank\">https://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001</a> </p>",
      "rawMarkdown": "[place holder] \n\n1. how to adapt puzzle-cam for semi-supervised learning\n2. are the semi-supervised learning images related by time? if so can cell tracking be used?\n\nhttps://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001 "
    },
    {
      "id": 1576942,
      "postDate": "2021-11-09T15:23:57.027Z",
      "content": "<p>following to learn </p>",
      "rawMarkdown": "following to learn "
    },
    {
      "id": 1576478,
      "postDate": "2021-11-09T08:07:25.883Z",
      "content": "<p>Good job! from the Ventilator Pressure Prediction, i learn many from you, this competition, i will expect your works!</p>",
      "rawMarkdown": "Good job! from the Ventilator Pressure Prediction, i learn many from you, this competition, i will expect your works!"
    },
    {
      "id": 1573897,
      "postDate": "2021-11-07T03:21:13.967Z",
      "content": "<p>I am really looking forward to learning some surprises with you in this game.😄</p>",
      "rawMarkdown": "I am really looking forward to learning some surprises with you in this game.😄"
    },
    {
      "id": 1571905,
      "postDate": "2021-11-05T09:13:24.060Z",
      "content": "<p>I've really enjoyed your insightful experiment write-ups in ventilator competition, so looking forward to this one!</p>",
      "rawMarkdown": "I've really enjoyed your insightful experiment write-ups in ventilator competition, so looking forward to this one!"
    },
    {
      "id": 1571870,
      "postDate": "2021-11-05T08:37:51.617Z",
      "content": "<p>new journey begins. haha~~~</p>",
      "rawMarkdown": "new journey begins. haha~~~"
    },
    {
      "id": 1582675,
      "postDate": "2021-11-15T06:31:17.547Z",
      "rawMarkdown": "",
      "isDeleted": true,
      "replies": [
        {
          "id": 1582745,
          "postDate": "2021-11-15T08:22:51.387Z",
          "content": "<p>i suggest you can use the code from data sciencebowl 2018</p>",
          "rawMarkdown": "i suggest you can use the code from data sciencebowl 2018"
        },
        {
          "id": 1582761,
          "postDate": "2021-11-15T08:38:56.187Z",
          "rawMarkdown": "",
          "isDeleted": true
        },
        {
          "id": 1583285,
          "postDate": "2021-11-15T17:25:03.270Z",
          "rawMarkdown": "",
          "isDeleted": true
        }
      ]
    },
    {
      "id": 1579678,
      "postDate": "2021-11-12T06:01:13.883Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 1582746,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-15T08:23:16.937000",
      "content": "<p>first validation results!<br>\n*no post-processing/filtering of results (e.g. remove small mask)</p>\n<p><a href=\"https://ibb.co/vjsYnWn\"><img src=\"https://i.ibb.co/MC860H0/Selection-999-379.png\" alt=\"Selection-999-379\"></a></p>\n<p><a href=\"https://ibb.co/Bf9sgqr\" target=\"_blank\">https://ibb.co/Bf9sgqr</a><br>\n<a href=\"https://ibb.co/8x5tXwK\" target=\"_blank\">https://ibb.co/8x5tXwK</a><br>\n<a href=\"https://ibb.co/GH5FPPS\" target=\"_blank\">https://ibb.co/GH5FPPS</a></p>\n<p>I train one model for single cell type for now to check pre/post processing parameters. i may combine them into single model later. Here is validation results for other cell type:<br>\ncort   0.359497</p>",
      "votes": 7,
      "replies": []
    },
    {
      "id": 1575237,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-08T09:08:47.943000",
      "content": "<p>update of results:<br>\ni think this is promising</p>\n<p><a href=\"https://ibb.co/hFmZyNZ\"><img src=\"https://i.ibb.co/F4D0K10/Selection-999-287.png\" alt=\"Selection-999-287\"></a><br>\n<a href=\"https://ibb.co/bWS53wm\"><img src=\"https://i.ibb.co/mDL5BZT/Selection-999-286.png\" alt=\"Selection-999-286\"></a><br>\n<a href=\"https://ibb.co/chn56CK\"><img src=\"https://i.ibb.co/v4n53QC/Selection-999-285.png\" alt=\"Selection-999-285\"></a><br>\n<a href=\"https://ibb.co/bL4p2x5\"><img src=\"https://i.ibb.co/P42B9RG/Selection-999-284.png\" alt=\"Selection-999-284\"></a><br>\n<a href=\"https://ibb.co/9p9PGRp\"><img src=\"https://i.ibb.co/yNn2VLN/Selection-999-283.png\" alt=\"Selection-999-283\"></a><br>\n<a href=\"https://ibb.co/88KHY5P\"><img src=\"https://i.ibb.co/vzwSXPL/Selection-999-282.png\" alt=\"Selection-999-282\"></a><br><a target=\"_blank\" href=\"https://dedupelist.com/\">deduplicate list online</a><br></p>",
      "votes": 5,
      "replies": [
        {
          "id": 1575245,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-08T09:15:02.700000",
          "content": "<p>other reference:</p>\n<p>TextField: Learning A Deep Direction Field for Irregular Scene Text Detection<br>\n<a href=\"https://github.com/YukangWang/TextField\" target=\"_blank\">https://github.com/YukangWang/TextField</a></p>\n<p>Omnipose: a high-precision morphology-independent solution for bacterial cell segmentation<br>\n<a href=\"https://github.com/MouseLand/cellpose\" target=\"_blank\">https://github.com/MouseLand/cellpose</a></p>\n<p><a href=\"https://ibb.co/3fmHdCn\"><img src=\"https://i.ibb.co/LQdfRZ3/Selection-999-288.png\" alt=\"Selection-999-288\"></a></p>\n<p>Applying Deep Watershed Transform to Kaggle Data Science Bowl 2018 (dockerized solution)<br>\n<a href=\"https://spark-in.me/post/playing-with-dwt-and-ds-bowl-2018\" target=\"_blank\">https://spark-in.me/post/playing-with-dwt-and-ds-bowl-2018</a></p>\n<p>Learn to segment single cells with deep distance estimator and deep cell detector</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1576564,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-09T10:04:55.357000",
          "content": "<p><a href=\"https://ibb.co/t3stVZL\"><img src=\"https://i.ibb.co/pnz8YWh/Selection-999-296.png\" alt=\"Selection-999-296\"></a></p>\n<p>be sure to read the top solution and code from <a href=\"https://www.kaggle.com/selimsef\" target=\"_blank\">@selimsef</a> <br>\n<a href=\"https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741\" target=\"_blank\">https://www.kaggle.com/c/data-science-bowl-2018/discussion/54741</a></p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1577370,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-10T03:07:59.140000",
          "content": "<p>intermediate dirty code to generate the barrier:<br>\n<a href=\"https://drive.google.com/drive/folders/1KKx88H-CxpU_mzn555jymLrg0VE4cvZ2?usp=sharing\" target=\"_blank\">https://drive.google.com/drive/folders/1KKx88H-CxpU_mzn555jymLrg0VE4cvZ2?usp=sharing</a><br>\n<img src=\"https://i.ibb.co/Cmr5yqf/Selection-999-306.png\" alt=\"https://i.ibb.co/Cmr5yqf/Selection-999-306.png\"></p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1608524,
          "author_name": "wafflebufflo",
          "author_url": "",
          "post_date": "2021-12-06T12:17:21.717000",
          "content": "<p>In section 4.3 of the <a href=\"https://arxiv.org/pdf/1611.08303.pdf\" target=\"_blank\">Deep Watershed Transform paper</a>, the authors point out that, after training the Direction Net and Watershed Transform Net separately, they cascade the 2 networks and fine-tune the this, using the <em>distance transform</em> as the target.  </p>\n<blockquote>\n  <p>End-to-end fine-tuning: We cascaded the pre-trained<br>\n  models for the DN and WTN and fine-tuned the complete<br>\n  model for 20 epochs using the RGB image and semantic<br>\n  segmentation output of PSPNet as input, and the ground<br>\n  truth distance transforms as the training target. We use a<br>\n  batch size of 3, constant learning rate of 5e-6, and a L2<br>\n  weight penalty of 1e-6.</p>\n</blockquote>\n<p>I don't think they mention which loss function is used for this fine-tuning.  Any idea?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1612343,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-12-08T19:22:43.053000",
      "content": "<p>yet another good method:<br>\n<a href=\"https://github.com/ruotianluo/adaptis.pytorch\" target=\"_blank\">https://github.com/ruotianluo/adaptis.pytorch</a></p>\n<p><a href=\"https://ibb.co/F4pRr4r\"><img src=\"https://i.ibb.co/1GcFgGg/toy-v2-comparison.jpg\" alt=\"toy-v2-comparison\"></a></p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 1583696,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-16T02:15:33.907000",
      "content": "<p>solo instance encode:</p>\n<p><a href=\"https://ibb.co/dtnZGHS\"><img src=\"https://i.ibb.co/MfqdMJb/Selection-999-392.png\" alt=\"Selection-999-392\"></a><br></p>\n<p>to convert from instance encoding to label image, use max pooling:<br>\n<a href=\"https://github.com/kornia/kornia/pull/1184\" target=\"_blank\">https://github.com/kornia/kornia/pull/1184</a></p>\n<p>the whole process from the input image to the connected component label (CCL) to now fully differentiable.<br>\nbut I haven't figure out how to write the differentiable loss function between two CCL images.</p>\n<p>in training you can modify kornia code to include seeding value. this ensures the CCL labels corresponds to ground truth CCL in loss</p>",
      "votes": 3,
      "replies": [
        {
          "id": 1583824,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-16T05:06:48.190000",
          "content": "<p><a href=\"https://ibb.co/NNTPNQT\"><img src=\"https://i.ibb.co/7pk5p8k/Selection-999-410.png\" alt=\"Selection-999-410\"></a><br>\n<a href=\"https://ibb.co/4K67Z0d\"><img src=\"https://i.ibb.co/0mgcjzt/Selection-999-409.png\" alt=\"Selection-999-409\"></a></p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1586294,
          "author_name": "Chan Kha Vu",
          "author_url": "",
          "post_date": "2021-11-18T01:08:04.807000",
          "content": "<p>Do you really need CCL though? the whole point of SOLO is to assign a mask to location. So you already have instance segmentation info in the outputs…</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1586315,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-18T01:47:14.970000",
          "content": "<p>it depends on how you divide the grid for solo.<br>\nif the target object is small and overlapping, your grid is dense. I work out that SxS in solo is too large for efficient convolution if you use the full image resolution.</p>\n<p>some cell are large and some are small. some needs large context, etc</p>\n<p>it seems to me that instance-FCN paper is a more efficient solution</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1586317,
          "author_name": "Chan Kha Vu",
          "author_url": "",
          "post_date": "2021-11-18T01:52:08.027000",
          "content": "<p>Have you tried SOLOv2? The idea behind it is quite neat, and doesn't require SxS segmentation maps. So in theory you can have finer grid (like, S=50) and still be able to produce some results.</p>\n<p>PS: thanks for trying out all sorts of ideas btw :) I find this topic quite helpful in broadening my knowledge about segmentation models :)</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1634355,
      "author_name": "Slawek Biel",
      "author_url": "",
      "post_date": "2021-12-31T16:10:38.293000",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> do you mind if I ask what happened, have you never finished your solution? I was fully expecting you to jump to the top at any time, based on the intermediate results you were sharing.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1634755,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2022-01-01T05:59:48.640000",
          "content": "<p><a href=\"https://www.kaggle.com/slawekbiel\" target=\"_blank\">@slawekbiel</a> </p>\n<p>thanks for the concern. unfortunately, i had a fall a few weeks ago and fractured my kneecap.<br>\nmy doctor advised me to rest more in bed and hence I haven't completed my solution yet. <br>\nmaybe i will make a notebook when i am well and free later.</p>\n<p>lastly, congrats for finishing 3rd place in the ranking. it is very good work in this very short period of time.👍</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1634986,
          "author_name": "Slawek Biel",
          "author_url": "",
          "post_date": "2022-01-01T11:17:25.937000",
          "content": "<p>Ouch! Get well and thanks for sharing your work and insights.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1600592,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-30T14:51:34.277000",
      "content": "<p>the astro class is the most difficult. it has complex cell shape. some are very long and thin.<br>\nIt is difficult to use watershed for complex shape.<br>\nAfter some work, I manage to find a feasible solution below.</p>\n<p>Hint: this method is also applicable to any other method like mask rcnn. results of your model are used as seed.<br>\nthe coloring net is a refinement network at full resolution.</p>\n<p><a href=\"https://ibb.co/6W823dM\"><img src=\"https://i.ibb.co/pLQgtm7/Selection-999-520.png\" alt=\"Selection-999-520\"></a><br>\n<a href=\"https://ibb.co/sH15rMR\"><img src=\"https://i.ibb.co/cL8bd73/Selection-999-519.png\" alt=\"Selection-999-519\"></a><br>\n<a href=\"https://ibb.co/7twrkvY\"><img src=\"https://i.ibb.co/s90sWjm/Selection-999-518.png\" alt=\"Selection-999-518\"></a></p>\n<p>only top results of the top seeds are shown. i need to train a mask iou predicted to rank the results</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1603963,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-12-03T01:23:55.333000",
          "content": "<p>code to split cells into subset of non touching ones:<br>\n<a href=\"https://www.kaggle.com/hengck23/split-adjoining-cell-into-subsets-of-non-touching\" target=\"_blank\">https://www.kaggle.com/hengck23/split-adjoining-cell-into-subsets-of-non-touching</a></p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1604946,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-12-03T21:43:17.477000",
          "content": "<p>example code for coloring network is up<br>\n<a href=\"https://www.kaggle.com/hengck23/coloring-network-for-instance-segmentation\" target=\"_blank\">https://www.kaggle.com/hengck23/coloring-network-for-instance-segmentation</a></p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1616616,
          "author_name": "Zaakcii Ru",
          "author_url": "",
          "post_date": "2021-12-13T14:41:01.020000",
          "content": "<p>Thank you. great job. how did you train the model? can there be a repository?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1583587,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-16T00:38:03.783000",
      "content": "<p>in theory, we could output mask RLE encode directly<br>\n<img src=\"https://i.ibb.co/gZK3BKQ/Selection-999-382.png\" alt=\"https://i.ibb.co/gZK3BKQ/Selection-999-382.png\"></p>\n<p>I also see papers that uses pca to compress the mask. they predict pca coefficient per pixel to encode mask<br>\n(hmm … how about VAE as a non linear version of pca)</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1585702,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-17T13:05:08.317000",
          "content": "<p>i just find a paper that does this:</p>\n<p><a href=\"http://www.cs.toronto.edu/~fidler/papers/sgn_iccv17.pdf\" target=\"_blank\">http://www.cs.toronto.edu/~fidler/papers/sgn_iccv17.pdf</a><br>\nSequential Grouping Networks for Instance Segmentation (SGN，ICCV 2017)</p>\n<p><img src=\"https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png\" alt=\"https://miro.medium.com/max/700/1*3AdI0hce3YVv_fwe1JqWeQ.png\"></p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1581659,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-14T05:21:27.073000",
      "content": "<p><a href=\"https://github.com/JunMa11/SegWithDistMap\" target=\"_blank\">https://github.com/JunMa11/SegWithDistMap</a><br>\nMotivation: How Distance Transform Maps Boost Segmentation CNNs (MIDL 2020)</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1582235,
          "author_name": "JunYong Tong",
          "author_url": "",
          "post_date": "2021-11-14T17:06:18.403000",
          "content": "<p>I tried deep watershed transform for a bit. The model seems to over-smooth the energy landscape (compared to normal watershed technique which over segments). Logical next step seems to be using boundary information as suggested.</p>\n<p>P.S. Trained with ground truth image gradient.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1577987,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-10T14:43:09.080000",
      "content": "<p>Inpainting Networks Learn to Separate Cells in Microscopy Images<br>\n<a href=\"https://www.bmvc2020-conference.com/conference/papers/paper_0528.html\" target=\"_blank\">https://www.bmvc2020-conference.com/conference/papers/paper_0528.html</a><br>\n<a href=\"https://arxiv.org/pdf/2003.00891.pdf\" target=\"_blank\">https://arxiv.org/pdf/2003.00891.pdf</a><br>\n<a href=\"https://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf\" target=\"_blank\">https://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf</a></p>",
      "votes": 1,
      "replies": [
        {
          "id": 1580534,
          "author_name": "Slawek Biel",
          "author_url": "",
          "post_date": "2021-11-12T21:01:35.477000",
          "content": "<blockquote>\n  <p><a href=\"https://www.bmvc2020-conference.com/conference/papers/paper_0528.html\" target=\"_blank\">https://www.bmvc2020-conference.com/conference/papers/paper_0528.html</a></p>\n  <p>A current limitation of our<br>\n  method is the runtime: INPAINTAFF requires around 48h to process a 700x1100 image on<br>\n  a single GPU. </p>\n</blockquote>\n<p>This might not work :)</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1577082,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-09T18:34:12.800000",
      "content": "<p>i came across this interesting paper:</p>\n<ul>\n<li>perform cell vs non-cell 2 class semantic segmentation</li>\n<li>for each cell pixel, use a voting network to vote its center location. this creates a heatmap.</li>\n<li>the detect the center, threshold on the heatmap. though voting backprojection recover the instance segmentation.</li>\n</ul>\n<p><a href=\"https://ibb.co/WB7GpKj\"><img src=\"https://i.ibb.co/wp8Br6j/Selection-999-304.png\" alt=\"Selection-999-304\"></a></p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1572633,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-05T20:10:37.337000",
      "content": "<p>some tricks</p>\n<ol>\n<li>upsize image for input to give better iou at prediction</li>\n</ol>\n<hr>\n<p>important resource:</p>\n<ul>\n<li><a href=\"https://github.com/sartorius-research/LIVECell/tree/main/model\" target=\"_blank\">https://github.com/sartorius-research/LIVECell/tree/main/model</a></li>\n</ul>\n<p>… more to come …</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1578015,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-10T15:06:10.960000",
      "content": "<p>a good writeup:<br>\n<a href=\"https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49\" target=\"_blank\">https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49</a></p>\n<p>also here:<br>\n<a href=\"https://www.youtube.com/watch?v=LMZI8DDyltQ&amp;t=3699s\" target=\"_blank\">https://www.youtube.com/watch?v=LMZI8DDyltQ&amp;t=3699s</a></p>",
      "votes": 2,
      "replies": [
        {
          "id": 1578321,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2021-11-10T21:49:48.960000",
          "content": "<p>after reading the article, the conclusion is that you don't need to crop roi if the target object don't overlap. we can convert mask-rcnn (instance segmentation) into multiple unet problem (semantic):</p>\n<p><a href=\"https://ibb.co/tswyN3F\"><img src=\"https://i.ibb.co/BZH87wF/Selection-999-344.png\" alt=\"Selection-999-344\"></a><br></p>\n<p>there are multiple channels corresponding to different object location and sizes. if we can predict that the output channel would be empty, we can skip it.</p>\n<p>actually, in mask rcnn, we have the predicted size of the object prior to segmentation. we can use this information to group segmentation such that they don't overlap. then we can output a set of semantic segmentation sub problems. For each sub problem, we need to specify which object to segment, e.g. using seed or marker as input.</p>\n<pre><code>improved rcnn (get rid of the roi cropping!!!):\nimage --&gt;[rpn]--&gt;proposal --&gt;[rcnn head] --&gt; location,size of object --&gt;[assemble] --&gt; group of non-overlap objects --&gt;[semantic segmnatation head] ---&gt;output masks\n</code></pre>\n<p><a href=\"https://ibb.co/cCC96x3\"><img src=\"https://i.ibb.co/4YYL8Jt/Selection-999-352.png\" alt=\"Selection-999-352\"></a></p>\n<p>tip: perturb seed slightly for TTA</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1579034,
          "author_name": "dragon zhang",
          "author_url": "",
          "post_date": "2021-11-11T13:27:57.850000",
          "content": "<p>will the output channel number effect performance?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1577868,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-10T13:26:50.013000",
      "content": "<p>i try on a few validation images, it seems to work.</p>\n<p>but I have a slight problem assigning random colors to the seed … i need to make sure no two adjacent seed have the same color</p>\n<p><a href=\"https://ibb.co/syDzhZ0\"><img src=\"https://i.ibb.co/3B8QwnD/Selection-999-342.png\" alt=\"Selection-999-342\"></a><br>\n<a href=\"https://ibb.co/bJBJdRS\"><img src=\"https://i.ibb.co/WtytKpb/Selection-999-341.png\" alt=\"Selection-999-341\"></a></p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1576530,
      "author_name": "yukiya",
      "author_url": "",
      "post_date": "2021-11-09T09:27:36.343000",
      "content": "<p>I'm following you again (and I still have to debug my ventilator code from your baseline 😤)</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1571932,
      "author_name": "Allie K.",
      "author_url": "",
      "post_date": "2021-11-05T09:36:06.920000",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> welcome to this competition! After finishing GB Ventilator I was considering whether to join this competition. After seeing you here it' clear. Thank you for all your absolutely great analyses in both my previous competition -  GB Ventilator and G2Net. They are an extremely valuable source of knowledge for many others.</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1602155,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-12-01T19:51:48.330000",
      "content": "<p>i find an interesting paper:<br>\n2d instance segmentation is just semantic segmentation in 3d</p>\n<p><a href=\"https://ibb.co/PYDyxvc\"><img src=\"https://i.ibb.co/ZJ2rdpB/Selection-999-529.png\" alt=\"Selection-999-529\"></a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1601500,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-12-01T11:02:35.180000",
      "content": "<p>demo results from open source<br>\n<a href=\"https://ibb.co/f4ZsJM4\"><img src=\"https://i.ibb.co/cDRjqJD/Selection-999-527.png\" alt=\"Selection-999-527\"></a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1587504,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-18T18:43:37.703000",
      "content": "<p>i have an interesting bug.</p>\n<p>results of coloring network?<br>\n<a href=\"https://i.postimg.cc/1t8GJgDG/coloring.gif\" target=\"_blank\">https://i.postimg.cc/1t8GJgDG/coloring.gif</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1581557,
      "author_name": "TmT",
      "author_url": "",
      "post_date": "2021-11-13T23:59:23.903000",
      "content": "<p>Nice work!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1580807,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-13T06:11:48.233000",
      "content": "<p><a href=\"https://github.com/constantinpape/torch-em\" target=\"_blank\">https://github.com/constantinpape/torch-em</a><br>\n<a href=\"https://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html\" target=\"_blank\">https://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1580675,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-13T02:45:13.303000",
      "content": "<p>one way to encode instance segmentation<br>\n<a href=\"https://ibb.co/RyvJmmd\"><img src=\"https://i.ibb.co/VmjkZZ5/Selection-999-365.png\" alt=\"Selection-999-365\"></a></p>\n<p>i came to realise that this is what the \"assembling based\" methods are doing(e.g. rfcn, yoloact,solov2)<br>\nsee also: <a href=\"https://arxiv.org/pdf/2101.10913.pdf\" target=\"_blank\">https://arxiv.org/pdf/2101.10913.pdf</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1580655,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-13T01:50:44.717000",
      "content": "<p><a href=\"https://www.youtube.com/watch?v=MVDUnbVXMGM\" target=\"_blank\">https://www.youtube.com/watch?v=MVDUnbVXMGM</a></p>\n<p>Deep Learning for Cell Imaging Segmentation - Lecture 20 - MIT ML in Life Sciences (Spring 2021)</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1580649,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-13T01:27:43.223000",
      "content": "<p>Self-supervised pretraining for transferable quantitative phase image cell segmentation<br>\n<a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/\" target=\"_blank\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/</a></p>\n<p><img src=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg\" alt=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg\"></p>\n<p><a href=\"https://ibb.co/n3KVcVP\"><img src=\"https://i.ibb.co/ZHbw8w2/Selection-999-363.png\" alt=\"Selection-999-363\"></a></p>\n<p><a href=\"https://ibb.co/ZKYDSRc\"><img src=\"https://i.ibb.co/6b1C8cD/boe-12-10-6514-g001.jpg\" alt=\"boe-12-10-6514-g001\"></a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1578721,
      "author_name": "Eason Yao",
      "author_url": "",
      "post_date": "2021-11-11T09:39:07.363000",
      "content": "<p>👍good work</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1577965,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-10T14:27:38.027000",
      "content": "<p><a href=\"https://github.com/juglab/EmbedSeg\" target=\"_blank\">https://github.com/juglab/EmbedSeg</a><br>\nembedding-based Instance Segmentation of Microscopy Images.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1577533,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-10T06:57:05.700000",
      "content": "<p><img src=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png\" alt=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png\"></p>\n<p><a href=\"https://github.com/yijingru/ObjGuided-Instance-Segmentation\" target=\"_blank\">https://github.com/yijingru/ObjGuided-Instance-Segmentation</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1577088,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2021-11-09T18:46:08.197000",
      "content": "<p>[place holder] </p>\n<ol>\n<li>how to adapt puzzle-cam for semi-supervised learning</li>\n<li>are the semi-supervised learning images related by time? if so can cell tracking be used?</li>\n</ol>\n<p><a href=\"https://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001\" target=\"_blank\">https://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001</a> </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1576942,
      "author_name": "Haw Keat",
      "author_url": "",
      "post_date": "2021-11-09T15:23:57.027000",
      "content": "<p>following to learn </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1576478,
      "author_name": "Ctrl_CV",
      "author_url": "",
      "post_date": "2021-11-09T08:07:25.883000",
      "content": "<p>Good job! from the Ventilator Pressure Prediction, i learn many from you, this competition, i will expect your works!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1573897,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-07T03:21:13.967000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1571905,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-05T09:13:24.060000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1571870,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-05T08:37:51.617000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1582675,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-15T06:31:17.547000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 1582745,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-11-15T08:22:51.387000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1582761,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-11-15T08:38:56.187000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1583285,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-11-15T17:25:03.270000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1579678,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-12T06:01:13.883000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1571625": "this post will document my approach and results for the competition submission.\ni will update as I work along.\n\nsummary of approach:\nstep 1:\n- use unet,etc method to translate input image to pixel per label segmentation (e.g. background, cell, cell boundary, cell center)\n\nstep 2:\n- input per label segmentation (and maybe also original image) into instance segmentation model like mask-rcnn.\n\ni suspect with the additional pixel label, anchor-free/box-free instance segmentation model may also work\n\nto get high lb score, it is important that\n- the center detection rate mask be high in step.1\n- if we can do without the use of original image in step.2, we can have effective transfer learning. I am also thinking of using GAN to generate more train samples\n- it may be possible to combine step.1 and step2 in single end-to-end model\n- to find the upper limit of the approach or as a proof of concept, one can feed in ground truth of step1 into mask rcnn/anchor free model, etc  and train that model first.\n- a simple way to do self-supervised learning:\n  - from an image, create an augmented version, e.g. flip or scale or rotate\n  - the pixel label from unet in step.1 should be consistent. hence you can use consistency loss or contrastive loss",
    "1582746": "first validation results!\n*no post-processing/filtering of results (e.g. remove small mask)\n\n\n<a href=\"https://ibb.co/vjsYnWn\"><img src=\"https://i.ibb.co/MC860H0/Selection-999-379.png\" alt=\"Selection-999-379\" border=\"0\"></a>\n\nhttps://ibb.co/Bf9sgqr\nhttps://ibb.co/8x5tXwK\nhttps://ibb.co/GH5FPPS\n\n\nI train one model for single cell type for now to check pre/post processing parameters. i may combine them into single model later. Here is validation results for other cell type:\ncort   0.359497",
    "1575237": "update of results:\ni think this is promising\n\n<a href=\"https://ibb.co/hFmZyNZ\"><img src=\"https://i.ibb.co/F4D0K10/Selection-999-287.png\" alt=\"Selection-999-287\" border=\"0\"></a>\n<a href=\"https://ibb.co/bWS53wm\"><img src=\"https://i.ibb.co/mDL5BZT/Selection-999-286.png\" alt=\"Selection-999-286\" border=\"0\"></a>\n<a href=\"https://ibb.co/chn56CK\"><img src=\"https://i.ibb.co/v4n53QC/Selection-999-285.png\" alt=\"Selection-999-285\" border=\"0\"></a>\n<a href=\"https://ibb.co/bL4p2x5\"><img src=\"https://i.ibb.co/P42B9RG/Selection-999-284.png\" alt=\"Selection-999-284\" border=\"0\"></a>\n<a href=\"https://ibb.co/9p9PGRp\"><img src=\"https://i.ibb.co/yNn2VLN/Selection-999-283.png\" alt=\"Selection-999-283\" border=\"0\"></a>\n<a href=\"https://ibb.co/88KHY5P\"><img src=\"https://i.ibb.co/vzwSXPL/Selection-999-282.png\" alt=\"Selection-999-282\" border=\"0\"></a><br /><a target='_blank' href='https://dedupelist.com/'>deduplicate list online</a><br />\n",
    "1612343": "yet another good method:\nhttps://github.com/ruotianluo/adaptis.pytorch\n\n<a href=\"https://ibb.co/F4pRr4r\"><img src=\"https://i.ibb.co/1GcFgGg/toy-v2-comparison.jpg\" alt=\"toy-v2-comparison\" border=\"0\"></a>",
    "1583696": "solo instance encode:\n\n<a href=\"https://ibb.co/dtnZGHS\"><img src=\"https://i.ibb.co/MfqdMJb/Selection-999-392.png\" alt=\"Selection-999-392\" border=\"0\"></a><br />\n\nto convert from instance encoding to label image, use max pooling:\nhttps://github.com/kornia/kornia/pull/1184\n\nthe whole process from the input image to the connected component label (CCL) to now fully differentiable.\nbut I haven't figure out how to write the differentiable loss function between two CCL images.\n\nin training you can modify kornia code to include seeding value. this ensures the CCL labels corresponds to ground truth CCL in loss\n",
    "1634355": "@hengck23 do you mind if I ask what happened, have you never finished your solution? I was fully expecting you to jump to the top at any time, based on the intermediate results you were sharing.",
    "1600592": "the astro class is the most difficult. it has complex cell shape. some are very long and thin.\nIt is difficult to use watershed for complex shape.\nAfter some work, I manage to find a feasible solution below.\n\n\nHint: this method is also applicable to any other method like mask rcnn. results of your model are used as seed.\nthe coloring net is a refinement network at full resolution.\n\n\n\n<a href=\"https://ibb.co/6W823dM\"><img src=\"https://i.ibb.co/pLQgtm7/Selection-999-520.png\" alt=\"Selection-999-520\" border=\"0\"></a>\n<a href=\"https://ibb.co/sH15rMR\"><img src=\"https://i.ibb.co/cL8bd73/Selection-999-519.png\" alt=\"Selection-999-519\" border=\"0\"></a>\n<a href=\"https://ibb.co/7twrkvY\"><img src=\"https://i.ibb.co/s90sWjm/Selection-999-518.png\" alt=\"Selection-999-518\" border=\"0\"></a>\n\nonly top results of the top seeds are shown. i need to train a mask iou predicted to rank the results",
    "1583587": "in theory, we could output mask RLE encode directly\n![https://i.ibb.co/gZK3BKQ/Selection-999-382.png](https://i.ibb.co/gZK3BKQ/Selection-999-382.png)\n\nI also see papers that uses pca to compress the mask. they predict pca coefficient per pixel to encode mask\n(hmm ... how about VAE as a non linear version of pca)",
    "1581659": "https://github.com/JunMa11/SegWithDistMap\nMotivation: How Distance Transform Maps Boost Segmentation CNNs (MIDL 2020)",
    "1577987": "Inpainting Networks Learn to Separate Cells in Microscopy Images\nhttps://www.bmvc2020-conference.com/conference/papers/paper_0528.html\nhttps://arxiv.org/pdf/2003.00891.pdf\nhttps://archiv.ub.uni-heidelberg.de/volltextserver/28353/1/steffen_wolf_thesis_compressed.pdf",
    "1577082": "i came across this interesting paper:\n\n- perform cell vs non-cell 2 class semantic segmentation\n- for each cell pixel, use a voting network to vote its center location. this creates a heatmap.\n- the detect the center, threshold on the heatmap. though voting backprojection recover the instance segmentation.\n\n\n\n<a href=\"https://ibb.co/WB7GpKj\"><img src=\"https://i.ibb.co/wp8Br6j/Selection-999-304.png\" alt=\"Selection-999-304\" border=\"0\"></a>",
    "1572633": "some tricks\n1.  upsize image for input to give better iou at prediction\n\n\n---\nimportant resource:\n- https://github.com/sartorius-research/LIVECell/tree/main/model\n\n... more to come ...",
    "1578015": "a good writeup:\nhttps://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49\n\nalso here:\nhttps://www.youtube.com/watch?v=LMZI8DDyltQ&t=3699s",
    "1577868": "i try on a few validation images, it seems to work.\n\nbut I have a slight problem assigning random colors to the seed ... i need to make sure no two adjacent seed have the same color\n\n<a href=\"https://ibb.co/syDzhZ0\"><img src=\"https://i.ibb.co/3B8QwnD/Selection-999-342.png\" alt=\"Selection-999-342\" border=\"0\"></a>\n<a href=\"https://ibb.co/bJBJdRS\"><img src=\"https://i.ibb.co/WtytKpb/Selection-999-341.png\" alt=\"Selection-999-341\" border=\"0\"></a>",
    "1576530": "I'm following you again (and I still have to debug my ventilator code from your baseline 😤)",
    "1571932": "@hengck23 welcome to this competition! After finishing GB Ventilator I was considering whether to join this competition. After seeing you here it' clear. Thank you for all your absolutely great analyses in both my previous competition -  GB Ventilator and G2Net. They are an extremely valuable source of knowledge for many others.",
    "1602155": "i find an interesting paper:\n2d instance segmentation is just semantic segmentation in 3d\n\n\n<a href=\"https://ibb.co/PYDyxvc\"><img src=\"https://i.ibb.co/ZJ2rdpB/Selection-999-529.png\" alt=\"Selection-999-529\" border=\"0\"></a>",
    "1601500": "demo results from open source\n<a href=\"https://ibb.co/f4ZsJM4\"><img src=\"https://i.ibb.co/cDRjqJD/Selection-999-527.png\" alt=\"Selection-999-527\" border=\"0\"></a>",
    "1587504": "i have an interesting bug.\n\nresults of coloring network?\nhttps://i.postimg.cc/1t8GJgDG/coloring.gif\n\n ",
    "1581557": "Nice work!",
    "1580807": "https://github.com/constantinpape/torch-em\nhttps://openaccess.thecvf.com/content_ECCV_2018/html/Steffen_Wolf_The_Mutex_Watershed_ECCV_2018_paper.html\n",
    "1580675": "one way to encode instance segmentation\n<a href=\"https://ibb.co/RyvJmmd\"><img src=\"https://i.ibb.co/VmjkZZ5/Selection-999-365.png\" alt=\"Selection-999-365\" border=\"0\"></a>\n\ni came to realise that this is what the \"assembling based\" methods are doing(e.g. rfcn, yoloact,solov2)\nsee also: https://arxiv.org/pdf/2101.10913.pdf",
    "1580655": "https://www.youtube.com/watch?v=MVDUnbVXMGM\n\nDeep Learning for Cell Imaging Segmentation - Lecture 20 - MIT ML in Life Sciences (Spring 2021)",
    "1580649": "Self-supervised pretraining for transferable quantitative phase image cell segmentation\nhttps://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/\n\n![https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8547997/bin/boe-12-10-6514-g001.jpg)\n\n<a href=\"https://ibb.co/n3KVcVP\"><img src=\"https://i.ibb.co/ZHbw8w2/Selection-999-363.png\" alt=\"Selection-999-363\" border=\"0\"></a>\n\n<a href=\"https://ibb.co/ZKYDSRc\"><img src=\"https://i.ibb.co/6b1C8cD/boe-12-10-6514-g001.jpg\" alt=\"boe-12-10-6514-g001\" border=\"0\"></a>",
    "1578721": "👍good work",
    "1577965": "https://github.com/juglab/EmbedSeg\nembedding-based Instance Segmentation of Microscopy Images.",
    "1577533": "![https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png](https://github.com/yijingru/ObjGuided-Instance-Segmentation/raw/main/imgs/figure.png)\n\nhttps://github.com/yijingru/ObjGuided-Instance-Segmentation",
    "1577088": "[place holder] \n\n1. how to adapt puzzle-cam for semi-supervised learning\n2. are the semi-supervised learning images related by time? if so can cell tracking be used?\n\nhttps://www.kaggle.com/c/hpa-single-cell-image-classification/discussion/239001 ",
    "1576942": "following to learn ",
    "1576478": "Good job! from the Ventilator Pressure Prediction, i learn many from you, this competition, i will expect your works!",
    "1573897": "I am really looking forward to learning some surprises with you in this game.😄",
    "1571905": "I've really enjoyed your insightful experiment write-ups in ventilator competition, so looking forward to this one!",
    "1571870": "new journey begins. haha~~~",
    "1582675": "",
    "1579678": ""
  }
}