Allen Cell Discussion Forum

Using deep learning segmenter to segment whole cells

I’ve been exploring using the deep learning segmenter to segment whole cells that express a membrane-GFP label. It worked much better than I expected considering the segmentation workflow I used to generate training data wasn’t designed for this purpose. However, I’m looking for ways to improve my segmentation result.

Has anyone tried to do something like this before? I noticed in the demo notebook “Bridging the gap between binary image (segmentation) and analysis” that nuclear/cell segmentation workflows are being created. I know they haven’t been released yet, but I was wondering if the developer or anyone else who has tried this has any insights into how to use this tool for whole cell segmentation.

Hi Lynn,

First of all, very sorry for the late reply, due to a big internal deadline coming very soon.

We are working hard to get all the code related to nucleus and cell segmentation ready. It has high priorty on my list.

Right now, here are my thoughts and suggestions:

Internally, we have built a DL model for the segmentation of CAAX (marks plasma membrane). To collect training data for this model, a quick solution is to use a semi-automatic watershed on fiji to quickly get a few results (less than 10 works well for us). Then, take the boundary of the watershed results are the training target (i.e. ground truth). The model trained from these few data worked very well for us (tested on several hundreds of images).

CAAX only helps us get the cell boundaries. To the each cell, boundaries are not enough (may be broken at thin places). We use nuclei segmentation as the seed, and run a seeded watershed.

Let me know if you need more details on any step.

Thanks,
Jianxu

Hi Jianxu,

Thank you for your reply, and no worries about the delay at all, I appreciate you taking the time to respond.

That sounds very similar to what I have been doing, so I’m glad to know I’m on the right track. I am also looking at GFP-CAAX labeled cells. I generated an initial watershed segmentation in python, and then used that to train a DL model for boundary segmentation. The results of the boundary segmentation were good, and I have been able to apply this model to images that were not in the initial training data.

Where I have become stuck is going from the boundary segmentation to the seeding and watershed to label individual cells. Some of my images have nuclei labeled as well, but many of them don’t, so I’ve been trying to find ways to generate seeds using the boundary images alone (which is difficult). I’ve tried a few ways to try to automatically generate seeds (from local maxima of distance transform, for instance) but it’s hard to do so in a way that generalizes to all the images in my data set. It works better if I manually choose the seeds, so maybe I should just do that. Or perhaps I should try the graph partitioning technique mentioned in this paper.

Again, thanks for your reply. I’m new to all this, and so it helps to know that my initial steps are similar to your cell segmentation approach. I will keep trying things to see if I can find a solution.

Best,
Lynn

do you have bright field in your image acquisition setting? if so, you can try our label-free approach to predict nucleus even you don’t have the nucleus channel.

the proposed method could be a good solution if you cannot get reliable seeds. In this situation, the quality of your final cell segmentation will heavily depend on your boundary prediction accuracy. The advantage of using seeds (even using labelfree to predict nucleus) is that the seeds may not be perfect, the boundary may not be perfect, but the two part can complement each other so that final cell segmentation can be very accurate.

hope this is helpful. i will be happy to help, if there are more issues along the road.

thanks,
Jianxu