为特定问题选择人工智能模型不会那么难,对吧?对于典型的机器学习任务,比如分类,优秀的老随机森林永远不会让您失望。但是,当你进入深度学习的世界时,同样的任务有这么多不同的模型(它们都以自己的方式处于最先进的状态),这可能会让人不知所措。在我们的例子中,我们从一个简单的问题开始,只检测pdf文档中的复合结构。基本上是一个对象检测任务,所以任何可以在所有页面上快速运行推理并检测复合结构的对象检测模型都可以。
我们开始使用YOLOv5,因为它在检测复合结构方面相当快速且相当准确。由于取得了良好的效果,我们决定扩大问题的范围。现在,我们想要区分“相关结构”、“马库什结构”、“中间体”、“替代品”和“反应”,而不是仅仅检测所有的化合物。
在获得所需的训练数据后,我们继续对YOLOv5进行关于新数据集的培训,希望它能像上次一样好。正如您可能已经猜到的那样,结果并不像预期的那样好。原因是,我们试图区分的班级看起来非常相似。以下是我们培训数据中的一些样本,以说明我的意思。
正如您所看到的,“相关结构”看起来非常类似于“马库什结构”或“中间体”,而“替代品”看起来像任何其他段落。我们的问题不再是一个典型的目标检测问题;它现在是一个细粒度的目标检测问题。
Detectron 2结果
我们必须切换到更精确的模型,以便更好地区分这些类别。事实证明,Detectron2的RCNN速度更快,是个不错的选择。我们在1500个历元(20分钟的训练时间)内达到了92%的准确率。平均精密度与YOLOv5相同。但是,这并不重要,因为模型可以准确地检测到所需的类。
与YOLOv5的比较
那么你应该使用哪种型号呢?
这个问题的答案取决于三个关键因素。
训练数据的大小和准确性
如果您的数据集中的图像数量少于(比方说)150个,那么在大多数情况下,Detectron2将是您的最佳选择。但是,假设您不想在速度上妥协。在这种情况下,只有当您的类具有易于区分的独特功能(例如,椅子和笔记本电脑)时,才能使用YOLOv5。
另一方面,如果你有足够的训练图像,YOLOv5应该是你的选择。YOLOv5和Detectron2在准确性上没有显著差异。然而,YOLOv5会快得多。
模型尺寸
这是相当简单的。与Detectron2相比,YOLOv5的型号要小得多。因此,如果这两个模型在您的数据集上执行类似的操作,那么YOLOv5将是更好的选择。然而,Detectron2在我们的案例中做得更好,所以我们选择了它,尽管它的型号要大得多。
资源使用情况和培训时间
与Detectron2相比,YOLOv5使用的资源较少,部分原因是它的体积较小。如果这两种模型都能给您带来不错的结果,那么您应该选择使用较少资源的模型。
令人惊讶的是,YOLOv5的训练时间比Detectron2长,几乎是我们的两倍。Detectron2使使用不同的超参数进行实验变得更容易,因为您可以非常快速地看到结果。
结论
不难看出,Detectron2更准确,而YOLOv5速度更快,效率更高。
我们使用Detectron2来解决我们的问题,因为它是唯一可以给我们提供合理预测的模型。它甚至预测了在数据集中表示不足的类,而YOLOv5忽略了它们。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/08/04/detectron2%e5%92%8cyolov5%e5%93%aa%e4%b8%aa%e6%9b%b4%e9%80%82%e5%90%88%e6%82%a8%e7%9a%84%e7%94%a8%e4%be%8b%ef%bc%9f/