(a)图像分类 eg:ResNet (判断有或者无)
(b)目标检测 eg:Faster-RCNN (强调物体含义,可识别目标物体的位置和类别 ,返回的是标签+概率)
(c)语义分割 eg:FCN (强调类别含义,能够识别像素的类别,分辨出是前景和背景)
(d)实例分割 eg:Mask-RCNN (对同一类别的不同目标也用不同 颜色来区分, 只关注目标,不关注背景)
(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)
首先通过特征提取网络提取输入特征,得到特定大小的特征图输出。输入图像分成13×13的网格单元,接着如果真实框中某个对象的中心坐标落在某个网格中,那么就由该网格来预测该对象每个对象有固定数量的边界框,YOLO v3中有三个边界框,使用逻辑回归确定用来预测的回归框。
(1) 数据收集:kaggle下载到分类好的血液细胞数据集。
(2) 数据标注:使用 Labelimg 对淋巴细胞进行标注,获取存放数据的 xml 文件。
(3) PaddleDetection框架搭建:在百度服务器上实现。
(4) 数据集导入,生成对应的类别标签及划分训练集测试集验证集。
(5) 修改配置文件,改参数,配置优化器等。
(6) 开始训练模型并评估。
(7) 用训练出的最佳模型去做预测。
1.准备数据集:
1.准备数据集:
分为如下图像和提前标记好的注释框两个文件夹:
其中名字一定要对应
2.标记过程如下
提前下载好labelimg
打开
Open Dir打开图片所在文件夹:
Change Save Dir打开标注文件存放的文件夹:
打开后做标记,结果如下,右边为标签名字:
我用的是百度的深度学习框架如下图:
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.创建好新的项目并放入数据集:
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安装成功如下:
3.解压缩数据集到PaddleDetection的dataset里:
unzip -oq /home/aistudio/data/data115861/淋巴细胞img标注.zip -d PaddleDetection/dataset/linbaxibao
结果如下:
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
结果如下:
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.yml1.打开的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)
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
预测结果如下: