CNN-CELL-COUNTING
- This is a well-structured Machine Learning microservice enables RESTful API.
- Finished as my Master Degree's Research project under Dr.Andrey Kan and Dr. Vinh Nguyen's supervision in 2016.
- Uses to count the number of cells in a medical image based on CNN & other algorithms.
- Relevant dissertation and demo slides can be viewed in
document
folder. - Structure used for building in this case is flask.
- Any questions please contact Jizhizi Li [jizhizili@gmail.com]
- Relevant docker repository is here
How to Setup
Step 1: Create a new conda virtual env. - conda create -n $name python=3.6
Step 2: Go into virtual env. - source activate $name
Step 3: Install all the required packages - pip install -r requirements
Step 4: Install matplotlib seperately - conda install matplotlib
Step 5: Deactivate the env - source deactivate $name
How to Run App
Step 1: Run the virtual env Source activate $name
Step 2: Run python run.py
to start
Routes
-
POST
/print_coordinate
:{ "num":3 }
Give a specific number of image you want to process, get the well with coordinate printed in save folder.
-
POST
/plot_data
:{ "plot_name":"train_plot" }
Give a pkl name, plots data and label on image.
-
POST
/generate_dataset
:{ "cell_size": 5, "crop_length": 50, "crop_width": 50, "crops_number_per_image": 60, "images_range": [ 1, 3 ], "save_name": "train" }
Pass some parameters to generate a balanced labelled dataset used for training and testing.
-
POST
/linear_model
:{ "test": { "choice": 1, "data_set": "test" }, "train": { "choice": 1, "data_set": "train" } }
Pass some parameters to train linear model on training set and test on testing set. Relevant logs and figs will be generated.
-
POST
/logistic_model
:{ "test": { "choice": 1, "data_set": "test" }, "train": { "choice": 2, "data_set": "train" } }
Pass some parameters to train logistic model on training set and test on testing set. Relevant logs and figs will be generated.
-
POST
/cnn_model/train
:{ "cell_number": 16, "choice": "linear_count", "height": 50, "learning_rate": 0.0001, "number": 1000, "patience": 5000, "train_set_file": "train", "width": 50 }
Pass some parameters to train cnn model on training set. Other parameters include
patience
andlearning_rate
can also be modified to increase training efficiency and model performance. Logging will be displayed in folder~/static/models/cnn_model
. -
POST
/cnn_model/test
:{ "test_set_file": "test", "params_path": "linear_count_params", "choice": "linear_count" }
Pass some parameters to test cnn model on testing.
params_path
stands for path of params,choice
stands for which final layer and output we are using. Available choice arelinear_count/logistic_count/logistic_zeroOne
. Logging will be displayed in folder~/static/models/cnn_model
.
Some examples
- Well image
- Well image with coordinate print
- Train/test data and label plotted
Dissertation and Slides
Note
The data used in this project is from the publication below, anyone wants to use the data please cite this paper.
Kan, A., Chakravorty, R., Bailey, J., Leckie, C., Markham, J., & Dowling, M.R. (2011). Automated and semi‐automated cell tracking: addressing portability challenges. Journal of microscopy, 244(2), 194-213.