huedaya commited on
Commit
6d1ad5e
·
1 Parent(s): d8877a6
Files changed (7) hide show
  1. .env +12 -0
  2. Dockerfile +20 -0
  3. README.md +8 -8
  4. app.py +53 -0
  5. docker-compose.yml +24 -0
  6. packages.txt +3 -0
  7. requirements.txt +5 -0
.env ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Environment variables for docker-compose.yml
2
+ LOG_LEVEL=DEBUG
3
+
4
+ ## Host
5
+ HOST=localhost
6
+ APP_ENV=prod
7
+
8
+ # App Config
9
+ MK_APP_ID=hf-background-remover
10
+ APP_PATH=/
11
+ APP_HTTP_PORT=1070
12
+ APP_HTTPS_PORT=5070
Dockerfile ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # start with a base image
2
+ FROM python:3.8.9
3
+
4
+ RUN apt-get update && apt-get install -y ffmpeg libsm6 libxext6 cmake libgl1-mesa-glx
5
+ WORKDIR /home/user/app
6
+ RUN mkdir app
7
+ RUN pip install pip==22.0.2
8
+ WORKDIR /home/user
9
+ RUN apt-get update && apt-get install -y git-lfs
10
+ COPY packages.txt /root/packages.txt
11
+ COPY requirements.txt /home/user/app/requirements.txt
12
+ RUN git lfs install
13
+ RUN apt-get update && xargs -r -a /root/packages.txt apt-get install -y
14
+ COPY ./ /home/user/app
15
+ RUN pip install -r /home/user/app/requirements.txt
16
+ # COPY --from=lfs /app /home/user/app
17
+ WORKDIR /home/user/app
18
+
19
+ EXPOSE 7860
20
+ CMD ["python", "app.py"]
README.md CHANGED
@@ -1,13 +1,13 @@
1
  ---
2
- title: Hf Background Remover
3
- emoji: 📉
4
- colorFrom: gray
5
- colorTo: green
6
- sdk: streamlit
7
- sdk_version: 1.15.2
8
  app_file: app.py
9
  pinned: false
10
- license: cc
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: rembg
3
+ emoji: 🖼️✂️
4
+ colorFrom: purple
5
+ colorTo: red
6
+ sdk: gradio
7
+ sdk_version: 2.9.4
8
  app_file: app.py
9
  pinned: false
 
10
  ---
11
 
12
+ # rembg
13
+
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ from flask import Flask, jsonify, request
3
+ import cv2
4
+ from rembg.session_factory import new_session
5
+ from rembg import remove
6
+ import requests
7
+ import base64
8
+ import numpy as np
9
+ import streamlit as st
10
+
11
+ app = Flask(__name__)
12
+
13
+ @app.route("/")
14
+ def indexApi():
15
+ return jsonify({"output": "okay"})
16
+
17
+ @app.route("/remove")
18
+ def removeApi():
19
+ image_url = request.form.get("image_url")
20
+ key = request.form.get("key")
21
+ model = request.form.get("model")
22
+
23
+ if (model == None):
24
+ model = "u2netp"
25
+
26
+ # reject if key not the same
27
+ apiKey = st.secrets["Api-Key"]
28
+ if apiKey != key:
29
+ return jsonify({
30
+ "image_url": image_url,
31
+ "model": model,
32
+ "result": "Invalid API Key",
33
+ }), 400
34
+
35
+
36
+ response = requests.get(image_url)
37
+
38
+ arr = np.asarray(bytearray(response.content), dtype=np.uint8)
39
+ image = cv2.imdecode(arr, -1) # 'Load it as it is'
40
+
41
+ result = remove(image, session=new_session(model))
42
+
43
+ #encode result
44
+ base64_string = base64.b64encode(cv2.imencode('.png', result)[1]).decode()
45
+
46
+ return jsonify({
47
+ "image_url": image_url,
48
+ "model": model,
49
+ "result": base64_string,
50
+ })
51
+
52
+ if __name__ == "__main__":
53
+ app.run(host="0.0.0.0", port=7860)
docker-compose.yml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.9"
2
+ services:
3
+ app:
4
+ build: . # uncomment if you're building image using Dockerfile
5
+ # image: huedaya/flask-opencv:latest
6
+ container_name: app-${MK_APP_ID}
7
+ volumes:
8
+ - ./:/home/user/app/
9
+ ports:
10
+ - 7860:7860
11
+ - 7861:7861
12
+ networks:
13
+ - proxy
14
+ labels:
15
+ - "traefik.http.routers.${MK_APP_ID}-secure.rule=(Host(`${HOST}`))"
16
+ - "traefik.http.routers.${MK_APP_ID}-secure.entrypoints=websecure"
17
+ - "traefik.docker.network=proxy"
18
+ - "traefik.enable=true"
19
+ - "traefik.http.middlewares.${MK_APP_ID}-ratelimit.ratelimit.average=5"
20
+ - "traefik.http.middlewares.${MK_APP_ID}-ratelimit.ratelimit.burst=2"
21
+
22
+ networks:
23
+ proxy:
24
+ external: true
packages.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ ffmpeg
2
+ libsm6
3
+ libxext6
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ requests
2
+ streamlit
3
+ opencv-python
4
+ rembg
5
+ flask