Yolov3目标检测实现血液淋巴细胞识别

一、深度学习在图像领域的几大任务:

1.任务分类:

Yolov3目标检测实现血液淋巴细胞识别_第1张图片

(a)图像分类 eg:ResNet        (判断有或者无)

(b)目标检测 eg:Faster-RCNN        (强调物体含义,可识别目标物体的位置和类别 ,返回的是标签+概率)

(c)语义分割  eg:FCN        (强调类别含义,能够识别像素的类别,分辨出是前景和背景)

(d)实例分割  eg:Mask-RCNN         (对同一类别的不同目标也用不同             颜色来区分,           只关注目标,不关注背景)

2.目标检测的实现:

Yolov3目标检测实现血液淋巴细胞识别_第2张图片

(a)分类网络是基础:

常见的分类网络有: Alex Net、VGG、inceptionv1(Googlenet)、ResNet、WRN、SqueezeNet、 Xception、MobilieNet、ShuffleNet、DenseNet、SENet等等。

(b)目标检测网络可分为:

一阶段(One Stage):速度快        eg:SSD、Yolo 基于anchors直接进行分类以及调整边界框

两阶段(Two Stage):监测更准确 eg:Faster-RCNN

        1)通过专门的模块去生成候选框FPN 寻找前景(需要检测的目标)以及调整边界框(基于生成的anchors)

        2)基于之前生成的候选框进一步分类以及调整边界框(基于proposals)

二、YOLO算法的基本思想是:        

        首先通过特征提取网络提取输入特征,得到特定大小的特征图输出。输入图像分成13×13的网格单元,接着如果真实框中某个对象的中心坐标落在某个网格中,那么就由该网格来预测该对象每个对象有固定数量的边界框,YOLO v3中有三个边界框,使用逻辑回归确定用来预测的回归框。

三、Yolov3网络实现血液淋巴细胞识别:

总体实验步骤如下:

(1) 数据收集:kaggle下载到分类好的血液细胞数据集。

(2) 数据标注:使用 Labelimg 对淋巴细胞进行标注,获取存放数据的 xml 文件。

(3) PaddleDetection框架搭建:在百度服务器上实现。

(4) 数据集导入,生成对应的类别标签及划分训练集测试集验证集。

(5) 修改配置文件,改参数,配置优化器等。

(6) 开始训练模型并评估。

(7) 用训练出的最佳模型去做预测。

1.准备数据集:

 1.准备数据集:

分为如下图像和提前标记好的注释框两个文件夹:

 Yolov3目标检测实现血液淋巴细胞识别_第3张图片Yolov3目标检测实现血液淋巴细胞识别_第4张图片

其中名字一定要对应

2.标记过程如下

提前下载好labelimg

打开

Open Dir打开图片所在文件夹:

Yolov3目标检测实现血液淋巴细胞识别_第5张图片

Change Save Dir打开标注文件存放的文件夹:

Yolov3目标检测实现血液淋巴细胞识别_第6张图片

打开后做标记,结果如下,右边为标签名字:

Yolov3目标检测实现血液淋巴细胞识别_第7张图片

 我用的是百度的深度学习框架如下图:

Yolov3目标检测实现血液淋巴细胞识别_第8张图片

2.PaddleDetection环境搭建及数据集导入:

PaddleDetection安装文档参考:

PaddleDetection/INSTALL_cn.md at release/2.3 · PaddlePaddle/PaddleDetection (github.com)https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/docs/tutorials/INSTALL_cn.md

1.创建好新的项目并放入数据集:

 Yolov3目标检测实现血液淋巴细胞识别_第9张图片需要注意的:

2.加速克隆paddledetection:

git clone https://hub.fastgit.org/PaddlePaddle/PaddleDetection.git


也可以选择使用码云上的托管:

git clone https://gitee.com/paddlepaddle/PaddleDetection
pip install "git+https://hub.fastgit.org/cocodataset/cocoapi.git#subdirectory=PythonAPI"


网址参考:
https://blog.csdn.net/yegeli/article/details/108903013?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163677390716780265434883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163677390716780265434883&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-108903013.pc_search_result_control_group&utm_term=%E5%85%8B%E9%9A%86paddledetection%E6%A1%86%E6%9E%B6%E8%BF%9E%E6%8E%A5%E8%B6%85%E6%97%B6&spm=1018.2226.3001.4187

安装成功如下:

Yolov3目标检测实现血液淋巴细胞识别_第10张图片           Yolov3目标检测实现血液淋巴细胞识别_第11张图片                      

3.解压缩数据集到PaddleDetection的dataset里:

unzip -oq /home/aistudio/data/data115861/淋巴细胞img标注.zip -d PaddleDetection/dataset/linbaxibao

结果如下:

Yolov3目标检测实现血液淋巴细胞识别_第12张图片

 3.准备训练数据:

准备训练数据参考:

PaddleDetection/PrepareDataSet.md at release/2.3 · PaddlePaddle/PaddleDetection (github.com)https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/docs/tutorials/PrepareDataSet.md

1.在终端打开文件:

cd PaddleDetection/dataset/linbaxibao/淋巴细胞img标注/

结果如下:

2.设置类别标签:

echo -e "linbaxibao/linbaxibao" > label_list.txt  # 或者\

把所有图片放入all_image_list.txt中:

ls images/*.jpeg | shuf > all_image_list.txt

生成all_list.txt:

awk -F"/" '{print $2}' all_image_list.txt | awk -F".jpeg" '{print $1}'  | awk -F"\t" '{print "images/"$1".jpeg annotations/"$1".xml"}' > all_list.txt

3.划分训练集验证集测试集:

head -n 88 all_list.txt > test.txt
head -n 176 all_list.txt | tail -n 88 > valid.txt
tail -n 701 all_list.txt > train.txt

结果如下:

Yolov3目标检测实现血液淋巴细胞识别_第13张图片

4.训练Yolov3网络:

训练过程参考:

PaddleDetection/GETTING_STARTED_cn.md at release/2.3 · PaddlePaddle/PaddleDetection (github.com)https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/docs/tutorials/GETTING_STARTED_cn.md

我使用的网络:
yolov3_mobilenet_v1_ssld_270e_voc.yml

1.打开的PaddleDetection路径下:

2.GPU单卡训练:

export CUDA_VISIBLE_DEVICES=0
pip install pycocotools
pip install lap
pip install 

3.训练:

python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml

训练过程如下:

(Mask-RCNN)

Yolov3目标检测实现血液淋巴细胞识别_第14张图片

4.评估:

python -m paddle.distributed.launch --gpus 0 tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml --eval


5.预测:

python tools/infer.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml --infer_img=dataset/linbaxibao/淋巴细胞img标注/images/_0_1106.jpeg --output_dir=dataset/yuce --draw_threshold=0.5 -o weights=output/yolov3_mobilenet_v1_ssld_270e_voc/model_final --use_vdl=Ture

 预测结果如下:

Yolov3目标检测实现血液淋巴细胞识别_第15张图片Yolov3目标检测实现血液淋巴细胞识别_第16张图片

你可能感兴趣的:(目标检测,深度学习,人工智能)