0


MaskRCNN 在 Windows 上的部署教程

文章目录

引言

Mask R-CNN(Region-based Convolutional Neural Network for Mask Prediction)是一种流行的深度学习模型,广泛用于实例分割任务。它不仅能够识别图像中的对象,还能精确地勾勒出每个对象的轮廓。在Windows环境下部署Mask R-CNN可能对于许多用户来说是一个挑战,尤其是对于那些没有深厚深度学习背景的人来说。本教程将指导你如何在Windows系统上成功部署和使用Mask R-CNN模型。

环境准备

python3.6

Package              Version
-------------------------------
absl-py              1.4.0
astor                0.8.1
backcall             0.2.0
cached-property1.5.2
certifi              2021.5.30
colorama             0.4.5
cycler               0.11.0
Cython               0.29.28
dataclasses          0.8
decorator            4.4.2
gast                 0.2.2
google-pasta         0.2.0
grpcio               1.48.2
h5py                 2.10.0
imageio              2.15.0
imgaug               0.4.0
imgviz               1.7.5
importlib-metadata   4.8.3
ipython              7.16.3
ipython-genutils     0.2.0
jedi                 0.17.2
Keras                2.1.6
Keras-Applications   1.0.8
Keras-Preprocessing  1.1.2
kiwisolver           1.3.1
labelme              5.2.1
Markdown             3.3.7
mask-rcnn            2.1
matplotlib           3.3.4
natsort              8.2.0
networkx             2.5.1
numpy                1.17.0
olefile              0.47
opencv-python        3.4.9.33
opt-einsum           3.3.0
packaging            21.3
parso                0.7.1
pickleshare          0.7.5
Pillow               4.0.0
pip                  21.3.1
prompt-toolkit       3.0.36
protobuf             3.19.6
pycocotools-windows  2.0.0.2
Pygments             2.14.0
pyparsing            3.1.2
PyQt5                5.15.6
PyQt5-Qt5            5.15.2
PyQt5-sip            12.9.1
python-dateutil      2.9.0.post0
PyWavelets           1.1.1
PyYAML               6.0.1
QtPy                 2.0.1
scikit-image         0.17.2
scipy                1.2.1
setuptools           58.0.4
Shapely              1.8.5.post1
six                  1.16.0
tensorboard          1.15.0
tensorflow-estimator 1.15.1
tensorflow-gpu       1.15.0
termcolor            1.1.0
tifffile             2020.9.3
traitlets            4.3.3
typing_extensions    4.1.1
wcwidth              0.2.13
Werkzeug             2.0.3
wheel                0.37.1
wincertstore         0.2
wrapt                1.16.0
zipp                 3.6.0

克隆Mask R-CNN仓库

推荐
网址:Releases · matterport/Mask_RCNN (github.com)

在这里插入图片描述
下载预训练模型
Mask R-CNN的官方实现通常包含下载预训练模型的脚本。你可以使用这些脚本来获取已经训练好的模型权重。
在这里插入图片描述

不推荐
Mask R-CNN的官方实现或一些优秀的社区版本都可以在GitHub上找到。以下以Matterport的Mask R-CNN实现为例:

git clone https://github.com/matterport/Mask_RCNN.git  
cd Mask_RCNN

模型推理(以气球为例)

将根目录的model.py和utils.py放在balloo目录下:
在这里插入图片描述
优化balloon.py可以直接运行:

if __name__ =='__main__':import os

    # Set parameters directly (replace these paths with your actual paths)
    args ={'command':'splash',# 'train' or 'splash''dataset':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\balloon',# Directory of the Balloon dataset'weights':"D:\\YITU\\maskRcnnSrs\\Mask_RCNN-2.1\\samples\\balloon\\balloon.h5",# Path to weights .h5 file or 'coco''logs':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\logs',# Logs and checkpoints directory'image':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\balloon\val\5555705118_3390d70abe_b.jpg',# Image path for splash mode'video':None,# Video path for splash mode (set to None if not using)}# Validate argumentsif args['command']=="train":assert args['dataset'],"Argument --dataset is required for training"elif args['command']=="splash":assert args['image']or args['video'],"Provide --image or --video to apply color splash"print("Weights: ", args['weights'])print("Dataset: ", args['dataset'])print("Logs: ", args['logs'])# Configurationsif args['command']=="train":
        config = BalloonConfig()else:classInferenceConfig(BalloonConfig):
            GPU_COUNT =1
            IMAGES_PER_GPU =1

        config = InferenceConfig()
    config.display()# Create modelif args['command']=="train":
        model = modellib.MaskRCNN(mode="training", config=config, model_dir=args['logs'])else:
        model = modellib.MaskRCNN(mode="inference", config=config, model_dir=args['logs'])# Select weights file to loadif args['weights'].lower()=="coco":
        weights_path = COCO_WEIGHTS_PATH
        ifnot os.path.exists(weights_path):
            utils.download_trained_weights(weights_path)elif args['weights'].lower()=="last":
        weights_path = model.find_last()[1]elif args['weights'].lower()=="imagenet":
        weights_path = model.get_imagenet_weights()else:
        weights_path = args['weights']# Load weightsprint("Loading weights ", weights_path)if args['weights'].lower()=="coco":
        model.load_weights(weights_path, by_name=True, exclude=["mrcnn_class_logits","mrcnn_bbox_fc","mrcnn_bbox","mrcnn_mask"])else:
        model.load_weights(weights_path, by_name=True)# Train or evaluateif args['command']=="train":
        train(model)elif args['command']=="splash":
        detect_and_color_splash(model, image_path=args['image'], video_path=args['video'])else:print("'{}' is not recognized. Use 'train' or 'splash'".format(args['command']))defdetect_and_color_splash(model, image_path=None, video_path=None):assert image_path or video_path,"Provide --image or --video to apply color splash"print("Running on image: {}, video: {}".format(image_path, video_path))

参数解释

args ={'command':'splash',# 'train' or 'splash''dataset':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\balloon',# Directory of the Balloon dataset'weights':"D:\\YITU\\maskRcnnSrs\\Mask_RCNN-2.1\\samples\\balloon\\balloon.h5",# Path to weights .h5 file or 'coco''logs':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\logs',# Logs and checkpoints directory'image':r'D:\YITU\maskRcnnSrs\Mask_RCNN-2.1\balloon\val\5555705118_3390d70abe_b.jpg',# Image path for splash mode'video':None,# Video path for splash mode (set to None if not using)

command:
含义: 这个参数决定了程序将要执行的任务类型。
选项: ‘train’ 或 ‘splash’。
填写指导:
当你想使用给定的数据集训练一个新的Mask R-CNN模型时,设置为’train’。
当你想使用已训练的模型来检测图像或视频中的目标时,设置为’splash’。
dataset:
含义: 数据集的目录路径,程序将从中读取训练数据(如图片和标注)。
填写指导:
无论是’train’还是’splash’模式,这个路径都应该是包含训练和验证数据的目录。但在’train’模式下,这个目录需要包含用于训练的数据;在’splash’模式下,虽然这个参数仍被读取,但主要用于确保模型的训练环境与测试环境一致。
weights:
含义: 权重文件的路径或名称,用于初始化模型。
填写指导:
在’train’模式下,这可以是预训练的权重文件(如COCO数据集的权重),也可以是从先前训练中断续的权重文件。
在’splash’模式下,这必须是完全训练好的模型权重文件,用于进行目标检测和分割。
logs:
含义: 日志和检查点(checkpoints)的保存目录。
填写指导:
在’train’模式下,这个目录将用于保存训练过程中的日志、权重文件的检查点等。
在’splash’模式下,这个目录虽然也被读取,但主要用于确保与训练时使用的目录一致。
image:
含义: 在’splash’模式下,用于目标检测和分割的单个图像文件的路径。
填写指导:
在’train’模式下,这个参数通常不被使用或设置为None。
在’splash’模式下,设置为要检测的目标图像的路径。
video:
含义: 在’splash’模式下,用于目标检测和分割的视频文件的路径。
填写指导:
在’train’模式下,这个参数通常不被使用或设置为None。
在’splash’模式下,如果要对视频中的每一帧进行目标检测和分割,则设置为视频文件的路径。如果只对图像进行操作,则设置为None。

总结
在’train’模式下,主要关注dataset、weights和logs参数,确保它们正确指向了训练所需的数据集、权重文件和日志目录。
在’splash’模式下,除了上述参数外,还需要关注image或video参数,确保它们正确指向了要检测的目标图像或视频文件。同时,weights参数应指向一个已训练好的模型权重文件。

小结

通过以上步骤,你应该能够在Windows系统上成功部署并使用Mask R-CNN进行实例分割。


本文转载自: https://blog.csdn.net/weixin_44217158/article/details/140158807
版权归原作者 北海yy 所有, 如有侵权,请联系我们删除。

“MaskRCNN 在 Windows 上的部署教程”的评论:

还没有评论