image_interprebility/restful_main.py
2023-06-05 15:11:03 +08:00

52 lines
2.0 KiB
Python

from flask import Flask, jsonify
from flask_cors import CORS
from flask_restful import Api, Resource, reqparse
from utils import get_log
from task.image_interpretability import ImageInterpretability
import ast
app = Flask(__name__, static_folder='', static_url_path='')
app.config['UPLOAD_FOLDER'] = "./upload_data"
cors = CORS(app, resources={r"*": {"origins": "*"}})
api = Api(app)
class Interpretability2Image(Resource):
def post(self):
parser = reqparse.RequestParser()
parser.add_argument('image_name', type=str, required=True, default='', help='')
parser.add_argument('image_path', type=str, required=True, default='', help='')
parser.add_argument('Interpretability_method', type=str, required=True, default='textfooler', help='')
parser.add_argument('model_info', type=str, required=True, default={}, help='')
parser.add_argument('output_path', type=str, required=True, default='', help='')
parser.add_argument('kwargs', type=str, required=True, default={}, help='')
args = parser.parse_args()
print(args)
args.model_info = ast.literal_eval(args.model_info)
args.dataset_info = ast.literal_eval(args.dataset_info)
Interpretability = ImageInterpretability()
rst = Interpretability.perform(
image_name=args.model_info.image_name,
image_path=args.model_info.image_path,
Interpretability_method=args.Interpretability_method,
model_name=args.model_info.model_name,
output_path=args.output_path,
**args.kwargs
)
return jsonify(rst)
def get(self):
msg = get_log(log_path=Interpretability2Image.LOG_PATH)
if msg:
return jsonify({'status': 1, 'log': msg})
else:
return jsonify({'status': 0, 'log': None})
api.add_resource(Interpretability2Image, '/Interpretability2Image')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5002, debug=True)