CoolFace
Apppublic

andre-costa/segment-anything

sourceHugging Faceapache-2.0updated 3y agoView on Hugging Face
0likes
_wsgi.py114 linesDownload Raw Back to root
1import os2import argparse3import logging4import logging.config5import json6 7logging.config.dictConfig({8  "version": 1,9  "formatters": {10    "standard": {11      "format": "[%(asctime)s] [%(levelname)s] [%(name)s::%(funcName)s::%(lineno)d] %(message)s"12    }13  },14  "handlers": {15    "console": {16      "class": "logging.StreamHandler",17      "level": os.getenv('LOG_LEVEL', 'INFO'),18      "stream": "ext://sys.stdout",19      "formatter": "standard"20    }21  },22  "root": {23    "level": os.getenv('LOG_LEVEL', 'INFO'),24    "handlers": [25      "console"26    ],27    "propagate": True28  }29})30 31from label_studio_ml.api import init_app32from model import SamMLBackend33 34_DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(__file__), 'config.json')35 36 37def get_kwargs_from_config(config_path=_DEFAULT_CONFIG_PATH):38    if not os.path.exists(config_path):39        return dict()40    with open(config_path) as f:41        config = json.load(f)42    assert isinstance(config, dict)43    return config44 45 46if __name__ == "__main__":47    parser = argparse.ArgumentParser(description='Label studio')48    parser.add_argument(49        '-p', '--port', dest='port', type=int, default=9090,50        help='Server port')51    parser.add_argument(52        '--host', dest='host', type=str, default='0.0.0.0',53        help='Server host')54    parser.add_argument(55        '--kwargs', '--with', dest='kwargs', metavar='KEY=VAL', nargs='+', type=lambda kv: kv.split('='),56        help='Additional LabelStudioMLBase model initialization kwargs')57    parser.add_argument(58        '-d', '--debug', dest='debug', action='store_true',59        help='Switch debug mode')60    parser.add_argument(61        '--log-level', dest='log_level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], default=None,62        help='Logging level')63    parser.add_argument(64        '--model-dir', dest='model_dir', default=os.path.dirname(__file__),65        help='Directory where models are stored (relative to the project directory)')66    parser.add_argument(67        '--check', dest='check', action='store_true',68        help='Validate model instance before launching server')69 70    args = parser.parse_args()71 72    # setup logging level73    if args.log_level:74        logging.root.setLevel(args.log_level)75 76    def isfloat(value):77        try:78            float(value)79            return True80        except ValueError:81            return False82 83    def parse_kwargs():84        param = dict()85        for k, v in args.kwargs:86            if v.isdigit():87                param[k] = int(v)88            elif v == 'True' or v == 'true':89                param[k] = True90            elif v == 'False' or v == 'False':91                param[k] = False92            elif isfloat(v):93                param[k] = float(v)94            else:95                param[k] = v96        return param97 98    kwargs = get_kwargs_from_config()99 100    if args.kwargs:101        kwargs.update(parse_kwargs())102 103    if args.check:104        print('Check "' + SamMLBackend.__name__ + '" instance creation..')105        model = SamMLBackend(**kwargs)106 107    app = init_app(model_class=SamMLBackend)108 109    app.run(host=args.host, port=args.port, debug=args.debug)110 111else:112    # for uWSGI use113    app = init_app(model_class=SamMLBackend)114