且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测

更新时间:2022-08-15 21:52:21

输出结果


Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测

Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测

Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测








设计思路

Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测




核心代码


# -*- coding: utf-8 -*-

import os

import sys

import argparse

import numpy as np

import coco

import utils

import model as modellib

import imageio

import visualize

def create_noisy_color(image, color):

   color_mask = np.full(shape=(image.shape[0], image.shape[1], 3),

                        fill_value=color)

   noise = np.random.normal(0, 25, (image.shape[0], image.shape[1]))

   noise = np.repeat(np.expand_dims(noise, axis=2), repeats=3, axis=2)

   mask_noise = np.clip(color_mask + noise, 0., 255.)

   return mask_noise

def string_to_rgb_triplet(triplet):

   if '#' in triplet:

       # http://***.com/a/4296727

       triplet = triplet.lstrip('#')

       _NUMERALS = '0123456789abcdefABCDEF'

       _HEXDEC = {v: int(v, 16)

                  for v in (x + y for x in _NUMERALS for y in _NUMERALS)}

       return (_HEXDEC[triplet[0:2]], _HEXDEC[triplet[2:4]],

               _HEXDEC[triplet[4:6]])

   else:

       # https://***.com/a/9763133

       triplet = make_tuple(triplet)

       return triplet

……

if __name__ == '__main__':

   parser = argparse.ArgumentParser(

       description='Person Blocker - Automatically "block" people '

                   'in images using a neural network.')

   parser.add_argument('-i', '--image',  help='Image file name.',

                       required=False)

   parser.add_argument(

       '-m', '--model',  help='path to COCO model', default=None)

   parser.add_argument('-o',

                       '--objects', nargs='+',

                       help='object(s)/object ID(s) to block. ' +

                       'Use the -names flag to print a list of ' +

                       'valid objects',

                       default='person')

   parser.add_argument('-c',

                       '--color', nargs='?', default='(255, 255, 255)',

                       help='color of the "block"')

   parser.add_argument('-l',

                       '--labeled', dest='labeled',

                       action='store_true',

                       help='generate labeled image instead')

   parser.add_argument('-n',

                       '--names', dest='names',

                       action='store_true',

                       help='prints class names and exits.')

   parser.set_defaults(labeled=False, names=False)

   args = parser.parse_args()

   if args.names:

       print(get_class_names())

       sys.exit()

   person_blocker(args)

全部代码和设计思路解释每周六将公布!!!