diff --git a/utils/utils.py b/.env
similarity index 100%
rename from utils/utils.py
rename to .env
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..e69de29
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/app/__init__.py b/app/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/__init__.py b/app/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/deps.py b/app/api/deps.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/v1/endpoints/__init__.py b/app/api/v1/endpoints/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/v1/endpoints/items.py b/app/api/v1/endpoints/items.py
new file mode 100644
index 0000000..e69de29
diff --git a/task/remove_background.py b/app/api/v1/endpoints/remove_background.py
similarity index 100%
rename from task/remove_background.py
rename to app/api/v1/endpoints/remove_background.py
diff --git a/task/rmbg2.py b/app/api/v1/endpoints/rmbg2.py
similarity index 100%
rename from task/rmbg2.py
rename to app/api/v1/endpoints/rmbg2.py
diff --git a/app/api/v1/endpoints/users.py b/app/api/v1/endpoints/users.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/api/v1/router.py b/app/api/v1/router.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/core/__init__.py b/app/core/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/core/config.py b/app/core/config.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/core/logging.py b/app/core/logging.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/core/security.py b/app/core/security.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/main.py b/app/main.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/middleware/__init__.py b/app/middleware/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/middleware/auth.py b/app/middleware/auth.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/middleware/logging.py b/app/middleware/logging.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/schemas/base.py b/app/schemas/base.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/schemas/request.py b/app/schemas/request.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/services/backend/__init__.py b/app/services/backend/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/services/jingrow/__init__.py b/app/services/jingrow/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/services/jingrow/auth.py b/app/services/jingrow/auth.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/services/jingrow/billing.py b/app/services/jingrow/billing.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/services/jingrow/client.py b/app/services/jingrow/client.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/utils/__init__.py b/app/utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/utils/utils.py b/app/utils/utils.py
new file mode 100644
index 0000000..e69de29
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..e69de29
diff --git a/output/3T8A4426_nobg.png b/output/3T8A4426_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/3T8A4426_nobg.png and /dev/null differ
diff --git a/output/tmp0kh35900_nobg.png b/output/tmp0kh35900_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmp0kh35900_nobg.png and /dev/null differ
diff --git a/output/tmp119tqook_nobg.png b/output/tmp119tqook_nobg.png
deleted file mode 100644
index 9045f12..0000000
Binary files a/output/tmp119tqook_nobg.png and /dev/null differ
diff --git a/output/tmp3v4i6y57_nobg.png b/output/tmp3v4i6y57_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmp3v4i6y57_nobg.png and /dev/null differ
diff --git a/output/tmp4d66uuvp_nobg.png b/output/tmp4d66uuvp_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmp4d66uuvp_nobg.png and /dev/null differ
diff --git a/output/tmp4kv2mhwg_nobg.png b/output/tmp4kv2mhwg_nobg.png
deleted file mode 100644
index e0875fd..0000000
Binary files a/output/tmp4kv2mhwg_nobg.png and /dev/null differ
diff --git a/output/tmp7e7ckapa_nobg.png b/output/tmp7e7ckapa_nobg.png
deleted file mode 100644
index 9045f12..0000000
Binary files a/output/tmp7e7ckapa_nobg.png and /dev/null differ
diff --git a/output/tmp972za3v4_nobg.png b/output/tmp972za3v4_nobg.png
deleted file mode 100644
index 9045f12..0000000
Binary files a/output/tmp972za3v4_nobg.png and /dev/null differ
diff --git a/output/tmp_v9_rdjz_nobg.png b/output/tmp_v9_rdjz_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmp_v9_rdjz_nobg.png and /dev/null differ
diff --git a/output/tmpb2icryq6_nobg.png b/output/tmpb2icryq6_nobg.png
deleted file mode 100644
index 9328fd1..0000000
Binary files a/output/tmpb2icryq6_nobg.png and /dev/null differ
diff --git a/output/tmpb4585ssd_nobg.png b/output/tmpb4585ssd_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmpb4585ssd_nobg.png and /dev/null differ
diff --git a/output/tmpdyscjyi5_nobg.png b/output/tmpdyscjyi5_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmpdyscjyi5_nobg.png and /dev/null differ
diff --git a/output/tmpfc5ytkx0_nobg.png b/output/tmpfc5ytkx0_nobg.png
deleted file mode 100644
index 9045f12..0000000
Binary files a/output/tmpfc5ytkx0_nobg.png and /dev/null differ
diff --git a/output/tmpisrqzyuh_nobg.png b/output/tmpisrqzyuh_nobg.png
deleted file mode 100644
index 1f47adb..0000000
Binary files a/output/tmpisrqzyuh_nobg.png and /dev/null differ
diff --git a/output/tmpktvlg1nn_nobg.png b/output/tmpktvlg1nn_nobg.png
deleted file mode 100644
index 3819c55..0000000
Binary files a/output/tmpktvlg1nn_nobg.png and /dev/null differ
diff --git a/output/tmppdj3mnpp_nobg.png b/output/tmppdj3mnpp_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmppdj3mnpp_nobg.png and /dev/null differ
diff --git a/output/tmpsrxe2mao_nobg.png b/output/tmpsrxe2mao_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmpsrxe2mao_nobg.png and /dev/null differ
diff --git a/output/tmptv1q37s9_nobg.png b/output/tmptv1q37s9_nobg.png
deleted file mode 100644
index 91ceee8..0000000
Binary files a/output/tmptv1q37s9_nobg.png and /dev/null differ
diff --git a/output/tmpxrzisy8i_nobg.png b/output/tmpxrzisy8i_nobg.png
deleted file mode 100644
index 47408df..0000000
Binary files a/output/tmpxrzisy8i_nobg.png and /dev/null differ
diff --git a/output/tmpycn_udag_nobg.png b/output/tmpycn_udag_nobg.png
deleted file mode 100644
index 9328fd1..0000000
Binary files a/output/tmpycn_udag_nobg.png and /dev/null differ
diff --git a/output/tmpym2v1swb_nobg.png b/output/tmpym2v1swb_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/output/tmpym2v1swb_nobg.png and /dev/null differ
diff --git a/output/tmpz2kzshzf_nobg.png b/output/tmpz2kzshzf_nobg.png
deleted file mode 100644
index 2b89660..0000000
Binary files a/output/tmpz2kzshzf_nobg.png and /dev/null differ
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..e6a36e9
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,8 @@
+requests>=2.31.0
+Pillow>=10.0.0
+torch>=2.0.0
+transformers>=4.30.0
+fastapi>=0.104.0
+uvicorn>=0.23.2
+python-multipart>=0.0.6
+pydantic>=2.4.2
\ No newline at end of file
diff --git a/task/output/tmp1uqgmfm9_nobg.png b/task/output/tmp1uqgmfm9_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/task/output/tmp1uqgmfm9_nobg.png and /dev/null differ
diff --git a/task/output/tmp4hma0__o_nobg.png b/task/output/tmp4hma0__o_nobg.png
deleted file mode 100644
index bef75db..0000000
Binary files a/task/output/tmp4hma0__o_nobg.png and /dev/null differ
diff --git a/task/output/tmpn8r2g6do_nobg.png b/task/output/tmpn8r2g6do_nobg.png
deleted file mode 100644
index 9045f12..0000000
Binary files a/task/output/tmpn8r2g6do_nobg.png and /dev/null differ
diff --git a/task/requirements.txt b/task/requirements.txt
deleted file mode 100644
index e846745..0000000
--- a/task/requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-requests>=2.31.0
-Pillow>=10.0.0
-torch>=2.0.0
-transformers>=4.30.0
\ No newline at end of file
diff --git a/task/rmbg.py b/task/rmbg.py
deleted file mode 100644
index 68188db..0000000
--- a/task/rmbg.py
+++ /dev/null
@@ -1,106 +0,0 @@
-import os
-import gradio as gr
-from gradio_imageslider import ImageSlider
-from loadimg import load_img
-import spaces
-from transformers import AutoModelForImageSegmentation
-import torch
-from torchvision import transforms
-
-torch.set_float32_matmul_precision(["high", "highest"][0])
-
-birefnet = AutoModelForImageSegmentation.from_pretrained(
- "briaai/RMBG-2.0", trust_remote_code=True
-)
-birefnet.to("cuda")
-transform_image = transforms.Compose(
- [
- transforms.Resize((1024, 1024)),
- transforms.ToTensor(),
- transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
- ]
-)
-
-output_folder = 'output_images'
-if not os.path.exists(output_folder):
- os.makedirs(output_folder)
-
-def fn(image):
- im = load_img(image, output_type="pil")
- im = im.convert("RGB")
- origin = im.copy()
- image = process(im)
- image_path = os.path.join(output_folder, "no_bg_image.png")
- image.save(image_path)
- return (image, origin), image_path
-
-@spaces.GPU
-def process(image):
- image_size = image.size
- input_images = transform_image(image).unsqueeze(0).to("cuda")
- # Prediction
- with torch.no_grad():
- preds = birefnet(input_images)[-1].sigmoid().cpu()
- pred = preds[0].squeeze()
- pred_pil = transforms.ToPILImage()(pred)
- mask = pred_pil.resize(image_size)
- image.putalpha(mask)
- return image
-
-def process_file(f):
- name_path = f.rsplit(".",1)[0]+".png"
- im = load_img(f, output_type="pil")
- im = im.convert("RGB")
- transparent = process(im)
- transparent.save(name_path)
- return name_path
-
-slider1 = ImageSlider(label="RMBG-2.0", type="pil")
-slider2 = ImageSlider(label="RMBG-2.0", type="pil")
-image = gr.Image(label="Upload an image")
-image2 = gr.Image(label="Upload an image",type="filepath")
-text = gr.Textbox(label="Paste an image URL")
-png_file = gr.File(label="output png file")
-
-
-chameleon = load_img("giraffe.jpg", output_type="pil")
-
-url = "http://farm9.staticflickr.com/8488/8228323072_76eeddfea3_z.jpg"
-
-tab1 = gr.Interface(
- fn, inputs=image, outputs=[slider1, gr.File(label="output png file")], examples=[chameleon], api_name="image"
-)
-
-tab2 = gr.Interface(fn, inputs=text, outputs=[slider2, gr.File(label="output png file")], examples=[url], api_name="text")
-tab3 = gr.Interface(process_file, inputs=image2, outputs=png_file, examples=["giraffe.jpg"], api_name="png")
-
-
-demo = gr.TabbedInterface(
- [tab1, tab2], ["input image", "input url"], title = (
- "RMBG-2.0 for background removal
"
- ""
- "Background removal model developed by "
- "BRIA.AI, trained on a carefully selected dataset,
"
- "and is available as an open-source model for non-commercial use.
"
- " For testing upload your image and wait.
"
- "Commercial use license | "
- "Model card | "
- "Blog"
- "
"
- ""
- "API Endpoint available on: "
- "Bria.ai, "
- "fal.ai
"
- "ComfyUI node is available here: "
- "ComfyUI Node
"
- "Purchase commercial weigths for commercial use: "
- "here"
- ""
-)
-
-
-
-)
-
-if __name__ == "__main__":
- demo.launch(show_error=True)
\ No newline at end of file
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..e69de29