Ejemplo n.º 1
0
    def _build_matting_model(self):
        class Args:
            encoder = 'resnet50_GN_WS'
            decoder = 'fba_decoder'
            weights = os.path.join(os.path.dirname(__file__),
                                   'FBA_Matting/FBA.pth')

        args = Args()
        self.model = build_model(args)
Ejemplo n.º 2
0
def perform_matting(image, trimap):
    class Args:
        encoder = 'resnet50_GN_WS'
        decoder = 'fba_decoder'
        weights = 'FBA.pth'

    args = Args()
    model = build_model(args)
    model.eval()
    return pred(image, trimap, model)
Ejemplo n.º 3
0
    def __init__(self, model_dir, model_config):

        parser = argparse.ArgumentParser()

        # Model related arguments
        class Args:
            encoder = 'resnet50_GN_WS'
            decoder = 'fba_decoder'
            weights = 'FBA.pth'

        args = Args()
        model = build_model(args)
        model.eval()
        fg, bg, alpha = pred(image_np, trimap_np, model)
Ejemplo n.º 4
0
from networks.models import build_model


class Args:
    def __init__(self):
        self.encoder = 'resnet50_GN_WS'
        self.decoder = 'fba_decoder'
        self.weights = 'FBA.pth'


args = Args()
Model = build_model(args)
Ejemplo n.º 5
0
import io 

app = Flask(__name__)

def get_array(arg):
    return np.array(arg).astype('uint8')

class Matting_Args:
    def __init__(self):
        self.encoder = 'resnet50_GN_WS'
        self.decoder = 'fba_decoder'
        self.weights = '../models/FBA.pth'
        
args = Matting_Args()

matting_model = build_model(args)
matting_model.eval();

def get_response(new_bg,data):
    image = get_array(data.get('image'))
    response = requests.post('http://127.0.0.1:3000/',json = data)
    if response.status_code == 406:
        return jsonify({'output':image.tolist()})
    h,w,_ = image.shape
    trimap = get_array(response.json()['trimap'])
    fg, bg, alpha = pred(image/255.0,trimap,matting_model)
    combined = ((alpha[...,None]*image)).astype('uint8') + ((1-alpha)[...,None]*cv2.resize(new_bg,(w,h))).astype('uint8')
    return jsonify({'output':combined.tolist()})

@app.route('/with_bg',methods=['POST'])
def extraction():
Ejemplo n.º 6
0
            output[0].cpu().numpy().transpose((1, 2, 0)), (w, h), cv2.INTER_LANCZOS4,
        )
    alpha = output[:, :, 0]
    fg = output[:, :, 1:4]
    bg = output[:, :, 4:7]

    alpha[trimap_np[:, :, 0] == 1] = 0
    alpha[trimap_np[:, :, 1] == 1] = 1
    fg[alpha == 1] = image_np[alpha == 1]
    bg[alpha == 0] = image_np[alpha == 0]
    return fg, bg, alpha


if __name__ == "__main__":

    parser = argparse.ArgumentParser()
    # Model related arguments
    parser.add_argument("--encoder", default="resnet50_GN_WS", help="Encoder model")
    parser.add_argument("--decoder", default="fba_decoder", help="Decoder model")
    parser.add_argument("--weights", default="FBA.pth")
    parser.add_argument("--image_dir", default="./examples/images", help="")
    parser.add_argument(
        "--trimap_dir", default="./examples/trimaps", help="",
    )
    parser.add_argument("--output_dir", default="./examples/predictions", help="")
    parser.add_argument("--device", default="cpu", help="Device for inference on")

    args = parser.parse_args()
    model = build_model(args).to(args.device)
    model.eval()
    predict_fba_folder(model, args)