zain2003 deCoold commited on
Commit
4fb0480
·
0 Parent(s):

Duplicate from deCoold/flowAI_API

Browse files

Co-authored-by: Andrea De Cosmo <deCoold@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.pt.tmp filter=lfs diff=lfs merge=lfs -text
37
+ *.tmp filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use the official Python image
2
+ FROM python:3.9
3
+
4
+ # Set the working directory
5
+ WORKDIR /app
6
+
7
+ # Copy the requirements file
8
+ COPY requirements.txt requirements.txt
9
+
10
+ # Copy the application code
11
+ COPY app.py app.py
12
+
13
+ # Clone the shap-e repository
14
+ RUN git clone https://github.com/openai/shap-e.git
15
+
16
+ # Install dependencies
17
+ RUN pip install -r requirements.txt
18
+
19
+ # Expose the desired port (same as in your app.py)
20
+ EXPOSE 5000
21
+
22
+ # Set the entry point command
23
+ CMD python ./app.py
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: FlowAI API
3
+ emoji: 👁
4
+ colorFrom: green
5
+ colorTo: green
6
+ sdk: docker
7
+ pinned: false
8
+ license: apache-2.0
9
+ duplicated_from: deCoold/flowAI_API
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, send_file
2
+ from flask_cors import CORS
3
+
4
+
5
+ import torch
6
+
7
+
8
+ import shap_e
9
+ from shap_e.diffusion.sample import sample_latents
10
+ from shap_e.diffusion.gaussian_diffusion import diffusion_from_config
11
+ from shap_e.models.download import load_model, load_config
12
+ from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, decode_latent_mesh
13
+
14
+
15
+ import os
16
+
17
+
18
+ # To remove on diploy
19
+ #os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'max_split_size_mb:768'
20
+
21
+ app = Flask(__name__)
22
+
23
+ app.config['CORS_HEADERS'] = 'Content-Type'
24
+ cors = CORS(app, resorces={r'/generate_3d': {"origins": '*'}})
25
+
26
+
27
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
28
+
29
+
30
+ print('Device loaded: ', device)
31
+ print('Loading models...')
32
+
33
+ path_file = os.path.abspath(os.path.join(os.path.dirname(__file__), 'shape_e_model_cache'))
34
+ trasmitter_path = os.path.join(path_file, 'transmitter')
35
+
36
+ xm = load_model(trasmitter_path, device=device)
37
+ model = load_model('text300M', device=device)
38
+ diffusion = diffusion_from_config(load_config('diffusion'))
39
+
40
+ @app.route('/generate_3d', methods=['POST', 'OPTIONS'])
41
+ def generate_3d():
42
+
43
+ if request.method == 'OPTIONS':
44
+ return '', 200
45
+
46
+ print('Generating 3D...')
47
+
48
+ batch_size = 1
49
+ guidance_scale = 15.0
50
+ prompt = request.json['prompt']
51
+
52
+ latents = sample_latents(
53
+ batch_size=batch_size,
54
+ model=model,
55
+ diffusion=diffusion,
56
+ guidance_scale=guidance_scale,
57
+ model_kwargs=dict(texts=[prompt] * batch_size),
58
+ progress=True,
59
+ clip_denoised=True,
60
+ use_fp16=True,
61
+ use_karras=True,
62
+ karras_steps=64,
63
+ sigma_min=1E-3,
64
+ sigma_max=160,
65
+ s_churn=0,
66
+ )
67
+
68
+ render_mode = 'nerf'
69
+ size = 64
70
+
71
+ cameras = create_pan_cameras(size, device)
72
+ for i, latent in enumerate(latents):
73
+ images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)
74
+
75
+ filename = f'tmp_mesh.obj'
76
+
77
+ t = decode_latent_mesh(xm, latents[0]).tri_mesh()
78
+ with open(filename, 'w') as f:
79
+ t.write_obj(f)
80
+
81
+ print('3D asset generated')
82
+
83
+ return send_file(filename, as_attachment=True)
84
+
85
+
86
+ if __name__ == '__main__':
87
+ app.run(port=5000, debug=True)
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ flask==2.1.0
2
+ PyYAML
3
+ ipywidgets==7.6.5
4
+ flask-cors
5
+ torch
6
+
7
+ -e ./shap-e
shap-e ADDED
@@ -0,0 +1 @@
 
 
1
+ Subproject commit 0b26c720b28fe31f8a79fc5a9dc907fbd0f67162
shap_e_model_cache/ViT-L-14.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836
3
+ size 932768134
shap_e_model_cache/diffusion_config.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ mean_type: x_start
2
+ schedule: exp
3
+ timesteps: 1024
shap_e_model_cache/text_cond.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6b4fa599a7b3c3b16c222d5f5fe56f9db9289ff0b6575fbe5c11bc97106aad4
3
+ size 1262868003
shap_e_model_cache/text_cond_config.yaml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ d_latent: 1048576
2
+ inner:
3
+ cond_drop_prob: 0.1
4
+ heads: 16
5
+ init_scale: 0.25
6
+ layers: 24
7
+ name: CLIPImagePointDiffusionTransformer
8
+ pos_emb_init_scale: 0.05
9
+ time_token_cond: true
10
+ token_cond: true
11
+ use_pos_emb: true
12
+ width: 1024
13
+ latent_ctx: 1024
14
+ name: SplitVectorDiffusion
shap_e_model_cache/transmitter.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:af02a0b85a8abdfb3919584b63c540ba175f6ad4790f574a7fef4617e5acdc3b
3
+ size 1776048343
shap_e_model_cache/transmitter.pt.tmp ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eb2cccc4de381a23364782390ab87e67168d00511ae8a12031540edbf40735c6
3
+ size 106119168
shap_e_model_cache/transmitter_config.yaml ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ encoder:
2
+ cross_attention_dataset: pcl_and_multiview_pcl
3
+ d_latent: 1024
4
+ data_ctx: 1024
5
+ fps_method: first
6
+ heads: 8
7
+ init_scale: 0.25
8
+ inner_batch_size:
9
+ - 16384
10
+ - 20
11
+ input_channels: 6
12
+ latent_bottleneck:
13
+ diffusion:
14
+ schedule: inv_parabola
15
+ schedule_args:
16
+ power: 5.0
17
+ timesteps: 1024
18
+ diffusion_prob: 0.1
19
+ name: clamp_diffusion_noise
20
+ layers: 12
21
+ max_depth: 9.0
22
+ max_unrolls: 1
23
+ min_unrolls: 1
24
+ name: PointCloudPerceiverChannelsEncoder
25
+ params_proj:
26
+ init_scale: 1.0
27
+ learned_scale: 0.0625
28
+ name: channels
29
+ use_ln: true
30
+ patch_size: 8
31
+ pointconv_hidden:
32
+ - 1024
33
+ - 1024
34
+ pointconv_padding_mode: circular
35
+ pointconv_patch_size: 8
36
+ pointconv_samples: 64
37
+ pointconv_stride: 4
38
+ pos_emb: nerf
39
+ use_depth: true
40
+ use_pointconv: true
41
+ width: 1024
42
+ name: Transmitter
43
+ renderer:
44
+ grid_size: 128
45
+ n_coarse_samples: 64
46
+ n_fine_samples: 128
47
+ name: NeRSTFRenderer
48
+ nerstf:
49
+ activation: swish
50
+ d_hidden: 256
51
+ density_activation: relu
52
+ init_scale: 0.25
53
+ initial_density_bias: 0.1
54
+ insert_direction_at: 4
55
+ meta_bias: false
56
+ meta_parameters: true
57
+ n_hidden_layers: 6
58
+ n_meta_layers: 4
59
+ name: MLPNeRSTFModel
60
+ posenc_version: nerf
61
+ separate_coarse_channels: true
62
+ separate_nerf_channels: true
63
+ trainable_meta: false
64
+ separate_shared_samples: true
65
+ void:
66
+ background:
67
+ - 0
68
+ - 0
69
+ - 0
70
+ name: VoidNeRFModel
71
+ volume:
72
+ bbox_max:
73
+ - 1.0
74
+ - 1.0
75
+ - 1.0
76
+ bbox_min:
77
+ - -1.0
78
+ - -1.0
79
+ - -1.0
80
+ name: BoundingBoxVolume
to_deploy.md ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ git add Dockerfile
2
+ git commit -m "Add application file"
3
+ git push