# coding=utf-8 from __future__ import absolute_import, print_function from suanpan.app import app from suanpan.app.arguments import Model, Bool from arguments import CFGModel @app.param(Bool(key="usePredWeight", default=True)) @app.output(Model(key="model", type=CFGModel)) def SPRetinanetR101FPN(context): args = context.args if args.usePredWeight: args.model.load_model( "./detectron2/configs/COCO-Detection/retinanet_R_101_FPN_3x.yaml", "common/model/detectron2/ImageNetPretrained/MSRA/model_final_59f53c.pkl", ) else: args.model.load_model( "./detectron2/configs/COCO-Detection/retinanet_R_101_FPN_3x.yaml", "", ) return args.model if __name__ == "__main__": SPRetinanetR101FPN()
# coding=utf-8 from __future__ import absolute_import, print_function import tensorflow as tf import suanpan from suanpan.app import app from suanpan.app.arguments import Folder, Model, Json from model import TFModel from utils.prework import get_predict_file, get_image @app.input(Folder(key="inputData1", alias="predictImages")) @app.input(Model(key="inputModel2", alias="model", type=TFModel)) @app.output(Json(key="outputData1", alias="predictions")) def SPClassificationPredict(context): args = context.args predict_image = get_predict_file(args.predictImages) predictions = [] with tf.Graph().as_default(): for image in get_image(predict_image): labelnum = args.model.predict(image, args.model.model_dir) predictions.append(list(args.model.label_map.keys())[labelnum]) return predictions @app.afterCall def modelHotReload(context): args = context.args if app.isStream: args.model.reload(duration=args.duration)
# coding=utf-8 from __future__ import absolute_import, print_function import os from suanpan.app.arguments import Folder, Int, Float, Model from suanpan.app import app from suanpan.log import logger from suanpan.utils import json from arguments import CFGModel @app.input(Model(key="inputModel", type=CFGModel)) @app.input(Folder(key="inputTrainImage")) @app.input(Folder(key="inputTrainJson")) @app.input(Folder(key="inputTestImage")) @app.input(Folder(key="inputTestJson")) @app.param(Int(key="__gpu", default=0)) @app.param(Int(key="ImgsPerBatch", default=2)) @app.param(Float(key="BaseLR", default=0.00025)) @app.param(Int(key="MaxIter", default=300)) @app.param(Int(key="BatchSizePerImg", default=128)) @app.param(Int(key="NumWorkers", default=4)) @app.output(Model(key="outputModel", type=CFGModel)) @app.output(Folder(key="outputData")) def SPTrainer(context): args = context.args model = args.inputModel device = "cuda" if args.__gpu else "cpu" logger.info( "**********Use {} Device for Training**********".format(device))
return path def train(self, X, y, epochs=10): pass def evaluate(self, X, y): pass def predict(self, X): pass @app.input(Folder(key="inputData1", alias="data")) @app.input(Folder(key="inputData2", alias="model_config")) @app.param(Int(key="param1", alias="num_train_steps", default=1)) @app.output(Model(key="outputModel1", alias="model", type=ODModel)) def SPObjectDetection(context): args = context.args P.copy(args.data, "./data") os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" # 指定第一块GPU可用 sess = tf.Session() FLAGS = {} FLAGS["model_dir"] = "./model" FLAGS["pipeline_config_path"] = os.path.join( args.model_config, "ssd_mobilenet_v1_coco.config") FLAGS["num_train_steps"] = args.num_train_steps FLAGS["eval_training_data"] = False FLAGS["sample_1_of_n_eval_examples"] = 1 FLAGS["sample_1_of_n_eval_on_train_examples"] = 5 FLAGS["hparams_overrides"] = None FLAGS["checkpoint_dir"] = None