Git Product home page Git Product logo

mask-rcnn-keras's Introduction

Mask-Rcnn-实例分割模型在Keras当中的实现


目录

  1. 注意事项 Attention
  2. 仓库更新 Top News
  3. 相关仓库 Related code
  4. 所需环境 Environment
  5. 文件下载 Download
  6. 训练步骤 How2train
  7. 预测步骤 How2predict
  8. 评估步骤 miou
  9. 参考资料 Reference

注意事项!

为了满足同学们计算mAP的需求,对代码进行了大改,现在使用COCO数据集格式,各位同学请仔细看README,视频中的步骤已经只能用于旧库,旧库地址参考Top News。

Top News

2022-05:进行大幅度更新、支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、支持map评估。
BiliBili视频中的原仓库地址为:https://github.com/bubbliiiing/mask-rcnn-keras/tree/bilibili

2020-10:创建仓库、支持训练与预测。

相关仓库

模型 路径
yolact-keras https://github.com/bubbliiiing/yolact-keras
yolact-pytorch https://github.com/bubbliiiing/yolact-pytorch
yolact-tf2 https://github.com/bubbliiiing/yolact-tf2
mask-rcnn-keras https://github.com/bubbliiiing/mask-rcnn-keras
mask-rcnn-tf2 https://github.com/bubbliiiing/mask-rcnn-tf2

所需环境

tensorflow-gpu==1.13.1
keras==2.1.5

文件下载

这个训练好的权重是基于coco数据集的,可以直接运行用于coco数据集的实例分割。
链接: https://pan.baidu.com/s/1JXdNZ_dTCjtxjLmrxFWrag
提取码: mpzp

shapes数据集下载地址如下,该数据集是使用labelme标注的结果,尚未经过其它处理,用于区分三角形和正方形:
链接: https://pan.baidu.com/s/1hrCaEYbnSGBOhjoiOKQmig
提取码: jk44

训练步骤

a、训练shapes形状数据集

  1. 数据集的准备
    文件下载部分,通过百度网盘下载数据集,下载完成后解压,将图片和对应的json文件放入根目录下的datasets/before文件夹。

  2. 数据集的处理
    打开coco_annotation.py,里面的参数默认用于处理shapes形状数据集,直接运行可以在datasets/coco文件夹里生成图片文件和标签文件,并且完成了训练集和测试集的划分。

  3. 开始网络训练
    train.py的默认参数用于训练shapes数据集,默认指向了根目录下的数据集文件夹,直接运行train.py即可开始训练。

  4. 训练结果预测
    训练结果预测需要用到两个文件,分别是mask_rcnn.py和predict.py。 首先需要去mask_rcnn.py里面修改model_path以及classes_path,这两个参数必须要修改。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

b、训练自己的数据集

  1. 数据集的准备
    本文使用labelme工具进行标注,标注好的文件有图片文件和json文件,二者均放在before文件夹里,具体格式可参考shapes数据集。
    在标注目标时需要注意,同一种类的不同目标需要使用 _ 来隔开。
    比如想要训练网络检测三角形和正方形,当一幅图片存在两个三角形时,分别标记为:
triangle_1
triangle_2
  1. 数据集的处理
    修改coco_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。
    训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
    model_data/cls_classes.txt文件内容为:
cat
dog
...

修改coco_annotation.py中的classes_path,使其对应cls_classes.txt,并运行coco_annotation.py。

  1. 开始网络训练
    训练的参数较多,均在train.py中,大家可以在下载库后仔细看注释,其中最重要的部分依然是train.py里的classes_path。
    classes_path用于指向检测类别所对应的txt,这个txt和coco_annotation.py里面的txt一样!训练自己的数据集必须要修改!
    修改完classes_path后就可以运行train.py开始训练了,在训练多个epoch后,权值会生成在logs文件夹中。

  2. 训练结果预测
    训练结果预测需要用到两个文件,分别是mask_rcnn.py和predict.py。 首先需要去mask_rcnn.py里面修改model_path以及classes_path,这两个参数必须要修改。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

c、训练coco数据集

  1. 数据集的准备
    coco训练集 http://images.cocodataset.org/zips/train2017.zip
    coco验证集 http://images.cocodataset.org/zips/val2017.zip
    coco训练集和验证集的标签 http://images.cocodataset.org/annotations/annotations_trainval2017.zip

  2. 开始网络训练
    解压训练集、验证集及其标签后。打开train.py文件,修改其中的classes_path指向model_data/coco_classes.txt。
    修改train_image_path为训练图片的路径,train_annotation_path为训练图片的标签文件,val_image_path为验证图片的路径,val_annotation_path为验证图片的标签文件。

  3. 训练结果预测
    训练结果预测需要用到两个文件,分别是mask_rcnn.py和predict.py。 首先需要去mask_rcnn.py里面修改model_path以及classes_path,这两个参数必须要修改。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载权值,放入model_data,运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

b、使用自己训练的权重

  1. 按照训练步骤训练。
  2. 在mask_rcnn.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类
_defaults = {
    #--------------------------------------------------------------------------#
    #   使用自己训练好的模型进行预测一定要修改model_path和classes_path!
    #   model_path指向logs文件夹下的权值文件,classes_path指向model_data下的txt
    #
    #   训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。
    #   验证集损失较低不代表mAP较高,仅代表该权值在验证集上泛化性能较好。
    #   如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改
    #--------------------------------------------------------------------------#
    "model_path"        : 'model_data/mask_rcnn_coco.h5',
    "classes_path"      : 'model_data/coco_classes.txt',
    #---------------------------------------------------------------------#
    #   只有得分大于置信度的预测框会被保留下来
    #---------------------------------------------------------------------#
    "confidence"        : 0.7,
    #---------------------------------------------------------------------#
    #   非极大抑制所用到的nms_iou大小
    #---------------------------------------------------------------------#
    "nms_iou"           : 0.3,
    #----------------------------------------------------------------------#
    #   输入的shape大小
    #   算法会填充输入图片到[IMAGE_MAX_DIM, IMAGE_MAX_DIM]的大小
    #----------------------------------------------------------------------#
    "IMAGE_MAX_DIM"     : 512,
    #----------------------------------------------------------------------#
    #   用于设定先验框大小,默认的先验框大多数情况下是通用的,可以不修改。
    #   需要和训练设置的RPN_ANCHOR_SCALES一致。
    #----------------------------------------------------------------------#
    "RPN_ANCHOR_SCALES" : [32, 64, 128, 256, 512]
}
  1. 运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

评估步骤

a、评估自己的数据集

  1. 本文使用coco格式进行评估。
  2. 如果在训练前已经运行过coco_annotation.py文件,代码会自动将数据集划分成训练集、验证集和测试集。
  3. 如果想要修改测试集的比例,可以修改coco_annotation.py文件下的trainval_percent。trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1。train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1。
  4. 在mask_rcnn.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
  5. 前往eval.py文件修改classes_path,classes_path用于指向检测类别所对应的txt,这个txt和训练时的txt一样。评估自己的数据集必须要修改。运行eval.py即可获得评估结果。

b、评估coco的数据集

  1. 下载好coco数据集。
  2. 在mask_rcnn.py里面修改model_path以及classes_path。model_path指向coco数据集的权重,在logs文件夹里。classes_path指向model_data/coco_classes.txt。
  3. 前往eval.py设置classes_path,指向model_data/coco_classes.txt。修改Image_dir为评估图片的路径,Json_path为评估图片的标签文件。 运行eval.py即可获得评估结果。

Reference

https://github.com/matterport/Mask_RCNN
https://github.com/feiyuhuahuo/Yolact_minimal

mask-rcnn-keras's People

Contributors

bubbliiiing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mask-rcnn-keras's Issues

关于自己数据集里mask文件夹内图片的读取

您好,您的工作为我提供了非常大的帮助,首先谢谢!
我遇到的问题是:当我自己标注了训练集后,生成的数据集mask文件夹内的图片无法正确读取。我用matlab尝试了RGB通道的读取,也尝试了图像ALPHA通道的读取,结果都不正确。
我的目的是灰度图的形式展示mask文件夹内的图像,我该如何做?

预测结果很差

image
image
博主您好,我通过您分享的mask-rcnn-keras-bilibili实例分割项目做了如图的预测。就是把图中一条一条的架子分割出来,然后预测如上图,只能预测出来一小部分架子,一开始以为是数据集不够,然后重新标注后数据集超过500张图片,效果还是这样。请问是哪里有问题吗?不知是不是哪里的阈值设置问题,因为我看预测出来的打分都是1.000。

训练过程中出现loss为nan

自己制作了300张训练样本,在训练过程中出现rpn_bbox_loss为nan,检查了数据没什么问题,原因可能在哪呀?

需要requirements.txt文件

博主您好,可以上传一下对应的requirements.txt文件吗?我在Colab上训练,需要安装对应的库,没有requirements.txt文件的话手动安装很不方便,也可能安装的版本不对。麻烦您了!

测试的时候出现IndexError: list index out of range

大佬 这个该这么解决。。

Configurations:
BACKBONE_STRIDES [4, 8, 16, 32, 64]
BATCH_SIZE 0
BBOX_STD_DEV [0.1 0.1 0.2 0.2]
DETECTION_MAX_INSTANCES 100
DETECTION_MIN_CONFIDENCE 0.05
DETECTION_NMS_THRESHOLD 0.5
FPN_CLASSIF_FC_LAYERS_SIZE 1024
GPU_COUNT 0
IMAGES_PER_GPU 1
IMAGE_MAX_DIM 512
IMAGE_META_SIZE 93
IMAGE_SHAPE [512 512 3]
LOSS_WEIGHTS {'rpn_class_loss': 1.0, 'rpn_bbox_loss': 1.0, 'mrcnn_class_loss': 1.0, 'mrcnn_bbox_loss': 1.0, 'mrcnn_mask_loss': 1.0}
MASK_POOL_SIZE 14
MASK_SHAPE [28, 28]
MAX_GT_INSTANCES 100
MINI_MASK_SHAPE (56, 56)
NUM_CLASSES 81
POOL_SIZE 7
POST_NMS_ROIS_INFERENCE 1000
POST_NMS_ROIS_TRAINING 2000
PRE_NMS_LIMIT 6000
ROI_POSITIVE_RATIO 0.33
RPN_ANCHOR_RATIOS [0.5, 1, 2]
RPN_ANCHOR_SCALES [32, 64, 128, 256, 512]
RPN_ANCHOR_STRIDE 1
RPN_BBOX_STD_DEV [0.1 0.1 0.2 0.2]
RPN_NMS_THRESHOLD 0.7
RPN_TRAIN_ANCHORS_PER_IMAGE 256
TOP_DOWN_PYRAMID_SIZE 256
TRAIN_BN False
TRAIN_ROIS_PER_IMAGE 200
USE_MINI_MASK True

WARNING:tensorflow:From /cloud/mrcnn_tf1.13.1/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /home/featurize/work/mask-rcnn-keras/nets/layers.py:386: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
2023-03-02 03:28:03.316527: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2023-03-02 03:28:03.321351: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2399995000 Hz
2023-03-02 03:28:03.321625: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x558ec6a395f0 executing computations on platform Host. Devices:
2023-03-02 03:28:03.321648: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0): ,
Load model done.
Get predict result.
0it [00:00, ?it/s]

Json files dumped, saved in: 'eval_results/', start evaluting.
Loading and preparing results...
Traceback (most recent call last):
File "eval-Copy1.py", line 71, in
bbox_dets = test_coco.loadRes(osp.join(map_out_path, "bbox_detections.json"))
File "/cloud/mrcnn_tf1.13.1/lib/python3.6/site-packages/pycocotools/coco.py", line 329, in loadRes
if 'caption' in anns[0]:
IndexError: list index out of range

1000+图片,但仍显示数据集过小

带map的mask模型,为什么有1000+张照片,也按照readme修改了classes_path,并且生成了三个json文件,内容也都没什么问题,但是运行train.py文件,显示数据集过小,是哪个环节出问题了吗?

AP

请问 可以测试后 得到平均精度和识别速度吗

IndexError: boolean index did not match indexed array along dimension 0; dimension is 1 but corresponding boolean dimension is 8

刚开始训练,到 Epoch 1/50,就会报错 IndexError: boolean index did not match indexed array along dimension 0; dimension is 1 but corresponding boolean dimension is 8

我找到 csdn 上一个类似 bug,说是有 yaml 没有分成实例导致的,比如应该是 cat1、cat2,但 yaml 实际是 cat、cat。但我遍历了所有yaml 文件,没找到类似上述的 yaml。

想问一下,这个要怎么解决呀

ValueError: **slice index -1 of dimension 0 out of bounds.** for '{{node loss/rpn_class_loss_loss/strided_slice}} =

Traceback (most recent call last):
File "E:/relate_code/mask-rcnn-keras-master/train.py", line 237, in
'mrcnn_mask_loss' : lambda y_true, y_pred: y_pred
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\tensorflow\python\trackable\base.py", line 205, in _method_wrapper
result = method(self, *args, **kwargs)
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\keras\engine\training_v1.py", line 497, in compile
self._compile_weights_loss_and_weighted_metrics()
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\tensorflow\python\trackable\base.py", line 205, in _method_wrapper
result = method(self, *args, **kwargs)
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\keras\engine\training_v1.py", line 1696, in _compile_weights_loss_and_weighted_metrics
self.total_loss = self._prepare_total_loss(masks)
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\keras\engine\training_v1.py", line 1763, in _prepare_total_loss
per_sample_losses = loss_fn.call(y_true, y_pred)
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\keras\losses.py", line 266, in call
y_pred, y_true
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\keras\utils\losses_utils.py", line 205, in squeeze_or_expand_dimensions
is_last_dim_1 = tf.equal(1, tf.shape(y_pred)[-1])
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\tensorflow\python\util\traceback_utils.py", line 153, in error_handler
raise e.with_traceback(filtered_tb) from None
File "C:\Anaconda3\envs\mask_rcnn_keras\lib\site-packages\tensorflow\python\framework\ops.py", line 1969, in _create_c_op
raise ValueError(e.message)

#ValueError: slice index -1 of dimension 0 out of bounds. for '{{node loss/rpn_class_loss_loss/strided_slice}} = StridedSlice[Index=DT_INT32, T=DT_INT32, begin_mask=0, ellipsis_mask=0, end_mask=0, new_axis_mask=0, shrink_axis_mask=1](loss/rpn_class_loss_loss/Shape, loss/rpn_class_loss_loss/strided_slice/stack, loss/rpn_class_loss_loss/strided_slice/stack_1, loss/rpn_class_loss_loss/strided_slice/stack_2)' with input shapes: [0], [1], [1], [1] and with computed input tensors: input[1] = <-1>, input[2] = <0>, input[3] = <1>.

用的tensorflow2.10版本,说模型编译这里出错,这个bug该怎么改啊?感觉挺对的啊 #

ValueError: None values not supported.

首先很感谢您所做的工作。
我在运行predict.py预测coco数据集的列子时出现了这个错误,不知道为什么,希望您能解答,是因为我使用的是tf2版本吗?

C:\Users\13747\Desktop\代码\mask-rcnn\nets\layers.py:356 call  *
        detections_batch = utils.batch_slice(
    C:\Users\13747\Desktop\代码\mask-rcnn\utils\utils.py:553 batch_slice  *
        output_slice = graph_fn(*inputs_slice)
    C:\Users\13747\Desktop\代码\mask-rcnn\nets\layers.py:255 refine_detections_graph  *
        indices = tf.stack([tf.range(probs.shape[0]), class_ids], axis=1)
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\util\dispatch.py:206 wrapper  **
        return target(*args, **kwargs)
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\ops\math_ops.py:1908 range
        limit = ops.convert_to_tensor(limit, dtype=dtype, name="limit")
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\profiler\trace.py:163 wrapped
        return func(*args, **kwargs)
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\framework\ops.py:1566 convert_to_tensor
        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\framework\constant_op.py:339 _constant_tensor_conversion_function
        return constant(v, dtype=dtype, name=name)
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\framework\constant_op.py:264 constant
        return _constant_impl(value, dtype, shape, name, verify_shape=False,
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\framework\constant_op.py:281 _constant_impl
        tensor_util.make_tensor_proto(
    G:\Software\Anaconda\lib\site-packages\tensorflow\python\framework\tensor_util.py:445 make_tensor_proto
        raise ValueError("None values not supported.")

    ValueError: None values not supported.

训练coco数据集过程中,Exception: Invalid bounding box with area of zero,请问您知道怎么解决嘛

561/58633 [..............................] - ETA: 6:54:06 - loss: 1.6840 - rpn_class_loss_loss: 0.1094 - rpn_bbox_loss_loss: 0.8315 - mrcnn_class_loss_loss: 0.1723 - mrcnn_bbox_loss_loss: 0.2518 - mrcnn_mask_loss_loss: 0.3191Traceback (most recent call last):
File "train.py", line 299, in
callbacks=callbacks
File "/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 1418, in fit_generator
initial_epoch=initial_epoch)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py", line 181, in fit_generator
generator_output = next(output_generator)
File "/usr/local/lib/python3.6/dist-packages/keras/utils/data_utils.py", line 601, in get
six.reraise(*sys.exc_info())
File "/usr/local/lib/python3.6/dist-packages/six.py", line 693, in reraise
raise value
File "/usr/local/lib/python3.6/dist-packages/keras/utils/data_utils.py", line 595, in get
inputs = self.queue.get(block=True).get()
File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get
raise self._value
File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "/usr/local/lib/python3.6/dist-packages/keras/utils/data_utils.py", line 401, in get_index
return _SHARED_SEQUENCES[uid][i]
File "/opt/data/private/Kevin/mask-rcnn-keras/utils/dataloader.py", line 250, in getitem
load_image_gt(image, mask_gt, boxes, class_ids, image_id, self.config, use_mini_mask=self.config.USE_MINI_MASK)
File "/opt/data/private/Kevin/mask-rcnn-keras/utils/dataloader.py", line 59, in load_image_gt
mask = minimize_mask(boxes, mask, config.MINI_MASK_SHAPE)
File "/opt/data/private/Kevin/mask-rcnn-keras/utils/dataloader.py", line 24, in minimize_mask
raise Exception("Invalid bounding box with area of zero")
Exception: Invalid bounding box with area of zero

不得不说效果很流批

所给权重的评价结果
指标(IoU 阈值为 0.5-0.95) 边界框 分割掩码
AP 0.475 0.440
AR 0.581 0.517
但是不得不说效果很流批

predict.py

预测时这个py文件里的input函数好像不能遍历读取文件夹里的文件,win10环境

ValueError: Cannot iterate over a shape with unknown rank.

Traceback (most recent call last):
File "train.py", line 124, in
loss=[None] * len(model.outputs)
File "/root/miniconda3/lib/python3.7/site-packages/keras/engine/training.py", line 211, in compile
self._cache_output_metric_attributes(metrics, weighted_metrics)
File "/root/miniconda3/lib/python3.7/site-packages/keras/engine/training.py", line 736, in _cache_output_metric_attributes
output_shapes.append(list(output.shape))
File "/root/miniconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 838, in iter
raise ValueError("Cannot iterate over a shape with unknown rank.")
ValueError: Cannot iterate over a shape with unknown rank.

这是什么原因呢?没办法解决

Open Error! Try again!

请问,执行预测的时候,我在"Input image filename:"的后面输入street,为什么提示我"Open Error! Try again!"呢?我该如何键入想要预测的图片?

LVIS数据集使用coco.py问题

大佬,我现在想用LVIS数据集来跑这个代码
LVIS和COCO的标注类似,但是其annotation中没有'iscrowd'这个字段
而在coco.py的第233行有关于这个字段的处理,请问如何修正?
if annotation['iscrowd']:
# Use negative class ID for crowds
class_id *= -1
# For crowd masks, annToMask() sometimes returns a mask
# smaller than the given dimensions. If so, resize it.
if m.shape[0] != image_info["height"] or m.shape[1] != image_info["width"]:
m = np.ones([image_info["height"], image_info["width"]], dtype=bool)

num_workers在哪里修改

博主您好!请问num_workers在哪里修改?我没有找到位置,麻烦您告知一下,不用太详细,具体到某一行。有大致位置就行,麻烦您了!

使用resnet50训练

请问如果想用resnet50结构作为backbone,是不是只需要修改resnet.py里的block count,resnet101的block count是22,resnet50是5
image

关于标注样本的提问

您在“准备数据集”中写道“利用labelme标注数据集,注意标注的时候同一个类要用不同的序号,比如画面中存在两个苹果那么一个苹果的label就是apple1另一个是apple2。”如果按照这种方式标记,那么运行json_to_dataset.py后的yaml文中也会带有编号,但是我看您上传的正方形、三角形圆形的例子中的yaml没有编号,即使一张图片有相同的图形。

应该与各自图中的真实框的类别号中验证pred_class_logits所指的实际类别号在各自图中的真实框的类别号中是否存在

老师好:
关于刚才所提的Mask R-CNN的mrcnn_training.py的mrcnn_class_loss_graph()的多分类损失计算问题,在验证pred_class_logits所指的实际类别号在各自图中的真实框的类别号中是否存在时,
其代码为:pred_active = tf.gather(active_class_ids[0], pred_class_ids) 为何所有pred_class_logits多分类输出所指的实际类别号都在第一幅图中的真实框的类别号中(即active_class_ids[0])验证,应该与各自图中的真实框的类别号中验证呀?谢谢

训练中的bug

求教B导这是什么问题啊C:\Users\DeepLearning\AppData\Roaming\Python\Python36\site-packages\keras\utils\data_utils.py:709: UserWarning: An input could not be retrieved. It could be because a worker has died.We do not have any information on the lost sample.
UserWarning)

从头训练

可以用随机初始化的权重开始训练吗

有人试过转换成tflite吗?

我在打算将训练出来的模型转换成tflite格式在移动端上使用,但是转换的时候一直报错。
ValueError: Unknown layer: ProposalLayer

类似这些自定义层的问题,我都在加载model的时候都添加了这个参数解决
custom_objects={"ProposalLayer": ProposalLayer}

然后将自定义层的初始化方法的参数都加上了默认的值,最终还会报错
AttributeError: 'Node' object has no attribute 'output_masks'

更换权重类型

你好,如果想将在keras上预训练的权重用到pytorch搭建的网络上,应该怎么做的?
还有就是想问一下,能否将mask_rcnn_coco.h5用到你写的pytorch的faster_rcnn中(如果加上fpn的话)

复现失败

博主您好,我在使用您提供的权重复现代码时候,测试street图片出现了这样的情况,
2022-12-07

调用多显卡时显示报错

当我调用多个gpu进行训练的时候,如下
if __name__ == "__main__": train_gpu = [0,1] classes_path = 'model_data/cls_classes.txt' in train.py。
训练的时候显示如下
捕获

数据集问题

你好,我看训练新数据是先“利用labelme标注数据集”然后再使用json_to_json
请问json_to_json可以直接对coco原来的json文件处理吗(这样就不涉及labelme标注这一步骤了)

预测结果只有一类

我在进行模型预测的时候,所有图像的预测结果都只有一类,但是数据集一共有十二类。数据集没有样本不平衡现象,预测前我修改了mask_rcnn.py中的classes_path和model_path。请问这是什么原因导致的。
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.