Browse Source

Delete static/docs/examples/industrial_quality_inspection directory

FlyingQianMM 4 years ago
parent
commit
a19c8b839d

+ 0 - 99
static/docs/examples/industrial_quality_inspection/README.md

@@ -1,99 +0,0 @@
-# 工业质检
-
-本案例面向工业质检场景里的铝材表面缺陷检测,提供了针对GPU端和CPU端两种部署场景下基于PaddleX的解决方案,希望通过梳理优化模型精度和性能的思路能帮助用户更高效地解决实际质检应用中的问题。
-
-## 1. GPU端解决方案
-
-### 1.1 数据集介绍
-
-本案例使用[天池铝材表面缺陷检测初赛](https://tianchi.aliyun.com/competition/entrance/231682/introduction)数据集,共有3005张图片,分别检测擦花、杂色、漏底、不导电、桔皮、喷流、漆泡、起坑、脏点和角位漏底10种缺陷,这10种缺陷的定义和示例可点击文档[天池铝材表面缺陷检测初赛数据集示例](./dataset.md)查看。
-
-将这3005张图片按9:1随机切分成2713张图片的训练集和292张图片的验证集。
-
-### 1.2 精度优化
-
-本小节侧重展示在模型迭代过程中优化精度的思路,在本案例中,有些优化策略获得了精度收益,而有些没有。在其他质检场景中,可根据实际情况尝试这些优化策略。点击文档[精度优化](./accuracy_improvement.md)查看。
-
-### 1.3 性能优化
-
-在完成模型精度优化之后,从以下两个方面对模型进行加速:
-
-#### (1) 减少FPN部分的通道数量
-
-将FPN部分的通道数量由原本的256减少至64,使用方式在定义模型[FasterRCNN](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn)类时设置参数`fpn_num_channels`为64即可,需要重新对模型进行训练。
-
-#### (2) 减少测试阶段的候选框数量
-
-将测试阶段RPN部分做非极大值抑制计算的候选框数量由原本的6000减少至500,将RPN部分做完非极大值抑制后保留的候选框数量由原本的1000减少至300。使用方式在定义模型[FasterRCNN](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn)类时设置参数`test_pre_nms_top_n`为500,`test_post_nms_top_n`为300。
-
-采用Fluid C++预测引擎在Tesla P40上测试模型的推理时间(输入数据拷贝至GPU的时间、计算时间、数据拷贝至CPU的时间),输入大小设置为800x1333,加速前后推理时间如下表所示:
-
-| 模型 | 推理时间 (ms/image)| VOC mAP (%) |
-| -- | -- | -- |
-| baseline | 66.51 | 88.87 |
-| + fpn channel=64 + test proposal=pre/post topk 500/300 | 46.08 | 87.72 |
-
-### 1.4 最终方案
-
-本案例面向GPU端的最终方案是选择二阶段检测模型FasterRCNN,其骨干网络选择加入了可变形卷积(DCN)的ResNet50_vd,训练时使用SSLD蒸馏方案训练得到的ResNet50_vd预训练模型,FPN部分的通道数量设置为64。使用复核过的数据集,训练阶段数据增强策略采用RandomHorizontalFlip、RandomDistort、RandomCrop,并加入背景图片。测试阶段的RPN部分做非极大值抑制计算的候选框数量由原本的6000减少至500、做完非极大值抑制后保留的候选框数量由原本的1000减少至300。模型在验证集上的VOC mAP为87.72%。
-
-在Tesla P40的Linux系统下,对于输入大小是800 x 1333的模型,图像预处理时长为30ms/image,模型的推理时间为46.08ms/image,包括输入数据拷贝至GPU的时间、计算时间、数据拷贝至CPU的时间。
-
-| 模型 | VOC mAP (%) | 推理时间 (ms/image)
-| -- | -- | -- |
-| FasterRCNN-ResNet50_vd_ssld | 81.05 | 48.62 |
-| + dcn | 88.09 | 66.51 |
-| + RandomHorizontalFlip/RandomDistort/RandomCrop | 90.23| 66.51 |
-| + background images | 88.87 | 66.51 |
-| + fpn channel=64 | 87.79 | 48.65 |
-| + test proposal=pre/post topk 500/300 | 87.72 | 46.08 |
-
-具体的训练和部署流程点击文档[GPU端最终解决方案](./gpu_solution.md)进行查看。
-
-## 2. CPU端解决方案
-
-为了实现高效的模型推理,面向CPU端的模型选择精度和效率皆优的单阶段检测模型YOLOv3,骨干网络选择基于PaddleClas中SSLD蒸馏方案训练得到的MobileNetv3_large。训练完成后,对模型做剪裁操作,以提升模型的性能。模型在验证集上的VOC mAP为79.02%。
-
-部署阶段,借助OpenVINO预测引擎完成在Intel(R) Core(TM) i9-9820X CPU @ 3.30GHz Windows系统下高效推理。对于输入大小是608 x 608的模型,图像预处理时长为38.69 ms/image,模型的推理时间为34.50ms/image,
-
-| 模型 | VOC mAP (%) | Inference Speed (ms/image)
-| -- | -- | -- |
-| YOLOv3-MobileNetv3_ssld | 78.52 | 56.71 |
-| pruned YOLOv3-MobileNetv3_ssld | 79.02 | 34.50 |
-
-### 模型训练
-
-[环境前置依赖](./gpu_solution.html#id1)、[下载PaddleX源码](./gpu_solution.html#paddlex)、[下载数据集](./gpu_solution.html#id3)与GPU端是一样的,可点击文档[GPU端最终解决方案](./gpu_solution.md)查看,在此不做赘述。
-
-如果不想再次训练模型,可以直接下载已经训练好的模型完成后面的模型测试和部署推理:
-
-```
-wget https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/models/yolov3_mobilenetv3_large_pruned.tar.gz
-tar xvf yolov3_mobilenetv3_large_pruned.tar.gz
-```
-
-运行以下代码进行模型训练,代码会自动下载数据集,如若事先下载了数据集,需将下载和解压铝材缺陷检测数据集的相关行注释掉。代码中默认使用0,1,2,3,4,5,6,7号GPU训练,可根据实际情况设置卡号并调整`batch_size`和`learning_rate`。
-
-```
-python train_yolov3.py
-```
-
-### 模型剪裁
-
-运行以下代码,分析在不同的精度损失下模型各层的剪裁比例:
-
-```
-python params_analysis.py
-```
-
-设置可允许的精度损失为0.05,对模型进行剪裁,剪裁后需要重新训练模型:
-
-```
-python train_pruned_yolov3.py
-```
-
-[分析预测错误的原因](./gpu_solution.html#id6)、[统计图片级召回率和误检率](./gpu_solution.html#id7)、[模型测试](./gpu_solution.html#id8)这些步骤与GPU端是一样的,可点击文档[GPU端最终解决方案](./gpu_solution.md)查看,在此不做赘述。
-
-### 推理部署
-
-本案例采用C++部署方式,通过OpenVINO将模型部署在Intel(R) Core(TM) i9-9820X CPU @ 3.30GHz的Windows系统下,具体的部署流程请参考文档[PaddleX模型多端安全部署/OpenVINO部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/openvino/index.html)。

+ 0 - 97
static/docs/examples/industrial_quality_inspection/accuracy_improvement.md

@@ -1,97 +0,0 @@
-# 精度优化
-
-本小节侧重展示在模型迭代过程中优化精度的思路,在本案例中,有些优化策略获得了精度收益,而有些没有。在其他质检场景中,可根据实际情况尝试这些优化策略。
-
-## (1) 基线模型选择
-
-相较于单阶段检测模型,二阶段检测模型的精度更高但是速度更慢。考虑到是部署到GPU端,本案例选择二阶段检测模型FasterRCNN作为基线模型,其骨干网络选择ResNet50_vd,并使用基于PaddleClas中SSLD蒸馏方案训练得到的ResNet50_vd预训练模型(ImageNet1k验证集上Top1 Acc为82.39%)。训练完成后,模型在验证集上的精度VOC mAP为73.36%。
-
-## (2) 模型效果分析
-
-使用PaddleX提供的[paddlex.det.coco_error_analysis](https://paddlex.readthedocs.io/zh_CN/develop/apis/visualize.html#paddlex-det-coco-error-analysis)接口对模型在验证集上预测错误的原因进行分析,分析结果以图表的形式展示如下:
-
-| all classes| 擦花 | 杂色 | 漏底 | 不导电 | 桔皮 | 喷流 | 漆泡 | 起坑 | 脏点 | 角位漏底 |
-| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
-| ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/allclasses_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/cahua_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/zase_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/loudi_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/budaodian_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/jupi_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/penliu_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/qipao_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/qikeng_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/zangdian_analysis_example.png) | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/jiaoweiloudi_analysis_example.png) |
-
-分析图表展示了7条Precision-Recall(PR)曲线,每一条曲线表示的Average Precision (AP)比它左边那条高,原因是逐步放宽了评估要求。以擦花类为例,各条PR曲线的评估要求解释如下:
-
-* C75: 在IoU设置为0.75时的PR曲线, AP为0.001。
-* C50: 在IoU设置为0.5时的PR曲线,AP为0.622。C50与C75之间的白色区域面积代表将IoU从0.75放宽至0.5带来的AP增益。
-* Loc: 在IoU设置为0.1时的PR曲线,AP为0.740。Loc与C50之间的蓝色区域面积代表将IoU从0.5放宽至0.1带来的AP增益。蓝色区域面积越大,表示越多的检测框位置不够精准。
-* Sim: 在Loc的基础上,如果检测框与真值框的类别不相同,但两者同属于一个亚类,则不认为该检测框是错误的,在这种评估要求下的PR曲线, AP为0.742。Sim与Loc之间的红色区域面积越大,表示子类间的混淆程度越高。VOC格式的数据集所有的类别都属于同一个亚类。
-* Oth: 在Sim的基础上,如果检测框与真值框的亚类不相同,则不认为该检测框是错误的,在这种评估要求下的PR曲线,AP为0.742。Oth与Sim之间的绿色区域面积越大,表示亚类间的混淆程度越高。VOC格式的数据集中所有的类别都属于同一个亚类,故不存在亚类间的混淆。
-* BG: 在Oth的基础上,背景区域上的检测框不认为是错误的,在这种评估要求下的PR曲线,AP为92.1。BG与Oth之间的紫色区域面积越大,表示背景区域被误检的数量越多。
-* FN: 在BG的基础上,漏检的真值框不认为是错误的,在这种评估要求下的PR曲线,AP为1.00。FN与BG之间的橙色区域面积越大,表示漏检的真值框数量越多。
-
-从分析图表中可以看出,杂色、桔皮、起坑三类检测效果较好,角位漏底存在少许检测框没有达到IoU 0.5的情况,问题较多的是擦花、不导电、喷流、漆泡、脏点。擦花类最严重的问题是误检、位置不精准、漏检,不导电类最严重的问题是漏检、位置不精准,喷流类和漆泡类最严重的问题是位置不精准、误检,脏点类最严重的问题是误检、漏检。为进一步理解造成这些问题的原因,将验证集上的预测结果进行了可视化,然后发现数据集标注存在以下问题:
-
-* 轻微的缺陷不视为缺陷,但轻微的界定不明确,有些轻微的缺陷被标注了,造成误检较多
-* 不导电、漏底、角位漏底外观极其相似,肉眼难以区分,导致这三类极其容易混淆而使得评估时误检或漏检的产生
-* 有些轻微的擦花和脏点被标注了,有些明显的反而没有被标注,造成了这两类误检和漏检情况都较为严重
-* 喷流和漆泡多为连续性的缺陷,一处喷流,其水平线上还会有其他喷流,一个气泡,其水平线上还会有一排气泡。但有时候把这些连续性的缺陷标注成一个目标,有时候又单独地标注不同的部分。导致模型有时候检测单独部分,有时候又检测整体,造成这两类位置不精准、误检较多。
-
-## (3) 数据复核
-
-为了减少原始数据标注的诸多问题对模型优化的影响,需要对数据进行复核。复核准则示例如下:
-
-* 擦花:不明显的擦花不标注,面状擦花以同一个框表示,条状擦花一条擦花以一个框表示
-* 漏底、角位漏底、不导电:三者过于相似,归为一类
-* 桔皮:忽略不是大颗粒状的表面
-* 喷流:明显是一条喷流的就用一个框表示,不是的话用多个框表示
-* 漆泡:不要单独标一个点,一连串点标一个框
-* 脏点:忽略轻微脏点
-
-对数据集复核并重新标注后,将FasterRCNN-ResNet50_vd_ssld重新在训练集上进行训练,模型在验证集上的VOC mAP为81.05%。
-
-## (4) 可变形卷积加入
-
-由于喷流、漆泡的形态不规则,导致这两类的很多预测框位置不精准。为了解决该问题,选择在骨干网络ResNet50_vd中使用可变形卷积(DCN)。重新训练后,模型在验证集上的VOC mAP为88.09%,喷流的VOC AP由57.3%提升至78.7%,漆泡的VOC AP由74.7%提升至96.7%。
-
-## (5) 数据增强选择
-
-在(4)的基础上,选择加入一些数据增强策略来进一步提升模型的精度。本案例选择同时使用[RandomHorizontalFlip](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#randomhorizontalflip)、[RandomDistort](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#randomdistort)、[RandomCrop](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#randomcrop)这三种数据增强方法,重新训练后的模型在验证集上的VOC mAP为90.23%。
-
-除此之外,还可以尝试的数据增强方式有[MultiScaleTraining](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#resizebyshort)、[RandomExpand](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#randomexpand)。本案例使用的铝材表面缺陷检测数据集中,同一个类别的尺度变化不大,使用MultiScaleTraining或者RandomExpand反而使得原始数据分布发生改变。对此,本案例也进行了实验验证,使用RandomHorizontalFlip + RandomDistort + RandomCrop + MultiScaleTraining数据增强方式训练得到的模型在验证集上的VOC mAP为87.15%,使用RandomHorizontalFlip + RandomDistort + RandomCrop + RandomExpand数据增强方式训练得到的模型在验证集上的的VOC mAP为88.56%。
-
-## (6) 背景图片加入
-
-本案例将数据集中提供的背景图片按9:1切分成了1116张、135张两部分,并使用(5)中训练好的模型在135张背景图片上进行测试,发现图片级误检率高达21.5%。为了降低模型的误检率,使用[paddlex.datasets.VOCDetection.add_negative_samples](https://paddlex.readthedocs.io/zh_CN/develop/apis/datasets.html#add-negative-samples)接口将1116张背景图片加入到原本的训练集中,重新训练后图片级误检率降低至4%。为了不让训练被背景图片主导,本案例通过将`train_list.txt`中的文件路径多写了一遍,从而增加有目标图片的占比。
-
-| 模型 | VOC mAP (%) | 有缺陷图片级召回率 | 背景图片级误检率 |
-| -- | -- | -- | -- |
-| FasterRCNN-ResNet50_vd_ssld + DCN + RandomHorizontalFlip + RandomDistort + RandomCrop | 90.23 | 95.5 | 21.5 |
-| FasterRCNN-ResNet50_vd_ssld + DCN + RandomHorizontalFlip + RandomDistort + RandomCrop + 背景图片 | 88.87 | 95.2 | 4 |
-
-【名词解释】
-
-* 图片级别的召回率:只要在有目标的图片上检测出目标(不论框的个数),该图片被认为召回。批量有目标图片中被召回图片所占的比例,即为图片级别的召回率。
-* 图片级别的误检率:只要在无目标的图片上检测出目标(不论框的个数),该图片被认为误检。批量无目标图片中被误检图片所占的比例,即为图片级别的误检率。
-
-## (7) 分类损失函数选择
-
-降低误检率的措施除了(6)中提到的将背景图片加入训练,还可以将RPN部分的分类损失函数选择为`SigmoidFocalLoss`,将更多的anchors加入训练,增加难分样本的在损失函数的比重进而降低误检率。在定义模型[FasterRCNN](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn)类时将参数`rpn_cls_loss`设置为'SigmoidFocalLoss',同时需要调整参数`rpn_focal_loss_alpha`、`rpn_focal_loss_gamma`、`rpn_batch_size_per_im`、`rpn_fg_fraction`的设置。
-
-## (8) 位置回归损失函数选择
-
-RCNN部分的位置回归损失函数除了'SmoothL1Loss'以外,还可以选择'CIoULoss',使用方式在定义模型[FasterRCNN](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn)类时设置参数`rcnn_bbox_loss`即可。在本案例中,选择'CIoULoss'并没有带来精度收益,故还是选择'SmoothL1Loss'。其他质检场景下,也可尝试使用'CIoULoss'。
-
-## (9) 正负样本采样方式选择
-
-当目标物体的区域只占图像的一小部分时,可以考虑采用[LibraRCNN](https://arxiv.org/abs/1904.02701)中提出的IoU-balanced Sampling采样方式来获取更多的难分负样本。使用方式在定义模型[FasterRCNN](https://paddlex.readthedocs.io/zh_CN/develop/apis/models/detection.html#paddlex-det-fasterrcnn)类时将参数`bbox_assigner`设置为'LibraBBoxAssigner'即可。
-
-## (10) 预处理对比度增强
-
-工业界常用灰度相机采集图片,会存在目标与周围背景对比度不明显而无法被检测出的情况。在这种情况下,可以在定义预处理的时候使用[paddlex.det.transforms.CLAHE](https://paddlex.readthedocs.io/zh_CN/develop/apis/transforms/det_transforms.html#clahe)对灰度图像的对比度进行增强。
-
-灰度图:
-
-![](../../../examples/industrial_quality_inspection/image/before_clahe.png)
-
-对比度增加后的灰度图:
-
-![](../../../examples/industrial_quality_inspection/image/after_clahe.png) |
-
-## (11) 样本生成
-
-对于数量较少的类别或者小目标,可以通过把这些目标物体粘贴在背景图片上来生成新的图片和标注文件,并把这些新的样本加入到训练中从而提升模型精度。目前PaddleX提供了实现该功能的接口,详细见[paddlex.det.paste_objects](https://paddlex.readthedocs.io/zh_CN/develop/apis/tools.html#paddlex-det-paste-objects),需要注意的是,前景目标颜色与背景颜色差异较大时生成的新图片才会比较逼真。

+ 0 - 14
static/docs/examples/industrial_quality_inspection/dataset.md

@@ -1,14 +0,0 @@
-# 天池铝材表面缺陷检测初赛数据集示例
-
-| 序号 | 瑕疵名称 | 瑕疵成因 | 瑕疵图片示例 | 图片数量 |
-| -- | -- | -- | -- | -- |
-| 1 | 擦花(擦伤)| 表面处理(喷涂)后有轻微擦到其它的东西,造成痕迹 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/ca_hua_example.png) | 128 |
-| 2 | 杂色 | 喷涂换颜料的时候,装颜料的容器未清洗干净,造成喷涂时有少量其它颜色掺入 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/za_se_example.png) |365 |
-| 3 | 漏底 | 喷粉效果不好,铝材大量底色露出 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/lou_di_example.png) | 538 |
-| 4 | 不导电 | 直接喷不到铝材表面上去 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/bu_dao_dian_example.png) | 390 |
-|5 | 桔皮 | 表面处理后涂层表面粗糙,大颗粒 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/ju_pi_example.png) | 173 |
-| 6 | 喷流| 喷涂时油漆稀从上流下来,有流动痕迹 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/pen_liu_example.png) | 86 |
-| 7 |漆泡 | 喷涂后表面起泡,小而多| ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/qi_pao_example.png) | 82 |
-| 8 | 起坑 | 型材模具问题,做出来的型材一整条都有一条凹下去的部分 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/qi_keng_example.png.png) | 407 |
-| 9 | 脏点 | 表面处理时,有灰尘或一些脏东西未能擦掉,导致涂层有颗粒比较突出 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/zang_dian_example.png) | 261 |
-| 10 | 角位漏底 | 在型材角落出现的露底 | ![](https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/jiao_wei_lou_di_example.png) | 346 |

+ 0 - 116
static/docs/examples/industrial_quality_inspection/gpu_solution.md

@@ -1,116 +0,0 @@
-# GPU端最终解决方案
-
-本案例面向GPU端的最终方案是选择二阶段检测模型FasterRCNN,其骨干网络选择加入了可变形卷积(DCN)的ResNet50_vd,训练时使用SSLD蒸馏方案训练得到的ResNet50_vd预训练模型,FPN部分的通道数量设置为64,训练阶段数据增强策略采用RandomHorizontalFlip、RandomDistort、RandomCrop,并加入背景图片,测试阶段的RPN部分做非极大值抑制计算的候选框数量由原本的6000减少至500、做完非极大值抑制后保留的候选框数量由原本的1000减少至300。
-
-在Tesla P40的Linux系统下,对于输入大小是800 x 1333的模型,图像预处理时长为30ms/image,模型的推理时间为46.08ms/image,包括输入数据拷贝至GPU的时间、计算时间、数据拷贝至CPU的时间。
-
-| 模型 | VOC mAP (%) | 推理时间 (ms/image)
-| -- | -- | -- |
-| FasterRCNN-ResNet50_vd_ssld | 81.05 | 48.62 |
-| + dcn | 88.09 | 66.51 |
-| + RandomHorizontalFlip/RandomDistort/RandomCrop | 90.23| 66.51 |
-| + background images | 88.87 | 66.51 |
-| + fpn channel=64 | 87.79 | 48.65 |
-| + test proposal=pre/post topk 500/300 | 87.72 | 46.08 |
-
-## 前置依赖
-
-* Paddle paddle >= 1.8.0
-* Python >= 3.5
-* PaddleX >= 1.3.0
-
-## 模型训练
-
-### (1) 下载PaddleX源码
-
-```
-git clone https://github.com/PaddlePaddle/PaddleX
-
-cd PaddleX/examples/industrial_quality_inspection
-```
-
-### (2) 下载数据集
-
-因数据集较大,可运行以下代码提前将数据集下载并解压。训练代码中也会自动下载数据集,所以这一步不是必须的。
-
-```
-wget https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/aluminum_inspection.tar.gz
-tar xvf aluminum_inspection.tar.gz
-```
-### (3) 下载预先训练好的模型
-
-如果不想再次训练模型,可以直接下载已经训练好的模型完成后面的模型测试和部署推理:
-
-```
-wget https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/models/faster_rcnn_r50_vd_dcn.tar.gz
-tar xvf faster_rcnn_r50_vd_dcn.tar.gz
-```
-### (4) 训练
-
-运行以下代码进行模型训练,代码会自动下载数据集,如若事先下载了数据集,需将下载和解压铝材缺陷检测数据集的相关行注释掉。代码中默认使用0,1,2,3,4号GPU训练,可根据实际情况设置卡号并调整`batch_size`和`learning_rate`。
-
-```
-python train_rcnn.py
-```
-
-### (5) 分析预测错误的原因
-
-在模型迭代过程中,运行以下代码可完成模型效果的分析并生成分析结果图表:
-
-```
-python error_analysis.py
-```
-
-可参考[性能优化部分的模型效果分析](./accuracy_improvement.html#id3)来理解当前模型预测错误的原因。
-
-运行以下代码,生成可视化真值和预测结果的对比图以进一步理解模型效果,代码中的置信度阈值可根据实际情况进行调整。
-
-```
-python compare.py
-```
-
-![](../../../examples/industrial_quality_inspection/image/compare_budaodian-116.jpg)
-
-左边是可视化真值,右边是可视化预测结果。
-
-### (6) 统计图片级召回率和误检率
-
-模型迭代完成后,计算不同置信度阈值下[图片级召回率](./accuracy_improvement.html#id7)和[图片级误检率](./accuracy_improvement.html#id7),找到符合要求的召回率和误检率,对应的置信度阈值用于后续模型预测阶段。
-
-```
-python cal_tp_fp.py
-```
-
-执行后会生成图表`image-level_tp_fp.png`和文件`tp_fp_list.txt`,示意如下:
-
-图表`image-level_tp_fp.png`:
-
-![](../../../examples/industrial_quality_inspection/image/image-level_tp_fp.png)
-
-文件[tp_fp_list.txt](tp_fp_list.md)
-
-图表`image-level_tp_fp.png`中左边子图,横坐标表示不同置信度阈值下计算得到的图片级召回率,纵坐标表示各图片级召回率对应的图片级误检率。右边子图横坐标表示图片级召回率,纵坐标表示各图片级召回率对应的置信度阈值。从图表中可较为直观地看出当前模型的图片级召回率和误检率的量级,从文件`tp_fp_list.txt`可以查到具体数值,例如在图片级召回率/图片级误检率为[0.9589,0.0074]这一组符合要求,就将对应的置信度阈值0.90选取为后续预测推理的阈值。
-
-### (7) 模型测试
-
-测试集因没有标注文件,这里单独下载测试集图片:
-
-```
-wget https://bj.bcebos.com/paddlex/examples/industrial_quality_inspection/datasets/aluminum_inspection_test.tar.gz
-tar xvf aluminum_inspection_test.tar.gz
-```
-
-加载训练好的模型,使用(5)选取的置信度阈值0.90对验证集图片或者测试集图片进行预测:
-
-```
-python predict.py
-```
-可视化预测结果示例如下:
-
-![](../../../examples/industrial_quality_inspection/image/visualize_budaodian-116.jpg)
-
-## 推理部署
-
-本案例采用C++部署方式将模型部署在Tesla P40的Linux系统下,具体的C++部署流程请参考文档[PaddleX模型多端安全部署/C++部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/server/cpp/index.html)。
-
-对于输入大小是800 x 1333的模型,图像预处理时长为30ms/image。值得一提的是预处理中的Normalize操作比较耗时,因此在设置预处理操作时,可以先进行Resize操作再做Normalize。模型的推理时间为46.08ms/image,包括输入数据拷贝至GPU的时间、计算时间、数据拷贝至CPU的时间。

+ 0 - 102
static/docs/examples/industrial_quality_inspection/tp_fp_list.md

@@ -1,102 +0,0 @@
-| score | recall rate | false-positive rate |
-| -- | -- | -- |
-| 0.000000 | 0.982877 | 0.022222 |
-| 0.010000 | 0.982877 | 0.022222 |
-| 0.020000 | 0.982877 | 0.022222 |
-| 0.030000 | 0.982877 | 0.022222 |
-| 0.040000 | 0.982877 | 0.022222 |
-| 0.050000 | 0.982877 | 0.022222 |
-| 0.060000 | 0.982877 | 0.022222 |
-| 0.070000 | 0.979452 | 0.022222 |
-| 0.080000 | 0.979452 | 0.022222 |
-| 0.090000 | 0.979452 | 0.022222 |
-| 0.100000 | 0.979452 | 0.022222 |
-| 0.110000 | 0.979452 | 0.022222 |
-| 0.120000 | 0.979452 | 0.022222 |
-| 0.130000 | 0.979452 | 0.022222 |
-| 0.140000 | 0.976027 | 0.022222 |
-| 0.150000 | 0.976027 | 0.022222 |
-| 0.160000 | 0.976027 | 0.022222 |
-| 0.170000 | 0.976027 | 0.022222 |
-| 0.180000 | 0.976027 | 0.022222 |
-| 0.190000 | 0.976027 | 0.022222 |
-| 0.200000 | 0.976027 | 0.022222 |
-| 0.210000 | 0.976027 | 0.022222 |
-| 0.220000 | 0.976027 | 0.022222 |
-| 0.230000 | 0.976027 | 0.022222 |
-| 0.240000 | 0.976027 | 0.022222 |
-| 0.250000 | 0.976027 | 0.022222 |
-| 0.260000 | 0.976027 | 0.014815 |
-| 0.270000 | 0.976027 | 0.014815 |
-| 0.280000 | 0.976027 | 0.014815 |
-| 0.290000 | 0.976027 | 0.014815 |
-| 0.300000 | 0.976027 | 0.014815 |
-| 0.310000 | 0.976027 | 0.014815 |
-| 0.320000 | 0.976027 | 0.014815 |
-| 0.330000 | 0.976027 | 0.014815 |
-| 0.340000 | 0.976027 | 0.014815 |
-| 0.350000 | 0.976027 | 0.014815 |
-| 0.360000 | 0.976027 | 0.014815 |
-| 0.370000 | 0.976027 | 0.014815 |
-| 0.380000 | 0.976027 | 0.014815 |
-| 0.390000 | 0.976027 | 0.014815 |
-| 0.400000 | 0.976027 | 0.014815 |
-| 0.410000 | 0.976027 | 0.014815 |
-| 0.420000 | 0.976027 | 0.014815 |
-| 0.430000 | 0.976027 | 0.014815 |
-| 0.440000 | 0.972603 | 0.014815 |
-| 0.450000 | 0.972603 | 0.014815 |
-| 0.460000 | 0.972603 | 0.014815 |
-| 0.470000 | 0.972603 | 0.014815 |
-| 0.480000 | 0.972603 | 0.014815 |
-| 0.490000 | 0.972603 | 0.014815 |
-| 0.500000 | 0.972603 | 0.014815 |
-| 0.510000 | 0.972603 | 0.014815 |
-| 0.520000 | 0.972603 | 0.014815 |
-| 0.530000 | 0.972603 | 0.014815 |
-| 0.540000 | 0.972603 | 0.014815 |
-| 0.550000 | 0.972603 | 0.014815 |
-| 0.560000 | 0.969178 | 0.014815 |
-| 0.570000 | 0.969178 | 0.014815 |
-| 0.580000 | 0.969178 | 0.014815 |
-| 0.590000 | 0.969178 | 0.014815 |
-| 0.600000 | 0.969178 | 0.014815 |
-| 0.610000 | 0.969178 | 0.014815 |
-| 0.620000 | 0.969178 | 0.014815 |
-| 0.630000 | 0.969178 | 0.014815 |
-| 0.640000 | 0.969178 | 0.014815 |
-| 0.650000 | 0.969178 | 0.014815 |
-| 0.660000 | 0.969178 | 0.014815 |
-| 0.670000 | 0.969178 | 0.014815 |
-| 0.680000 | 0.969178 | 0.014815 |
-| 0.690000 | 0.969178 | 0.014815 |
-| 0.700000 | 0.969178 | 0.014815 |
-| 0.710000 | 0.969178 | 0.014815 |
-| 0.720000 | 0.969178 | 0.014815 |
-| 0.730000 | 0.969178 | 0.014815 |
-| 0.740000 | 0.969178 | 0.014815 |
-| 0.750000 | 0.969178 | 0.014815 |
-| 0.760000 | 0.969178 | 0.014815 |
-| 0.770000 | 0.965753 | 0.014815 |
-| 0.780000 | 0.965753 | 0.014815 |
-| 0.790000 | 0.965753 | 0.014815 |
-| 0.800000 | 0.962329 | 0.014815 |
-| 0.810000 | 0.962329 | 0.014815 |
-| 0.820000 | 0.962329 | 0.014815 |
-| 0.830000 | 0.962329 | 0.014815 |
-| 0.840000 | 0.962329 | 0.014815 |
-| 0.850000 | 0.958904 | 0.014815 |
-| 0.860000 | 0.958904 | 0.014815 |
-| 0.870000 | 0.958904 | 0.014815 |
-| 0.880000 | 0.958904 | 0.014815 |
-| 0.890000 | 0.958904 | 0.014815 |
-| 0.900000 | 0.958904 | 0.007407 |
-| 0.910000 | 0.958904 | 0.007407 |
-| 0.920000 | 0.958904 | 0.007407 |
-| 0.930000 | 0.955479 | 0.007407 |
-| 0.940000 | 0.955479 | 0.007407 |
-| 0.950000 | 0.955479 | 0.007407 |
-| 0.960000 | 0.955479 | 0.007407 |
-| 0.970000 | 0.955479 | 0.007407 |
-| 0.980000 | 0.941781 | 0.000000 |
-| 0.990000 | 0.893836 | 0.000000 |