gpt4 book ai didi

machine-learning - 修改损失函数更快的rcnn检测器

转载 作者:行者123 更新时间:2023-11-30 08:48:28 25 4
gpt4 key购买 nike

在我的论文中,我试图修改 fast-rcnn 的损失函数来识别表结构。

目前我正在使用 Facebook 的 Detectron。看起来效果很好,但我现在正在积极尝试修改损失函数。调试我的代码我注意到这是添加损失函数的地方 fast_rcnn_heads.py:75 :

def add_fast_rcnn_losses(model):
"""Add losses for RoI classification and bounding box regression."""
cls_prob, loss_cls = model.net.SoftmaxWithLoss(
['cls_score', 'labels_int32'], ['cls_prob', 'loss_cls'],
scale=model.GetLossScale()
)
loss_bbox = model.net.SmoothL1Loss(
[
'bbox_pred', 'bbox_targets', 'bbox_inside_weights',
'bbox_outside_weights'
],
'loss_bbox',
scale=model.GetLossScale()
)
loss_gradients = blob_utils.get_loss_gradients(model, [loss_cls, loss_bbox])
model.Accuracy(['cls_prob', 'labels_int32'], 'accuracy_cls')
model.AddLosses(['loss_cls', 'loss_bbox'])
model.AddMetrics('accuracy_cls')
return loss_gradients

调试器找不到 mode.net.SmoothL1Loss 或 SoftmaxWithLoss 的任何声明或实现。 Detectron 使用 caffe,当我查看 net_builder(它初始化 model.net)时,我看到它“绑定(bind)”(不知道正确的词)到 caffe2,caffe2 本身是一个 pylib,后面有一个已编译的 lib。

我是否在错误的地方对这个损失函数进行了微小的调整,或者我真的必须从 dcaffe 打开源代码,调整损失,重新编译 lib?

问候,

最佳答案

你应该自己实现损失函数。修改库源代码并重新编译它 - 这不是一个好主意:)

您可以创建Python函数,它将获取GT和预测数据并返回损失值。

您还可以创建当前使用的 L1-smooth 或交叉熵的副本,然后,当您确定它们相同时,您可以修改它们。或者,您可以实现例如盒子的 L2 损失并使用它。

有关自定义损失的更多信息,您可以在咖啡文档中找到。

关于machine-learning - 修改损失函数更快的rcnn检测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com