Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pre-commit.ci] pre-commit autoupdate #32

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v4.6.0
hooks:
- id: check-ast
- id: check-toml
Expand All @@ -21,15 +21,15 @@ repos:
- id: check-merge-conflict

- repo: https://github.com/asottile/pyupgrade
rev: v3.3.0
rev: v3.17.0
hooks:
- id: pyupgrade
args:
- --py38-plus
- --keep-runtime-typing

- repo: https://github.com/PyCQA/autoflake
rev: v2.0.0
rev: v2.3.1
hooks:
- id: autoflake
args:
Expand All @@ -43,7 +43,7 @@ repos:
- __init__.py

- repo: https://github.com/pycqa/isort
rev: 5.10.1
rev: 5.13.2
hooks:
- id: isort
args:
Expand All @@ -56,7 +56,7 @@ repos:
- --gitignore

- repo: https://github.com/psf/black
rev: 22.10.0
rev: 24.8.0
hooks:
- id: black
args:
Expand All @@ -65,7 +65,7 @@ repos:
- --color

- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
rev: 7.1.1
hooks:
- id: flake8
args:
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,3 @@

## 📹Demo
<img width="90%" src="https://user-images.githubusercontent.com/66928953/217624520-21ad0631-a410-4b00-9622-3ea1dd279fbf.gif"/>

2 changes: 1 addition & 1 deletion app/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def main():
st.session_state["inferenced"] = None

models = get_models()
images = get_images()
get_images()
videos = get_videos()
video_names = get_video_names()

Expand Down
4 changes: 2 additions & 2 deletions app/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ image:
format:
- .jpg
- .png

video:
directory: /opt/ml/input/video/
format:
Expand All @@ -36,7 +36,7 @@ image_output_path:
google:
bucket: 'awesome-gcp12'
path: 'https://storage.cloud.google.com/'


server:
host: 0.0.0.0
Expand Down
18 changes: 10 additions & 8 deletions app/db_models/img.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
from sqlalchemy import Column, Table
from sqlalchemy.sql.sqltypes import INTEGER, String, VARCHAR
from ..db_config.db import meta, engine
from sqlalchemy.sql.sqltypes import VARCHAR

from ..db_config.db import engine, meta

imgs = Table('img', meta,
Column('id', VARCHAR(100), primary_key=True),
Column('input_path', VARCHAR(100)),
Column('output_path', VARCHAR(100)),
)
imgs = Table(
"img",
meta,
Column("id", VARCHAR(100), primary_key=True),
Column("input_path", VARCHAR(100)),
Column("output_path", VARCHAR(100)),
)

meta.create_all(engine)
meta.create_all(engine)
19 changes: 10 additions & 9 deletions app/db_models/user.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
from sqlalchemy import Column, Table
from sqlalchemy.sql.sqltypes import INTEGER, String
from ..db_config.db import meta, engine

from ..db_config.db import engine, meta

users = Table('users', meta,
Column('id', INTEGER(), primary_key=True),
Column('name', String(255)),
Column('email', String(255)),
Column('password', String(255)),
)
users = Table(
"users",
meta,
Column("id", INTEGER(), primary_key=True),
Column("name", String(255)),
Column("email", String(255)),
Column("password", String(255)),
)



meta.create_all(engine)
meta.create_all(engine)
8 changes: 3 additions & 5 deletions app/frontend.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import streamlit as st


def intro():
import streamlit as st

Expand All @@ -10,15 +7,16 @@ def intro():
st.markdown(
"""
**👈 Select a demo from the left**
**👈 Select a demo from the left**
### What kind of work do you want to do?
- Image
- Video
"""
)



page_names_to_funcs = {
"frontend": intro,
}
Expand Down
128 changes: 74 additions & 54 deletions app/pages/1_📷 Image.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import datetime as dt
import io
import logging
from uuid import uuid4

import httpx
import streamlit as st
from config import read_config
from PIL import Image
import io
import httpx
from uuid import UUID, uuid4
import datetime as dt



log = logging.getLogger(__file__)

Expand All @@ -16,31 +15,35 @@
CONFIG = read_config()
BASE_URL = f"http://localhost:{CONFIG['server']['port']}"


def make_database_dir():
import os

_input_path = CONFIG["image_input_path"]["path"]
_output_path = CONFIG["image_output_path"]["path"]

def _mkdir(path):
if not os.path.exists(path):
os.makedirs(path)

_mkdir(_input_path)
_mkdir(_output_path)



def get_models() -> dict:
if st.session_state["models"] is None:
log.info("get_models()")
r = httpx.get(BASE_URL + "/models")
models = r.json()
st.session_state["models"] = models
else:
#log.info("get_models22()")
# log.info("get_models22()")
models = st.session_state["models"]
return [model["name"] for model in models]


def session_init():
print('session init')
print("session init")
if "inferenced" not in st.session_state:
st.session_state["inferenced"] = None
if "models" not in st.session_state:
Expand All @@ -51,98 +54,115 @@ def session_init():
st.session_state["name"] = None
if "image_input_path" not in st.session_state:
st.session_state["image_input_path"] = None



def inference(model_name: str, media_filepath: str) -> str:
log.info(f"inference(model_name={model_name!r}, media_filepath={media_filepath!r})")

# 현재 페이지 상단에 spinner가 뜬다.
with st.spinner("Predicting results. Please wait a moment!"):
r = httpx.post(
BASE_URL + "/inference",
json={"model_name": model_name, "media_filepath": media_filepath},
timeout = None) # timeout 설정

timeout=None,
) # timeout 설정

log.info(f"inference: r.json() = {r.json()!r}")
if r.status_code == 200:
output_filepath = r.json()
log.info(f"inference: output_filepath = {output_filepath!r}")
st.session_state["inferenced"] = output_filepath



def mysql_image_insert(id: str, input_path: str, output_path: str):
r = httpx.post(BASE_URL+ "/img/insert",
json={"id": id, "input_path": input_path, "output_path": output_path},
timeout=None)
r = httpx.post(
BASE_URL + "/img/insert",
json={"id": id, "input_path": input_path, "output_path": output_path},
timeout=None,
)
if r.status_code == 200:
log.info("mysql data save success")
else:
log.error("mysql data save fail")



def insert_gcs(path: str, name: str, flag: str):
r = httpx.post(BASE_URL+"/img/gcs",
json={"path": path, "name": name},
timeout=None)
r = httpx.post(
BASE_URL + "/img/gcs", json={"path": path, "name": name}, timeout=None
)
if r.status_code == 200:
log.info(f"gcs {flag} image save success")
else:
log.info(f"gcs {flag} image save success")



def main():
st.title("Sixth Sense Image Demo Page")

# session 초기화
session_init()
session_init()
make_database_dir()

models = get_models()
model_name = st.selectbox("Model List", models)

uploaded_file = st.file_uploader("Choose an image", type=["jpg", "jpeg", "png"])

col1, col2 = st.columns(2)

if uploaded_file:
image_bytes = uploaded_file.getvalue()
image = Image.open(io.BytesIO(image_bytes))

with col1:
st.image(image, caption='Uploaded Image')
st.image(image, caption="Uploaded Image")

if st.session_state["upload_file"] is None:
# input 이미지 서버에 저장
name = dt.datetime.today().strftime("%Y%m%d") + '_' + str(uuid4()) # 날짜_uuid4
name = (
dt.datetime.today().strftime("%Y%m%d") + "_" + str(uuid4())
) # 날짜_uuid4
image_input_path = f'{CONFIG["image_input_path"]["path"]}/{name}.jpg'
image.save(image_input_path, 'JPEG')

st.button("Inference",
on_click=inference,
kwargs={"model_name": model_name, "media_filepath": image_input_path})

image.save(image_input_path, "JPEG")

st.button(
"Inference",
on_click=inference,
kwargs={
"model_name": model_name,
"media_filepath": image_input_path,
},
)

# input 이미지 gcs에 저장
insert_gcs(image_input_path, f'{name}.jpg', 'input')
insert_gcs(image_input_path, f"{name}.jpg", "input")

st.session_state["upload_file"] = True
st.session_state["name"] = name
st.session_state["image_input_path"] = image_input_path

with col2:
if st.session_state["inferenced"] is not None:
st.image(st.session_state["inferenced"], caption='Infenece Image')
st.image(st.session_state["inferenced"], caption="Infenece Image")
# output 이미지 gcs에 저장
insert_gcs(st.session_state["inferenced"], f'inferenced_{st.session_state["name"]}.jpg', 'output')
insert_gcs(
st.session_state["inferenced"],
f'inferenced_{st.session_state["name"]}.jpg',
"output",
)
# mysql 이미지 data 저장
mysql_image_insert(st.session_state["name"], f'{CONFIG["google"]["path"]}{CONFIG["google"]["bucket"]}/{st.session_state["name"]}.jpg',
f'{CONFIG["google"]["path"]}{CONFIG["google"]["bucket"]}/inferenced_{st.session_state["name"]}.jpg')

mysql_image_insert(
st.session_state["name"],
f'{CONFIG["google"]["path"]}{CONFIG["google"]["bucket"]}/{st.session_state["name"]}.jpg',
f'{CONFIG["google"]["path"]}{CONFIG["google"]["bucket"]}/inferenced_{st.session_state["name"]}.jpg',
)

else:
del st.session_state["upload_file"]
del st.session_state["inferenced"]
del st.session_state["name"]
del st.session_state["image_input_path"]






if __name__ == '__main__':

if __name__ == "__main__":
main()
Loading
Loading