File size: 911 Bytes
fc10439
504405e
fc10439
 
504405e
fc10439
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504405e
fc10439
504405e
 
 
 
 
 
 
fc10439
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import gc
from tensorflow.keras import backend as K
from app.pipelines.main_pipeline import load_model as load_maize, predict_image

AUTO_UNLOAD = False
_cache = {}

async def predict(req, file):
    name = req.model_name
    # choose loader/predictor
    # if name == "sentiment":
        # loader, predictor, data = load_sentiment, predict_sentiment, req.text
    if name.startswith("xception_"):
        loader, predictor, data = load_maize, predict_image, await file.read()
    else:
        raise ValueError("Unknown model")

    # load-on-demand
    if name not in _cache:
        _cache[name] = loader(name)
    model = _cache[name]


    label, conf, disease_data = predictor(data, model, name)

    if AUTO_UNLOAD:
        del _cache[name]
        del model
        K.clear_session()
        gc.collect()

    return {"model": name, "label": label, "confidence": conf, "recommendation": disease_data}