Mask RCNN(Mask_RCNN-master)简单部署

一.注意事项

1.本文主要是引用大佬的文章(侵权请联系,马上删除),做的工作为简单补充

二.介绍

①简介:

Mask R-CNN(Mask Region-based Convolutional Neural Network)是一种用于目标检测语义分割的深度学习模型,它是对 Faster R-CNN 模型的扩展。Mask R-CNN 可以同时预测目标的边界框和像素级的掩码,从而实现了对图像中对象的精确定位分割

Mask R-CNN 的架构包括三个主要组件

1Backbone Network:通常使用的是预训练的卷积神经网络(如 ResNet、ResNeXt、或者 MobileNet),用于提取输入图像的特征。

2Region Proposal Network (RPN):RPN 在输入图像上滑动,并提出候选的对象边界框。这些边界框被用来定位图像中的目标。

3Mask Head:Mask Head 是 Mask R-CNN 的关键部分,它在每个候选的对象边界框周围生成目标的像素级掩码。这个过程可以视为是对边界框中的像素进行分类,从而确定哪些像素属于目标对象。

Mask R-CNN 的训练过程涉及到多个损失函数,包括目标检测的边界框损失和语义分割的掩码损失。这些损失函数共同作用于网络的不同部分,以确保网络能够准确地检测目标的位置和分割对象的像素。

Mask R-CNN 在许多计算机视觉任务中取得了state-of-the-art的结果,如图像分割、实例分割、和目标检测。它被广泛应用于医学图像分析、自动驾驶、视频分析等领域。

②流程图:

③结构图

④效果图:

理论知识建议阅读:【Mask RCNN】论文详解(真的很详细)_mask rcnn论文-CSDN博客

三.正文

1.大体流程按照:

使用Mask_RCNN训练自己数据_哔哩哔哩_bilibili

2.准备工作:

①视频中getdata代码

import json

import os

import numpy as np



path = 'image/val'

files = []



# 找到所有的 JSON 文件

for file in os.listdir(path):

    if file.endswith('.json'):

        files.append(file)



via_region_data = {}



# 遍历每个 JSON 文件

for file in files:

    # 读取 JSON 文件内容

    with open(os.path.join(path, file)) as f:

        data = json.load(f)



    one_image = {}

    one_image['filename'] = file.split('.')[0] + '.jpg'



    regions = {}



    # 处理每个区域

    for i, shape in enumerate(data['shapes']):

        points = np.array(shape['points'])

        all_points_x = list(points[:, 0])

        all_points_y = list(points[:, 1])



        regions[str(i)] = {

            'region_attributes': {},

            'shape_attributes': {

                'name': shape['label'],

                'all_points_x': all_points_x,

                'all_points_y': all_points_y

            }

        }

    one_image['regions'] = regions

    one_image['size'] = 0  # 这里可能需要根据实际情况修改

    via_region_data[file] = one_image

# 将数据保存到 JSON 文件中

with open('image/val/via_region_data.json', 'w') as f:

    json.dump(via_region_data, f, sort_keys=False, ensure_ascii=True)

(注意:val/train一定要自己修改)

②视频中的predicton代码

import cv2

image=cv2.imread('images/val/pig5.jpg')



from mrcnn.config import Config

from mrcnn import  model as modellib,utils



class BalloonConfig(Config):

    NAME = 'balloon'

    IMAGES_PER_GPU = 1

    NUM_CLASSES = 1+1

    DETECTION_MIN_CONFIDENCE = 0.8



config=BalloonConfig()

model=modellib.MaskRCNN(mode='inference',config=config,model_dir='logs')

model.load_weights(r'logs\balloon20240502T2045\mask_rcnn_balloon_0003.h5',by_name=True)

result=model.detect([image])

class_names=['BG','pig']

from mrcnn.visualize import display_instances

display_instances(image, result[0]['rois'],result[0]["masks"], result[0]['class_ids'], class_names,

                      scores=None, title="",

                      figsize=(16, 16), ax=None,

                      show_mask=True, show_bbox=True,

                      colors=None, captions=None)

3.结果式样

(本人标签打的不好所以结果不是特别理想)

  • 45
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值