计算机视觉模型训练指南

计算机视觉技术正在革新医疗影像领域。例如,谷歌在2020年初发布的研究结果表明,医生能够为每十名女性提供更准确的乳房X光检查诊断(假阴性减少了9.7%)。本指南将引导如何使用TensorFlow对象检测API来训练一个MobileNet SSDv2模型,以识别自定义数据集中的对象。

如果想要利用现有的架构来训练一个模型识别自定义对象,需要做一些工作。本指南将带了解如何使用TensorFlow 1.5对象检测API来训练一个MobileNet SSDv2模型。Roboflow可以处理图像、标注、TFRecord文件和标签映射的生成,只需要更改两行代码即可基于MobileNetSSDv2架构训练TensorFlow对象检测器。

示例数据集是364张细胞群图像和4888个标签,用于识别红细胞、白细胞和血小板。这个数据集最初由comicad和akshaymaba开源,并可在Roboflow公共数据集上找到。幸运的是,这个数据集已经预先标注好了,所以可以直接开始准备图像和标注。

对于自定义数据集,考虑从谷歌图片搜索中自动收集图像,并使用免费的LabelImg工具进行标注。准备图像进行对象检测包括但不限于:验证标注是否正确(例如,没有标注超出图像框架);确保图像的EXIF方向正确(即图像在磁盘上的存储方式与在应用程序中查看它们的方式不同);调整图像大小并更新图像标注以匹配新调整大小的图像;检查数据集的健康状况,如类别平衡、图像大小和纵横比,并确定这些可能如何影响想要执行的预处理和增强;进行各种可能提高模型性能的颜色校正,如灰度和对比度调整。

类似于表格数据,清理和增强图像数据可以比模型架构的变化更提高最终模型性能。Roboflow Organize专门为此设计,可以无缝解决这些挑战。实际上,Roboflow Organize将需要编写的代码减少了大约一半,同时让访问更多的预处理和增强选项。对于少于1000张图像的数据集,它是免费的。

对于BCCD问题,完整的BCCD显微镜数据集可以在这里找到。(注意:查看下面的内容,了解如何最初使用训练和测试拆分,而不是这个完整数据集。)对于自定义数据集,按照这个简单的逐步指南将图像及其标注上传到Roboflow。

为了TensorFlow能够以训练所需的格式读取图像及其标签,必须生成TFRecords和一个将标签映射到数字的字典(适当地称为标签映射)。坦率地说,这是乏味的,并且依赖于为每个数据集编写冗余代码。Roboflow为生成TFRecords和标签映射。

因为需要一组TFRecords用于训练,另一组用于测试,所以需要在Roboflow上创建一个训练集和一个测试集。方便的是,数据集导出已经配置了适当的数据集拆分,当导出TensorFlowTFRecord或任何可用格式时。访问Roboflow Universe上的BCCD数据集,并点击右上角的“下载”以将其添加到Roboflow账户。导航到BCCD数据集并点击“下载此数据集”。创建此数据集的导出。(可以选择尝试这些预处理或增强步骤。对于第一次尝试,保持设置不变。)

现在,点击“继续”。在下载选项中,确保选择了“TensorFlowTFRecord”。对于下载位置,选择“显示代码片段”。这将允许直接将下载代码复制并粘贴到Colab笔记本中!导出数据集(Roboflow知识库)。很快就会有一个代码片段。(不要公开分享它 - 它包含与特定Roboflow账户相关联的密钥。)对于训练集和测试集重复这些步骤。就这样!已经生成了TFRecords和标签映射。此外,还有能力训练任何预处理/增强步骤并检查数据集的健康状况。

对于自定义数据集,Roboflow将在上传时帮助将其拆分为训练、验证和测试集。阅读入门指南。将训练一个MobileNet Single Shot Detector Version 2。这种特定的架构由谷歌研究,针对轻量级推理进行了优化,使其能够在计算受限的移动和嵌入式设备上表现良好(因此得名!)。要深入了解MobileNet,请参见这篇论文。要了解版本2如何提高准确性,请参见这篇论文。幸运的是,这种架构在TensorFlow对象检测API中免费提供。

将利用谷歌Colab进行免费的GPU计算(最多12小时)。Colab笔记本在这里。这个基于的GitHub仓库在这里。关于这个笔记本有一些事情需要注意:为了运行初始模型,训练步骤的数量被限制在1000。增加这个数字可以改善结果。包含MobileNet的模型配置文件在训练时包括两种类型的数据增强:随机裁剪和随机水平和垂直翻转。模型配置文件的默认批量大小是12,学习率是0.0004。根据训练结果调整这些。笔记本包括一个可选的TensorBoard实现,使能够实时监控模型的训练性能。TensorBoard损失:向下和向右!

对于自定义数据集,需要将自己的TFRecords加载到Colab笔记本中,用于训练和测试集。这些单元格清楚地用注释标记为#训练集 - 替换此链接和#测试集 - 替换此链接。在上面创建导出后生成的Roboflow链接就是放在这里。这个URL可以是任何对象检测数据集,不仅仅是BCCD数据集!

随着训练模型,其拟合存储在一个名为./fine_tuned_model的目录中。笔记本中有步骤来保存这个模型拟合 - 要么本地下载到机器上,要么通过连接到Google Drive并在那里保存模型拟合。保存模型拟合不仅允许以后在生产中使用它,甚至可以加载最近的模型权重,从离开的地方恢复训练!

在这个特定的笔记本中,在保存在GitHub仓库中的test目录中的图像上进行推理。这是克隆到Colab笔记本的GitHub仓库中的一个示例图像(Image_0035.jpg)。甚至发现了血小板!对于仅训练1000步来说还不错!对于自定义数据集,需要将自己的图像上传到位于tensorflow-object-detection/test的test文件夹中。(注意:这与tensorflow-object-detection/data/test不同。)这也在Colab笔记本中描述。

做到了!已经训练了一个对象检测模型到自定义的生物学数据集。现在,在生产中使用这个模型引发了一个问题,即生产环境将是什么。例如,将在移动应用中运行模型,通过远程服务器,甚至在Raspberry Pi上?将如何使用模型决定了保存和转换其格式的最佳方式。

考虑这些资源作为问题的下一步:转换为TFLite(适用于Android和iPhone),转换为CoreML(适用于iPhone应用),转换为在远程服务器上使用,或部署到Raspberry Pi。告诉如何使用Roboflow/对象检测,可以特色项目,并合作撰写博客文章。在社区论坛和应用内聊天中对反馈最为敏感,任何Roboflow用户都可以使用。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485