为什么YOLO无法检测图像中的所有对象?

我正在尝试使用AlexeyAB的darknet来检测图像中的对象。但是它只能检测到2到3个对象。它无法检测到小对象(例如帽子)。我使用的是以下命令:

./darknet detector test ./cfg/coco.data ./cfg/yolov3.cfg /weight_path/ /image_path/

我该怎么办?


回答:

根据AlexeyAB页面,对于小对象,你可以这样做:

对于训练小对象(图像调整到416×416后,小于16×16的对象) – 将layers设置为-1, 11,而不是https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L720,并将stride设置为4,而不是https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L717

对于训练小对象和大对象,你可以使用修改后的模型:

此外,训练完成后,在检测阶段,你可以执行以下操作:

通过在你的.cfg文件中设置(height=608和width=608)或(height=832和width=832)或(任何32的倍数的值)来增加网络分辨率 – 这会提高精度,并使检测小对象成为可能:链接

  • 无需再次训练网络,只需使用已经为416×416分辨率训练好的.weights文件

  • 但为了获得更高的精度,你应该以更高的分辨率608×608或832×832进行训练,注意:如果出现内存不足错误,
    则在.cfg文件中应增加subdivisions=16, 32或64:链接

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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