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
folders in the working directory.
- Tensorflow-GPU==2.2.0 (tested on 2.1.0, 2.2.0, and 2.3.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.
- Build the cython extension in place
python setup.py build_ext --inplace
- Run detect.py
python detect.py
The darkflow.cython_utils.cy_yolo_findboxes
problem has been fixed. Make sure to build the cython extension in place before running the code.
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 use 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 errors 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 a 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.