Added image classification
This commit is contained in:
parent
b7b86151e8
commit
bdd48f80e0
7 changed files with 77 additions and 35 deletions
|
@ -1,18 +1,17 @@
|
|||
version: '3.8'
|
||||
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
immich_server:
|
||||
image: immich-server-dev:1.0.0
|
||||
build:
|
||||
context: .
|
||||
context: ../server
|
||||
target: development
|
||||
dockerfile: ./Dockerfile
|
||||
dockerfile: ../server/Dockerfile
|
||||
command: npm run start:dev
|
||||
expose:
|
||||
expose:
|
||||
- "3000"
|
||||
volumes:
|
||||
- .:/usr/src/app
|
||||
- ../server:/usr/src/app
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /usr/src/app/node_modules
|
||||
env_file:
|
||||
|
@ -27,7 +26,7 @@ services:
|
|||
container_name: immich_redis
|
||||
image: redis:6.2
|
||||
networks:
|
||||
- immich_network
|
||||
- immich_network
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
|
@ -44,7 +43,7 @@ services:
|
|||
ports:
|
||||
- 5432:5432
|
||||
networks:
|
||||
- immich_network
|
||||
- immich_network
|
||||
|
||||
nginx:
|
||||
container_name: proxy_nginx
|
||||
|
@ -61,7 +60,36 @@ services:
|
|||
depends_on:
|
||||
- immich_server
|
||||
|
||||
immich_tf_fastapi:
|
||||
container_name: immich_tf_fastapi
|
||||
image: tensor_flow_fastapi:1.0.0
|
||||
restart: always
|
||||
command: uvicorn app.main:app --proxy-headers --host 0.0.0.0 --port 8000 --reload
|
||||
build:
|
||||
context: ../machine_learning
|
||||
target: gpu
|
||||
dockerfile: ../machine_learning/Dockerfile
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
volumes:
|
||||
- ../machine_learning/app:/code/app
|
||||
- ${UPLOAD_LOCATION}:/code/app/upload
|
||||
ports:
|
||||
- 2285:8000
|
||||
expose:
|
||||
- "8000"
|
||||
depends_on:
|
||||
- database
|
||||
networks:
|
||||
- immich_network
|
||||
|
||||
|
||||
networks:
|
||||
immich_network:
|
||||
volumes:
|
||||
pgdata:
|
||||
pgdata:
|
|
@ -67,14 +67,8 @@ services:
|
|||
command: uvicorn app.main:app --proxy-headers --host 0.0.0.0 --port 8000 --reload
|
||||
build:
|
||||
context: ../machine_learning
|
||||
target: cpu
|
||||
dockerfile: ../machine_learning/Dockerfile
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
volumes:
|
||||
- ../machine_learning/app:/code/app
|
||||
- ${UPLOAD_LOCATION}:/code/app/upload
|
||||
|
@ -87,7 +81,6 @@ services:
|
|||
networks:
|
||||
- immich_network
|
||||
|
||||
|
||||
networks:
|
||||
immich_network:
|
||||
volumes:
|
||||
|
|
3
machine_learning/.gitignore
vendored
3
machine_learning/.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
app/__pycache__
|
||||
app/__pycache__
|
||||
/devenv
|
|
@ -1,4 +1,5 @@
|
|||
FROM tensorflow/tensorflow:latest-gpu
|
||||
## GPU Build
|
||||
FROM tensorflow/tensorflow:latest-gpu as gpu
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
|
@ -8,4 +9,14 @@ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
|||
|
||||
COPY ./app /code/app
|
||||
|
||||
# CMD ["uvicorn", "app.main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
||||
|
||||
## CPU BUILD
|
||||
FROM python:3.8 as cpu
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
COPY ./requirements.txt /code/requirements.txt
|
||||
|
||||
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
||||
|
||||
COPY ./app /code/app
|
|
@ -1,31 +1,40 @@
|
|||
from typing import Optional
|
||||
|
||||
from fastapi import FastAPI
|
||||
from tensorflow.keras.applications.vgg16 import VGG16
|
||||
from tensorflow.keras.preprocessing import image
|
||||
from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions
|
||||
import numpy as np
|
||||
import os
|
||||
from tensorflow.keras.applications import InceptionV3
|
||||
from tensorflow.keras.applications.inception_v3 import preprocess_input, decode_predictions
|
||||
|
||||
from tensorflow.keras.preprocessing import image
|
||||
import numpy as np
|
||||
|
||||
IMG_SIZE = 299
|
||||
PREDICTION_MODEL = InceptionV3(weights='imagenet')
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
|
||||
return os.getcwd()
|
||||
return "ok"
|
||||
|
||||
|
||||
@app.get("/predict")
|
||||
def predict():
|
||||
model = VGG16(weights='imagenet', include_top=False)
|
||||
@app.get("/predict/{image_name}")
|
||||
def predict(image_name: str):
|
||||
|
||||
img_path = './app/upload/db6e94e1-ab1d-4ff0-a3b7-ba7d9e7b9d84/thumb/76f0308a9a53080e/zMGrPdjRoOU.jpeg'
|
||||
img = image.load_img(img_path, target_size=(224, 224))
|
||||
img_path = f'./app/upload/eb077301-2773-4ef1-aa2a-215ceb8a4383/thumb/C37F22E9-5F07-4DCA-A3EB-5BCCE93270C0/{image_name}'
|
||||
img = image.load_img(img_path, target_size=(IMG_SIZE, IMG_SIZE))
|
||||
x = image.img_to_array(img)
|
||||
x = np.expand_dims(x, axis=0)
|
||||
x = preprocess_input(x)
|
||||
|
||||
features = model.predict(x)
|
||||
preds = PREDICTION_MODEL.predict(x)
|
||||
result = decode_predictions(preds, top=3)[0]
|
||||
payload = []
|
||||
for _, value, _ in result:
|
||||
payload.append(value)
|
||||
|
||||
return "ok"
|
||||
return payload
|
||||
|
||||
|
||||
def setup():
|
||||
pass
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
fastapi>=0.68.0,<0.69.0
|
||||
pydantic>=1.8.0,<2.0.0
|
||||
uvicorn>=0.15.0,<0.16.0
|
||||
# tensorflow==2.2.0
|
||||
# numpy==1.22.2
|
||||
tensorflow==2.8.0
|
||||
numpy==1.22.2
|
||||
pillow==9.0.1
|
Loading…
Add table
Reference in a new issue