我正在使用 Yolov3 模型以及从 Kaggle 收到的数据集来训练模型。模型训练已完成,我将新权重添加到备份文件夹中。我运行了我训练过的一种水果进行测试,但没有发生对象检测。同一图像显示为 Prediction.jpg。训练看起来不错,但我不明白为什么它不能检测物体。请帮助我。
火车总站代码:
./darknet detector train /Users/melisabagcivan/darknet/data/obj.data /Users/melisabagcivan/darknet/cfg/yolov3.cfg /Users/melisabagcivan/Desktop/Projects/Bitirmeprojesi/yolov3.weights
测试终端代码:
./darknet detector test /Users/melisabagcivan/darknet/data/obj.data /Users/melisabagcivan/darknet/cfg/yolov3.cfg /Users/melisabagcivan/darknet/backup/yolov3_final.weights -thresh 0.25 -out predictions.jpg
我设置并编辑了 obj.data 和 obj.names 以及 yolov3.cfg 文件。
我有3门课:苹果、香蕉和橙子。我已经根据3个类正确设置了cfg文件中的filter和class值等值。
cfg file
[net]
# Testing
batch=64
subdivisions=1
# Training
subdivisions=16
width= 608
height=608
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=0.3
learning_rate=0.001
burn_in=1000
max_batches = 6000 # classnum * 2000
policy=steps
steps=3600,4800 # max_batches num %80, %90
scales=.1,.1
数据集中除了.jpg图片外,还有yolo格式的同名.txt文件。
包含所有图像路径的train.txt和test.txt文件也已准备就绪。
当我在终端中运行测试命令时,它可以工作,但图片看起来相同,没有检测对象的边界框。我确定我已经安装了 Opencv。我正在使用 macOS。为什么它没有检测到它?请有人帮忙。我通过 make clean 多次清理暗网,并通过 make opencv = 1 运行它,但结果没有改变。
[yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
Total BFLOPS 137.613
avg_outputs = 1052318
Loading weights from /Users/melisabagcivan/darknet/backup/yolov3_final.weights...
seen 64, trained: 32013 K-images (500 Kilo-batches_64)
Done! Loaded 107 layers from weights-file
Enter Image Path: /Users/melisabagcivan/Desktop/Projects/yoloOD/dataset/test/38_Orange.jpg
Detection layer: 82 - type = 28
Detection layer: 94 - type = 28
Detection layer: 106 - type = 28
/Users/melisabagcivan/Desktop/Projects/yoloOD/dataset/test/38_Orange.jpg: Predicted in 6738.129000 milli-seconds.
我尝试了很多图像,但它没有在任何图像中绘制方框。我不明白是它无法检测到还是我在测试时犯了错误。
需要注意的几点:
我怀疑您正在使用旧的废弃存储库,仅基于您在示例命令中给出的路径。请注意,AlexeyAB 存储库已于 2021 年 7 月被放弃。https://www.ccoderun.ca/programming/yolo_faq/#which_repos_to_use_and_avoid
人们应该使用的新 Darknet/YOLO 存储库是由 Hank.ai 赞助的。所有新的开发都在那里进行。请参阅此处:https://github.com/hank-ai/darknet#table-of-contents
看起来您的训练图像包含水果的裁剪图像,是吗?第一张苹果图像几乎占据了图像的 100%……如果你用它来训练,你就是在告诉 Darknet/YOLO 你想要检测的物体必须占据图像的 100%。因此,如果您随后传入包含苹果的图像,它将无法检测到任何内容。有关详细信息,请参阅此处:https://www.ccoderun.ca/programming/yolo_faq/#crop_training_images
您的训练命令不是推荐的。请参阅 Darknet/YOLO 常见问题解答,其中对此进行了解释:https://www.ccoderun.ca/programming/yolo_faq/#training_command
您还应该发布您的chart.png 文件的副本。也许还可以查看其他图表_*.png 文件,看看所有 3 个班级是否都以相同的方式进行训练。但至少,请编辑此问题并添加您的 Chart.png 文件,然后再尝试找出无法检测到某些内容的原因。
我强烈建议您在训练之前下载并运行 DarkMark 来测试您的注释。我无法开始计算这些年来解决了多少问题。它是专门为发现和预防问题而编写的。 (免责声明:我是作者。)https://www.ccoderun.ca/programming/yolo_faq/#what_software_is_used