Skip to content

Commit

Permalink
Implement service for places365
Browse files Browse the repository at this point in the history
  • Loading branch information
derneuere committed Jun 5, 2024
1 parent e587ae8 commit 91a5e7c
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 12 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ densecap/data/models/densecap/densecap-pretrained-vgg16.t7
thumbnails
media
samplephotos
tags
Conv2d.patch
Linear.patch
Sequential.patch
Expand Down
File renamed without changes.
48 changes: 48 additions & 0 deletions service/tags/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import time

import gevent
from flask import Flask, request
from gevent.pywsgi import WSGIServer
from places365.places365 import Places365

app = Flask(__name__)

places365_instance = None
last_request_time = None


def log(message):
print("tags: {}".format(message))


@app.route("/generate-tags", methods=["POST"])
def generate_tags():
global last_request_time
# Update last request time
last_request_time = time.time()

try:
data = request.get_json()
image_path = data["image_path"]
confidence = data["confidence"]
except Exception as e:
print(str(e))
return "", 400

global places365_instance

if places365_instance is None:
places365_instance = Places365()
return {"tags": places365_instance.inference_places365(image_path, confidence)}, 201


@app.route("/health", methods=["GET"])
def health():
return {"last_request_time": last_request_time}, 200


if __name__ == "__main__":
log("service starting")
server = WSGIServer(("0.0.0.0", 8011), app)
server_thread = gevent.spawn(server.serve_forever)
gevent.joinall([server_thread])
Empty file.
20 changes: 11 additions & 9 deletions api/places365/places365.py → service/tags/places365/places365.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,31 @@
import os

import numpy as np
import places365.wideresnet as wideresnet
import torch
from django.conf import settings
from PIL import Image
from torch.autograd import Variable as V
from torch.nn import functional as F
from torchvision import transforms as trn

import api.places365.wideresnet as wideresnet
from api.util import logger

# import warnings

torch.nn.Module.dump_patches = True
dir_places365_model = settings.PLACES365_ROOT
dir_places365_model = os.path.join(
"/", "protected_media", "data_models", "places365", "model"
)


class Places365:
labels_and_model_are_load = False

def unload(self):
del self.model
del self.classes
del self.W_attribute
del self.labels_IO
del self.labels_attribute
del self.labels_and_model_are_load
self.model = None
self.classes = None
self.W_attribute = None
Expand Down Expand Up @@ -184,8 +189,5 @@ def inference_places365(self, img_path, confidence):

return res
except Exception as e:
logger.error("Error in Places365 inference")
print("tags: {}".format("Error in Places365 inference"))
raise e


place365_instance = Places365()
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
import os

import torch.nn as nn
from django.conf import settings

model_path = os.path.join(settings.MEDIA_ROOT, "data_models", "resnet18-5c106cde.pth")
model_path = os.path.join(
"/", "protected_media", "data_models", "resnet18-5c106cde.pth"
)


def conv3x3(in_planes, out_planes, stride=1):
Expand Down

0 comments on commit 91a5e7c

Please sign in to comment.