├── .gitignore ├── ADL_Present_Final.pdf ├── NB1_Data_Cleaning.ipynb ├── NB2_Modeling.ipynb ├── README.md ├── photo ├── 075.png ├── 091.png ├── 096.png └── model.png └── result ├── 075_actual.npy ├── 075_prediction.npy ├── 091_actual.npy ├── 091_prediction.npy ├── 096_actual.npy └── 096_prediction.npy /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | *.ipynb 4 | -------------------------------------------------------------------------------- /ADL_Present_Final.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/ADL_Present_Final.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Detecting Cancer Metastases on Gigapixel Pathology Images 2 | ============ 3 | 4 | > **Columbia University Applied Deep Learning Course Project (Fall 2019)** 5 | Author: Yingxiang Chen 6 | Columbia Uni: yc3526 7 | Video Demo: https://youtu.be/h6wJMuvgd4M 8 | 9 | Objective 10 | ------------ 11 | Current Situation: 12 | 13 | - Microscopic examination of lymph nodes is crucial in breast cancer staging 14 | - Currently, the manual process requires highly skilled pathologists 15 | - The process is fairly time-consuming and error-prone, particularly for lymph nodes with either no or small tumors 16 | 17 | So I want to follow the strategy in the [paper](https://arxiv.org/pdf/1703.02442.pdf) and utilize the deep learning models & techniques to relieve the workload of physicians by creating a workflow to detect and locate tumor pixels in the images and offer automatic second opinions. 18 | 19 | Dataset 20 | ------------ 21 | - Raw Data: 21 Gigapixel Pathology Images, each has a tumor slide and a corresponding mask from [The CAMELYON16 challenge](https://camelyon16.grand-challenge.org/Data/). 22 | - Trainset: 8000 (4000 each at two different zoom levels) image patches sampled from 16 Gigapixel Pathology Images. 23 | - Validation set: 1600 (800 each at two different zoom levels) image patches sampled from 2 Gigapixel Pathology Images. 24 | - Test set: 3 Gigapixel Pathology Images. 25 | 26 | Image augmentation 27 | ------------ 28 | 29 | Adopt similar augmentation strategies discussed in the [paper](https://arxiv.org/pdf/1703.02442.pdf). 30 | - Use Keras ImageDataGenerator to augment data 31 | - Horizontal_flip 32 | - Vertical_flip 33 | - Rescale 34 | - Width_shift 35 | - Height_shift 36 | - Rotation 37 | 38 | - Use TensorFlow image random function to augment data 39 | - Random brightness 40 | - Random saturation 41 | - Random hue 42 | - Random contrast 43 | 44 | Model 45 | ------------ 46 | - Transfer Learning: Used two pre-trained inception v3 models on Imagenet to speed up the training process. 47 | - Global Pooling: Applied GlobalAveragePooling layer after the inception model to significantly reduce parameters. 48 | 49 | ![img](./photo/model.png) 50 | 51 | Result 52 | ------------ 53 | - The result on slide 075 54 | 55 | ![img](./photo/075.png) 56 | 57 | - THe result on slide 091 58 | 59 | ![img](./photo/091.png) 60 | 61 | - The result on slide 096 62 | 63 | ![img](./photo/096.png) 64 | 65 | 66 | Final Deliverable 67 | ------------ 68 | 69 | - Notebook 1 - Data Sampling 70 | - [Jupyter Notebook](./NB1_Data_Cleaning.ipynb) 71 | - [Colab Version](https://colab.research.google.com/github/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/blob/master/NB1_Data_Cleaning.ipynb) 72 | 73 | - Notebook 2 - Data Modeling & Evaluation 74 | - [Jupyter Notebook](./NB2_Modeling.ipynb) 75 | - [Colab Version](https://colab.research.google.com/github/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/blob/master/NB2_Modeling.ipynb) 76 | 77 | - Final Model 78 | - [Shared in Google drive](https://drive.google.com/file/d/1kt5kM_ZrFY7a_xUAha1VWU6nqpfjHUrv/view?usp=sharing) 79 | - [Shared in Google storage](https://storage.cloud.google.com/adl-project-yc3526/weights-12-0.94.hdf5) 80 | 81 | - Project Introduction & Video Demo 82 | - [Pdf version](./ADL_Present_Final.pdf) 83 | - [Youtube Video Demo](https://youtu.be/h6wJMuvgd4M) -------------------------------------------------------------------------------- /photo/075.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/photo/075.png -------------------------------------------------------------------------------- /photo/091.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/photo/091.png -------------------------------------------------------------------------------- /photo/096.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/photo/096.png -------------------------------------------------------------------------------- /photo/model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/photo/model.png -------------------------------------------------------------------------------- /result/075_actual.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/075_actual.npy -------------------------------------------------------------------------------- /result/075_prediction.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/075_prediction.npy -------------------------------------------------------------------------------- /result/091_actual.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/091_actual.npy -------------------------------------------------------------------------------- /result/091_prediction.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/091_prediction.npy -------------------------------------------------------------------------------- /result/096_actual.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/096_actual.npy -------------------------------------------------------------------------------- /result/096_prediction.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YC-Coder-Chen/Detecting-Cancer-on-Gigapixel-Images/61550e82becd8dc4f6b2459034f1b460ba520e7d/result/096_prediction.npy --------------------------------------------------------------------------------