不可能使KERAS CV对象检测器(Yolov8)执行和超级分析

问题描述 投票:0回答:0
I遵循发布的Keras CV计算机视觉教程(

Https://keras.io/examples/vision/yolov8/ylov8/y)使用Yolo V8检测器带有自定义数据集 问题是,使用KERAS CV中的Yolo V8检测器,地图得分非常低(1-10%)。 在训练和推断期间,我看到非最大抑制作用似乎无法正常工作。 我看到,具有相同置信度得分的同一对象有几个重叠的边界框。 更改NMS设置并不能改善这一点。 要验证我的数据集,我尝试使用Roboflow和Ultrytics库使用我的数据集微调模型,并能够获得约71%-91.4%的地图。数据集大小为586,每个图像的每个类别为4个类别(故意避免类不平衡问题)。

这是我在训练和调整NMS后如何进行推理的一个例子:

model.prediction_decoder = keras_cv.layers.NonMaxSuppression( bounding_box_format=BOUNDING_BOX_FORMAT, from_logits=True, # or False iou_threshold=0.5, # tried adjusting everything here confidence_threshold=0.5, max_detections=10 )

我正在训练期间使用pycococalback(以及其他):

callbacks=[ keras_cv.callbacks.PyCOCOCallback( # COCO metrics (AP/AR @ IOU) val_ds, bounding_box_format=BOUNDING_BOX_FORMAT, ), keras.callbacks.TensorBoard( # training progress visualization log_dir="training_logs" ), keras.callbacks.ModelCheckpoint( filepath="./model/best_model.keras", monitor="val_AP", mode="max", # Save when mAP is maximized save_best_only=True, # Only keep the best model verbose=1, ), keras.callbacks.EarlyStopping( patience=20, # Stop after 25 epochs of no improvement monitor="val_AP", mode="max", # Monitor for maximum mAP verbose=1, restore_best_weights=True, # Restore weights of the best epoch ), # VisualizeDetections(), # visual validation after each epoch ],

示例我如何训练模型:

backbone = keras_cv.models.YOLOV8Backbone.from_preset( "yolo_v8_xs_backbone_coco", load_weights=True ) prediction_decoder = keras_cv.layers.NonMaxSuppression( bounding_box_format=BOUNDING_BOX_FORMAT, from_logits=False, iou_threshold=0.5, confidence_threshold=0.6, max_detections=200 ) model = keras_cv.models.YOLOV8Detector( num_classes=len(CLASS_IDS), bounding_box_format=BOUNDING_BOX_FORMAT, backbone=backbone, fpn_depth=2, prediction_decoder=prediction_decoder, ) initial_learning_rate = 0.001 lr_schedule = keras.optimizers.schedules.CosineDecay( initial_learning_rate, decay_steps=1000, alpha=0.0 ) optimizer = keras.optimizers.Adam(learning_rate=lr_schedule, global_clipnorm = 10.0) model.compile( classification_loss=keras.losses.CategoricalCrossentropy(), box_loss=keras_cv.losses.CIoULoss(bounding_box_format=BOUNDING_BOX_FORMAT), optimizer=optimizer, )

我尝试过:

检查以确保框架框和标签正确。

使用不同的优化器,类/损失功能等
没有增强。
通过roboflow,keras/tensorflow或两者进行增强。

具有和没有预先训练的重量的不同骨干。

不同的nms设置(信心,from_logits和iou)。
    我预计KERAS CV的Yolov8检测器的性能能够在某种程度上执行超级实施。 由于我的增强管道可能不如超级术,但这似乎是很大的,但这似乎是实际的,但这是一个巨大的差距。
  • 我无法弄清楚我似乎在忽略了什么!如何缩小这个巨大的差距?
  • 自从他们开始将所有内容从keras_cv转移到keras_hub以来,Yolov8一直有些破坏。我认为他们一直在努力。在最近与Yolov8 Keras的工作中,我无法获得明智的结果。 当我验证低地图时出现剩余框,我也有问题,我认为数据增强管道可能会有一些奇怪的行为。
  • 我认为,如果该团队很快发布了一个更新的示例,那将是很棒的
tensorflow machine-learning keras object-detection keras-cv
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.