in djl-object-detection-inference-docker-lambda/src/main/java/com/example/App.java [39:78]
public void handleRequest(InputStream is, OutputStream os, Context context) throws IOException {
LambdaLogger logger = context.getLogger();
String input = Utils.toString(is);
Request request = GSON.fromJson(input, Request.class);
String inputImageUrl = request.getInputImageUrl();
logger.log("inputImageUrl: " + inputImageUrl);
String backbone;
if ("TensorFlow".equals(Engine.getInstance().getEngineName())) {
backbone = "mobilenet_v2";
} else {
backbone = "resnet50";
}
logger.log("backbone: " + backbone);
Criteria<Image, DetectedObjects> criteria =
Criteria.builder()
.optApplication(Application.CV.OBJECT_DETECTION)
.setTypes(Image.class, DetectedObjects.class)
.optFilter("backbone", backbone)
.build();
try {
try (ZooModel<Image, DetectedObjects> model = ModelZoo.loadModel(criteria)) {
try (Predictor<Image, DetectedObjects> predictor = model.newPredictor()) {
Image image = ImageFactory.getInstance().fromUrl(inputImageUrl);
DetectedObjects detection = predictor.predict(image);
logger.log("detection: " + detection);
os.write(GSON.toJson(detection).getBytes(StandardCharsets.UTF_8));
}
}
} catch (RuntimeException | ModelException | TranslateException e) {
logger.log("Failed handle input: " + input);
logger.log(e.toString());
String msg = "{\"status\": \"invoke failed: " + e.toString() + "\"}";
os.write(msg.getBytes(StandardCharsets.UTF_8));
}
}