Press "Enter" to skip to content

利用闪电和冰视探测撞击云图

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

深度学习

 

目标检测是一项计算机视觉任务,旨在对场景或图像中的单个目标进行检测和分类。目标检测有多种模型体系结构,但最常用的两种是区域建议(如快速RCNN)和单次检测(如SSD、YOLO)。

 

Lightning Flash团队最近发布了一个与IceVision对象检测库的新的令人兴奋的集成,支持数十个新的最先进的主干,这些主干可以进行微调,只需几行代码就可以进行推理。 Lightning Flash IceVision

 

我们参加了Kaggle:COVID19检测/分类挑战赛,展示了新的集成,它展示了来自6000多名患者的现实和具有挑战性的CT扫描数据集。 Kaggle: COVID19 detection/classification

 

使用Lightning Flash⚡️检查我们的kaggle内核-COVID检测 COVID detection with Lightning Flash ⚡️

 

COVID检测挑战赛

 

最近的Kaggle:COVID19检测/分类旨在促进医疗筛查,并最终帮助医学专家/医生做出诊断。挑战在于图像分类/目标检测的混合任务。首先,您需要确定给定的CT扫描是否有四种异常中的一种,然后提供一组边界框来指示异常存在的位置,以证明诊断是合理的。 Kaggle: COVID19 detection/classification abnormalities abnormalities

 

虽然该任务被描述为检测和分类的混合任务,但是它也可以被建模为传统的目标检测问题,其中图像类别是由检测到的异常的大多数类别的集合来确定的。 abnormalities

一项研究代表了一名独特的匿名患者,他只进行了一次计算机断层扫描(CT)。单个DICOM图像应代表每次扫描。重要的是要注意,一些带注释的图像被意外地贴上了不完整的标签。这些图像和它们的注释后来被复制和修复,正如本帖子中所讨论的那样。作为挑战的一部分,在训练之前,需要从数据集中过滤出不完整的注释和重复的图像。 Computed Tomography (CT) scan discussed

 

注释存储在两个单独的CSV表中。第一个表包含表示每个图像的异常类别的一次性编码,第二个表包含图像中的所有边界框(如果有的话)的列表。

 

加载带有注释的DICOM图像

 

CT扫描在DICOM文件中提供,包括带有一些元数据的标题和压缩的图像位图。 DICOM

 

要加载图像数据,我们使用pydicom包,请参阅以下示例代码如何加载: pydicom sample code how to do it:

 

加载图像后,我们按研究ID合并了两个注释表。上面的代码显示了几个示例,扫描每个类并绘制边界框(如果它们在元数据中可用):

不出所料,负片扫描中没有边界框。更有趣的是,大多数阳性扫描在每次扫描中都包含一个以上的检测。

 

关于检测与标记关系的补充观察

 

让我们从计数带注释的边界框的角度来看一下数据集。正如你可以从每个班级的样本中看到的那样,有一些阳性病例没有检测到任何冠状病毒。

 

下图显示了每个给定类的每个图像中有多少个边界框。最终,此观察结果可用于最终的聚合启发式。

下面的饼图显示了带注释的异常在不同研究中的分布。正如预期的那样,没有包含边界框注释的负面研究。

然而,5%的包含异常的图像缺少边界框注释。这意味着,虽然我们可以使用对象检测来估计给定的图像类别,但这些噪声图像将使使用这种方法对任务进行完美建模具有挑战性,这解释了为什幺许多人使用混合图像分类/对象检测方法。

 

带EfficientDet的闪存基准

 

Flash是一个人工智能工厂,用于快速原型、基线、微调和深度学习,以解决商业和科学问题。它建立在强大的火炬闪电库之上,以便于大规模训练。 Flash Pytorch Lightning

 

在Flash对象检测中,使用来自模型架构/组合的两个关键参数Backbone和Head来初始化模型:

在目标检测模型中,使用诸如ResNet50、EffieientNet等骨干预训练分类网络进行特征提取。
头部定义诸如FASTER-RCNN、RetinaNet等对象检测器的体系结构。

让我们看看EfficientDet Head的模式,以便使用EfficientNet主干更好地理解这些论点。 EfficientNet

使用Flash,我们只需要几行代码就可以对竞争数据集上的EfficientDet等最先进的方法进行微调。您只需将Kagle对象检测标签转换为COCO格式,设置模型和训练参数,然后启动Training… EfficientDet

 

1.将数据集转换为COCO格式

 

在实践中使用完美注释的情况非常少见,而且通常只在标准/基准数据集中出现。IceVision和Flash集成目前使用的是COCO数据集格式。COCO格式由一个包含原始图像的文件夹和一个包含以下元数据的JSON批注文件组成: COCO dataset format.

 

在CoCo中,边框由图像中右上角的坐标以及边框的宽度和高度组成。我们需要编写一个自定义脚本来完成从竞争注释到COCO格式的转换。这些步骤在提供的笔记本中进行了描述,代码可以在提供的存储库中找到。 notebook repository

 

2.创建DataModule

 

在Flash中,from_coco方法加载在上一步中创建的可可图像和批注文件。我们可以提供abatch_size来充分利用我们的GPU,并提供image_size来为我们的模型调整图像的大小。

3.构建任务

 

要构建对象检测任务,我们选择模型主干。在此示例中,我们使用具有EfficientNet D5主干的最先进的EfficientDet。我们通过实验将学习速率设置为1e-5,我们可以使用超参数搜索来优化此值。

4.创建教练器并微调模型

 

Flash的训练器继承了闪电侠的训练器,使我们能够有效地利用我们所了解和喜爱的所有训练器旗帜。为了进行培训,我们使用了方法finetune,它采用一个参数策略来配置微调过程。例如,下面的冻结_解冻策略冻结前10个时期的主干,以仅更新头部,然后将训练扩展到整个模型。

使用内置的Tensorboard记录仪,我们可以实时观察训练过程,并看到训练损失是如何减少的。

在训练结束时,我们保存微调后的模型,以便进行推理。

 

5.负荷模型和运行预测

 

现在我们有了一个训练有素的模特。现在是评估我们模型性能的时候了。下面的代码显示了一个简单的用例,说明Flash如何从文件加载预先训练好的模型并对测试数据集进行预测:

你就知道了;在帖子里,你学会了如何

 

敬请关注以下闪电与闪电故事!

 

关于作者

 

Jirka Borovec拥有布拉格CTU的计算机视觉博士学位。他已经在几家IT初创公司和公司从事机器学习和数据科学工作了几年。他喜欢探索有趣的世界问题,并用最先进的技术解决它们,并开发开源项目。 Jirka Borovec

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注