【问题标题】:Can't train faster rcnn无法训练更快的 rcnn
【发布时间】:2020-02-05 15:30:02
【问题描述】:

我想建立自己的 Faster Rcnn 模型,我从https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3 下载了一个例子

运行代码时出现错误,不知道为什么

Traceback (most recent call last):
  File "C:/Users/l/Desktop/Faster-RCNN/train.py", line 216, in <module>
    train.train()
  File "C:/Users/l/Desktop/Faster-RCNN/train.py", line 148, in train
    blobs = self.data_layer.forward()
  File "C:\Users\l\Desktop\Faster-RCNN\lib\layer_utils\roi_data_layer.py", line 75, in forward
    blobs = self._get_next_minibatch()
  File "C:\Users\l\Desktop\Faster-RCNN\lib\layer_utils\roi_data_layer.py", line 71, in _get_next_minibatch
    return get_minibatch(minibatch_db, self._num_classes)
  File "C:\Users\l\Desktop\Faster-RCNN\lib\utils\minibatch.py", line 30, in get_minibatch
    im_blob, im_scales = _get_image_blob(roidb, random_scale_inds)
  File "C`enter code here`:\Users\l\Desktop\Faster-RCNN\lib\utils\minibatch.py", line 67, in _get_image_blob
    im, im_scale = prep_im_for_blob(im, cfg.FLAGS2["pixel_means"], target_size, cfg.FLAGS.max_size)
  File "C:\Users\l\Desktop\Faster-RCNN\lib\utils\blob.py", line 35, in prep_im_for_blob
    im = im.astype(np.float32, copy=False)
AttributeError: 'NoneType' object has no attribute 'astype'

【问题讨论】:

  • 我建议看blob.py线35,显然im对象是None,检查原因
  • 可以提问here
  • 您的输入图像可能有问题,因为模型中没有读取它们。它可以是一个或多个图像的名称、路径、类型、...
  • 我想我知道如何处理它了。非常感谢!

标签: python windows tensorflow deep-learning faster-rcnn


【解决方案1】:

要构建自己的Faster RCNN Models,您可以按照Official Tensorflow Github Repository 中提到的说明进行操作。

遵循这些说明的好处是,如果您遇到任何问题,可以在this Repo 提出问题,Google 工程师会为您提供帮助。

为了社区的利益,指定Github Repo 中提到的步骤(以防链接中断)。

定义新的 Faster R-CNN 或 SSD 特征提取器:

在大多数情况下,您可能不会从头开始实现DetectionModel --- 相反,您可能会创建一个新的特征提取器以供 SSD 或 Faster R-CNN 元架构之一使用。 (我们将元架构视为使用DetectionModel 抽象定义整个模型系列的类。

注意:为了使以下讨论有意义,我们建议首先熟悉Faster R-CNN 论文。

现在让我们假设您已经发明了一种全新的网络架构(例如,“InceptionV100”)用于分类,并想看看 InceptionV100 将如何作为特征提取器进行检测(例如,使用 Faster R-CNN)。 SSD 模型也适用类似的程序,但我们将讨论 Faster R-CNN。

要使用 InceptionV100,我们必须定义一个新的 FasterRCNNFeatureExtractor 并将其作为输入传递给 FasterRCNNMetaArch 构造函数。分别参见object_detection/meta_architectures/faster_rcnn_meta_arch.py 以了解FasterRCNNFeatureExtractorFasterRCNNMetaArch 的定义。 FasterRCNNFeatureExtractor 必须定义几个函数:

  • preprocess:在输入图像上运行检测器之前,对输入值进行任何必要的预处理。
  • _extract_proposal_features:提取第一阶段区域提议网络 (RPN) 特征。
  • _extract_box_classifier_features:提取第二阶段 Box Classifier 特征。
  • restore_from_classification_checkpoint_fn:将检查点加载到 TensorFlow 图中。

object_detection/models/faster_rcnn_resnet_v1_feature_extractor.py 定义为例。一些备注:

  • 我们通常使用来自Slim Resnet-101 classification checkpoint 的权重来初始化此特征提取器的权重,并且我们知道,在训练此检查点时,通过从每个输入图像中减去通道均值来对图像进行预处理。因此,我们实现了预处理函数来复制相同的通道均值减法行为。
  • slim 中定义的“完整”resnet 分类网络被分为两部分——除了最后一个“resnet 块”之外的所有部分都放入_extract_proposal_features 函数中,最后一个块在_extract_box_classifier_features 函数中单独定义.一般而言,可能需要进行一些实验来确定将特征提取器“切割”成 Faster R-CNN 的这两部分的最佳层。

如需了解更多信息,请参考this link 和此 Github Repo for Tensorflow Models

希望这会有所帮助。快乐学习!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2020-01-11
    • 2021-05-09
    • 1970-01-01
    • 2018-05-06
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多