Awesome
cnn4brca
Using Convolutional Neural Networks (CNN) for Semantic Segmentation of Breast Cancer Lesions (BRCA). Master's thesis documents. Bibliography, experiments and reports.
Most articles in the Bibliography folder were obtained directly from the authors or via agreements with my home institution. Please consider any copyright infringement before using them.
Contact info:
Erick Cobos Tandazo<br> a01184587@itesm.mx
Usage
Data set
-
You can obtain the BCDR database online (Moura et al.). I used the BCDR-DO1 data set, this one has around 70 patients(~300 digital mammograms) with breast masses and their lesion outlines. fileOrganization has some info on how is this images ordered.
-
To obtain the masks (from the outlines provided in the database) you can use createMasks.m. This reads the mammogram info from a couple of files provided in the database: sample bcdr_d01_img.csv and sample bcdr_d01_outlines.csv
Output should look like this:
<img src="database_info/createMask/img_20_30_1_RCC.png" width="250"/> <img src="database_info/createMask/img_20_30_1_RCC_mask.png" width="250"/> -
Use prepareDB to enhance the contrast of the mammograms and downsample them to have a manageable size (2cmx2cm in the mammogram in 128x128).
Output looks like this:
<img src="docs/report/plots/mammogram_resized.png" width="250" align='center'> -
Finally you would need to divide the dataset into training, validation and test patients. You would need to produce a .csv with image and label filenames as this for each set.
Training
- You would need to install Tensorflow
- Run train or train_with_val_split to train networks. These train the network defined in model_v3, a fully convolutional network with 10 layers (900K parameters) that uses dillated convolution and is modelled in a ResNet network. Training is done image by image (no batch, but cost is computed in every pixel of the thousand of pixels) and uses dropout among other things Note: Code was written for tensorflow 1.11.0 so it would need to be modified to make work in tf1.0
Evaluation
- You can use compute_metrics or compute_FROC to compute evaluation metrics or the FROC curve.
You are invited to check the code for more details, I tried to document it nicely.