The Complete Blood Count (CBC) Dataset
has been used for automatic identification and counting of blood cells. Download the dataset, unzip and put the Training
, Testing
, and Validation
folder in the working directory.
- Tensorflow-GPU==2.2.0 (tested on both 2.1.0 and 2.2.0)
conda install tensorflow-gpu
- TF-slim==1.1.0
pip install tf-slim==1.1.0
- Weights:
download
the trained weights file for blood cell detection and put theweights
folder in the working directory.
The code was originally written and developed with TensorFlow v1.x
. The new updated version v2.0
included TensorFlow v2.x
support, tested on both TensorFlow v2.1.0
and v2.2.0
. You can download the previous version from here
.
To detect the blood cells, simply run the detect.py
file in the terminal or using an IDE. A step-by-step guideline of how to run the blood cell detection code in your computer is provided in this wiki
.
If you have any trouble running the code and facing any error please feel free to create an issue
or contact me
.
A seven-step guideline of how to train on your own dataset is provided in this wiki
.
The code was developed for the following blood cell detection paper. For a more detailed explanation of the proposed method, please go through the pdf of the paper
. If you use this code or associated dataset, please cite this paper as:
Machine learning approach of automatic identification and counting of blood cells
@article{alam2019machine,
title={Machine learning approach of automatic identification and counting of blood cells},
author={Alam, Mohammad Mahmudul and Islam, Mohammad Tariqul},
journal={Healthcare Technology Letters},
volume={6},
number={4},
pages={103--108},
year={2019},
publisher={IET}
}
In some cases, our model predicts the same platelet twice. To solve this problem we propose a k-nearest neighbor (KNN) and intersection over union (IOU) based verification system where we find the nearest platelet of a selected platelet and calculate their overlap. We are allowing only 10% overlap between two platelets. If the overlap is more than that then it will be a spurious prediction and we will ignore the prediction.
Before Verification | After Verification |
---|---|
We have used our model to detect and count blood cells from high-resolution blood cell smear images. These test images are of the size of 3872 x 2592
way higher than the size of our trained images of 640 x 480
. So, to match the cell size of our trained images we divide those images into grid cells and run prediction in each grid cell and then combine all the prediction results.