项目作者: MahmudulAlam

项目描述 :
A machine learning approach of automatic identification and counting of all types of blood cells: RBCs, WBCs, and Platelets with K-nearest neighbor (KNN) and intersection over union (IOU) based verification.
高级语言: Python
项目地址: git://github.com/MahmudulAlam/Automatic-Identification-and-Counting-of-Blood-Cells.git
创建时间: 2018-08-25T10:47:48Z
项目社区:https://github.com/MahmudulAlam/Automatic-Identification-and-Counting-of-Blood-Cells

开源协议:GNU General Public License v3.0

下载


Automatic Identification and Counting of Blood Cells

GitHub stars
GitHub forks
GitHub issues
Version
GitHub license

Dataset

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 Validationfolders in the working directory.

Requirements

requirements
requirements

  • 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 the weights folder in the working directory.

Download
Download

Getting Started

  1. Build the cython extension in place
    python setup.py build_ext --inplace
  2. Run detect.py
    python detect.py

Update

The darkflow.cython_utils.cy_yolo_findboxes problem has been fixed. Make sure to build the cython extension in place before running the code.

Paper

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
.

How to Run the Code :runner:

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.

How to Train on Your Dataset :bullettrain_side:

A seven-step guideline of how to train on your own dataset is provided in
this wiki
.

Paper

Paper Paper

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

  1. @article{alam2019machine,
  2. title={Machine learning approach of automatic identification and counting of blood cells},
  3. author={Alam, Mohammad Mahmudul and Islam, Mohammad Tariqul},
  4. journal={Healthcare Technology Letters},
  5. volume={6},
  6. number={4},
  7. pages={103--108},
  8. year={2019},
  9. publisher={IET}
  10. }

Blood Cell Detection Output



KNN and IOU Based Verification

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

Prediction on High-Resolution Image (HRI)

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.

Dividing Image into Grid/Patch



Combined Output