Hi! I am quite null at docker, and I would really appreciate some help here. I undertstand that I can pull your images and run them, and also that I need to push my own for submitting, but I am embarrasingly unable to read the actual code inside your image, or the dockerfile used to create it. Is there some way to get those files from dockerhub?
In some other challenges participants typically get a github repo with the actual files required to build a docker submission, e.g.:
https://github.com/ImranNust/AortaSeg24/tree/main/Docker_Preparation_For_Submission
Would that be an option here? It would be extremely helpful, at least for me. Thanks!
Adrian
Created by agaldran Hi Adrian,
We will contact the team member if there are any issues with the submitted Docker during the testing phase. Thank you for your suggestions and for thoroughly reviewing the demo Docker, which helps us improve the quality of future demos!
In our testing data, we have masks for each patch/slide, similar to the validation set. The purpose of reading the mask in the validation Docker demo is to directly calculate the performance during the validation phase, as we have provided both images and masks. Therefore, you may or may not retain the code for reading the mask and keep the evaluation metrics calculation function in your Docker. Please ensure that your Docker also stores the predictions from your model. We will double-check the performance based on your saved predictions, regardless of whether your Docker provides any metrics. Both TIFF and PNG formats are acceptable, as long as we can read the mask and use the evaluation function from the validation Docker demo to calculate the performances.
Please let us know if you have any further questions!
Best regards,
KPIs Organization Committee
Hello,
In the end I decided to lose some sleep and study your code :-)
I have adopted your approach of splitting the WSI into patches and storing them before making patch-wise predictions and assembling them. My container seems to be working fine, but I noticed a couple of differences between your docker example and what you indicated in the instructions and elsewhere in the forum. Namely:
1) The expected input data structure seems to be input_dir/disease_model/img/wsi_name.tiff, otherwise your parsing logic does not find the images. I left it like this, removing the mask/ directories and any expectation to find them in the code.
2) The result in your docker example gets written into a folder called output_dir/disease_model/pred/wsi_name.png, together with a version of the original slide in png, both at 20x. You mentioned that this should be stored as tiff, but I guess png does just fine, so I left it like that.
The rest is not very important. I hope all this sounds right, I'll push this container to docker hub now and look into task 1 tomorrow morning then.
Thanks!
Adrian My other option right now would be to replicate what you do in your code, extract a patch decomposition and write it to disk. In this case, I was wondering, can I assume that you will run the container with access to images *and* masks? That would simplify things, as I could touch your code only in the part of predicting on patches... Otherwise, I would need to remove everything related to masks and computing performance, which looks like a headache. Hello!
Thanks, I have one last question. I have coded up a container to segment whole slide images, but in my laptop there is no way it is going to be able to load a gigantic tiff file wihtout dying. I realize that the specs of the computer where the container is going to be run are much better than what I have here, but still I am worried that I cannot be sure the container will finish processing there.
I have a version that can downsample the slide before segmenting, and then upsample the result, which might work but will probably be worse. I was wondering, if I push my container now to docker hub and give you instructions to run it via the google form you have made available, is there any chance you could give me an indication about whether the thing works on your side? So that I can replace it by the downsampling version before the deadline?
Cheers,
Adrian Hi Adrian,
You are totally fine, and we are more than happy to help. The **get_X20_wsi** function is used to get PNG/numpy array images from SVS/SCN data formats. The **get_X20_patch_preds** function tiles the WSIs into patches (you can store them in /Data/KPIs/data_val_patch_20X if you want, or not) and loads them into the model to receive patch-wise predictions (you can store these in /Data/KPIs/validation_slide_20X_patchoutput if you want, or not), since we assume all the DL segmentation models are trained with patch-level data in task 1. Finally, the **get_X20_wsi_preds** function aggregates all the patch-level predictions back to WSIs using the patches' coordinates to provide the final WSI prediction mask.
Additionally, we have uploaded the source code for our Docker demo for task #1. Please let us know if you have any questions!
Best,
KPIs Organization Committee
Hello!
Thanks that is very helpful, I am starting to dig into your code now. One thing I do not understand is: this example you have shared is for submitting for task 2. I was assuming that the input would be a WSI and the output a png binary image with the segmentation, at a resolution matching the 40x magnification level of the slide. I mean, a tiff pyramid image in, a big png image out.
However, I am a bit confused with your docker container. It appears to require me to mount two directories for dealing with patches, `/Data/KPIs/data_val_patch_20X` and `/Data/KPIs/validation_slide_20X_patchoutput`, and there are three boolean flags `get_X20_wsi`, `get_X20_patch_preds`, and `get_X20_wsi_preds`, which change the behavior of the container substantially, yet not much explanation is provided about all that's happening here.
Sorry, it's probably my fault, but I am quite confused, may you please add some context or some further explanation about all this? Thanks!!
Adrian Hi Adrian,
Thank you for your suggestion! We have updated our GitHub to include step-by-step instructions for Docker preparation. We have also uploaded the source code for our Docker demo. Please let us know if you need any assistance.
Best,
KPIs organization committee