Radiographic Image Analysis
Over the years, AI and Machine Learning has been able to make tremendous impact particularly in the health care domain. Universities and organizations like Nvidia, Microsoft, Intel are working with Medical institutes and healthcare centers to provide open source medical datasets, including image datasets and working on creating AI driven automated solutions in the healthcare domain for the greater good of humanity. The CheXpert dataset, is one such publicly available dataset provided by the Stanford University ML group and it was collected from the chest radiographic examinations from Stanford Hospital. So, in this series of articles, I am going to talk about various concepts around such a radiographic image dataset and how these techniques can actually be applied to provide an AI driven Radiographic image analysis solutions.
Chapters :
- Deep Hybrid Learning for Radiographic Image Analysis
- Model Evaluation Metrics for Deep Learning based Radiographic Image Classification model
25 Responses
hey! thanks for this explanation. Can i get complete code.
If you could provide then it will be very helpful to me.
Thanks
Hello Renu,
I think in the article snippets of code are already mentioned. You would just have to put everything together and run your own analysis. There is a similar work for which the code is well documented. Please feel free to refer this: https://github.com/adib0073/NUMODRIL
Best Regards,
Aditya
Hi,
Thank you for your explanation. I am trying to use your code with my data (OCT images) for regression, I put all code together. I saved the images in the list as you have done (train_image).
when I split the data and call the extract_features function, I think there are missing steps!!
if you could explain that then it will be very helpful for me.
much appreciated.
Thanks.
Hi Sumeia,
Thanks for reaching out. Can you help understand your problem in little more depth. You have mentioned about using this approach your regression, so I am not sure how that will be helpful. But if you can share your code or notebook through email or LinkedIn, I can take a look and try helping you solve the problem that you are facing.
Thanks,
Aditya
Hey, Aditya I am working on multi-disease classification using chest X-ray using NIH dataset but as the dataset is largely imbalanced our model have some issue with accuracy so I was exploring some balancing technique which landed me here. So I just wanted to know how can I apply SMOTE on mutli class dataset whether I should apply on dataset first and create my balanced dataset and then apply to our model. or any other way. It would be really helpful to me.
Inshort how will I balance mutliple classes using smote
Hi, SMOTE can be applied for Multiclass classification problem in the same way as it is applied for Binary classification problem. You can refer the code from this repository of mine: https://github.com/adib0073/NUMODRIL/blob/main/Code%20Snippets/SMOTE.py
In case if the statistical properties of all the classes are quite similar, you may want to try with a different technique like focal loss, which proved to be effective in many use cases.
Hi,
I’m working on a similar problem, but with thermal images instead of X-Ray. Although, I have a major doubt about this approach. You use the images from the training set to train the CNN and then you use the same images to extract features. Is this considered good practice? Also, do you think it’s also possible to combine handcrafted features with the CNN features? Thanks in advance.
Regards,
Akash
Hi Akash,
Thanks for reaching out. To answer your question, initially you would need to train your model on your training dataset and then use the trained model to extract features from your test or validation dataset. For the feature extraction, there can be multiple ways. Either you can cut end FC layers from a conventional DNN model and train only the encoder part. Or you can train a full model, and just cut out the FC layers to get the feature results. You can also refer this code: https://github.com/adib0073/NUMODRIL/blob/main/Code%20Snippets/DHL.py and observe how the feature extraction is done differently, and can be done for training, testing and validation datasets. For your second question, yes it is absolutely possible. Usually the CNN extracted featured are flattened and can be appended with other external features or handcrafted features.
Can I get a complete code of this implementation.
Can I get a complete code for this implementation? and want to know how you have applied SMOTE and other imbalance technique
Hi,
Thanks for reaching out. You can refer the code for a similar but slightly different problem from this repository of mine: https://github.com/adib0073/NUMODRIL/blob/main/Code%20Snippets/SMOTE.py
Hi Aditya,
Are you aware of additional use-cases of this hybrid approach, which is used in production?
Best,
Saar
Hi Saar,
Thanks for the question. In short any problem that can be solved using Deep Learning can also be solved using Deep Hybrid Learning. Using I have seen better results for supervised learning problems. But unsupervised problems like image based search system is also another good example where DHP is a go to approach.
Thanks,
Aditya
Thank you for this very useful article, and I would like to ask you, do you think this method will be effective in the case of multi-class classification ??
and, is it possible to apply a realistic example of a multi-class classification using this method,
Thank you very much…
Yes absolutely! But it might also depend on the dynamics of your dataset. Another approach that worked for me for multi class classification is the Focal Loss approach. You may try that as well.
Hi Aditya,
I understood X_train, y_train but what are xTrain, yTrain…in….. ?
train_features, train_labels = extract_features(xTrain, yTrain, xTrain.shape[0]).
Please explain am just badly confused.
Thanks in advance.
Hi Aditya,
I understood X_train, y_train but what are xTrain, yTrain…in….. ?
train_features, train_labels = extract_features(xTrain, yTrain, xTrain.shape[0]).
Please explain am just badly confused.
Thanks in advance.
Hi Priyanka,
Thanks for your question. So, xTrain/yTrain is equivalent to X_train, its just that I had applied SMOTE to upsample the minority classes and after applying SMOTE I had stored x_train values under new variable name xTrain.
OK…Thank you so much, Aditya.
Hi Aditya,
I came across with another error while extracting features:
ValueError Traceback (most recent call last)
in ()
—-> 1 train_features, train_labels = extract_features(x_train, y_train, x_train.shape[0])
in extract_features(x_train, y_train, sample_count)
23
24 features[i * batch_size : (i + 1) * batch_size] = features_batch
—> 25 labels[i * batch_size : (i + 1) * batch_size] = labels_batch
26 i += 1
27 if i * batch_size >= sample_count:
ValueError: could not broadcast input array from shape (32,1) into shape (32)
I am trying for the last 15 days but could not able to solve it. Kindly help me out. Thanks in advance.
Hi sir thank you very much for the video it was very help full and the explanation was very good…
sir can u suggest me any latest de-noising algorithms to de noise medical images like x ray images?
Hi Ashwini,
Thank you for your question. For image de-noising I did come across certain encoder decoder based architectures and certain unsupervised and semi supervised methods used for denoising.
Dear Aditya Sir,
i am doing text classification on tweeter data. i am very new to research. Now I am applying a deep hybrid model to text classification.
Could be please share your email id so that I will communicate my problem which help me
Thanks for reaching out. Please feel free to connect with me through any means mentioned here: https://aditya-bhattacharya.net/contact-me/
Wow, awesome blog layout! How long have you been blogging for?
you make blogging look easy. The overall look of your website is fantastic,
as well as the content!