suny-sht commited on
Commit
076275f
·
1 Parent(s): 2f53b9e
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. README.md +2 -2
  3. app.py +226 -0
  4. gradio_example_images/baloo.png +3 -0
  5. gradio_example_images/bear1.png +3 -0
  6. gradio_example_images/bear2.png +3 -0
  7. gradio_example_images/bear3.png +3 -0
  8. gradio_example_images/bear4.png +3 -0
  9. gradio_example_images/bears/.DS_Store +0 -0
  10. gradio_example_images/bears/baloo.png +3 -0
  11. gradio_example_images/bears/bear1.png +3 -0
  12. gradio_example_images/bears/bear2.png +3 -0
  13. gradio_example_images/bears/bear3.png +3 -0
  14. gradio_example_images/bears/bear4.png +3 -0
  15. gradio_example_images/bears/dumbo.png +3 -0
  16. gradio_example_images/bears/elephant1.png +3 -0
  17. gradio_example_images/bears/elephant2.png +3 -0
  18. gradio_example_images/bears/horse1.png +3 -0
  19. gradio_example_images/bears/horse2.png +3 -0
  20. gradio_example_images/bears/horse3.png +3 -0
  21. gradio_example_images/bears/horseanime.png +3 -0
  22. gradio_example_images/bears/mylittlepony.png +3 -0
  23. gradio_example_images/bears/phanpy.png +3 -0
  24. gradio_example_images/bears/ponyta.png +3 -0
  25. gradio_example_images/bears/winnie.png +3 -0
  26. gradio_example_images/dumbo.png +3 -0
  27. gradio_example_images/elephant1.png +3 -0
  28. gradio_example_images/elephant2.png +3 -0
  29. gradio_example_images/horse1.png +3 -0
  30. gradio_example_images/horse2.png +3 -0
  31. gradio_example_images/horse3.png +3 -0
  32. gradio_example_images/horseanime.png +3 -0
  33. gradio_example_images/mylittlepony.png +3 -0
  34. gradio_example_images/phanpy.png +3 -0
  35. gradio_example_images/ponyta.png +3 -0
  36. gradio_example_images/winnie.png +3 -0
  37. models/shapes/bear.obj +0 -0
  38. models/shapes/elephant.obj +0 -0
  39. models/shapes/horse.obj +0 -0
  40. models/weights/bear.pth +3 -0
  41. models/weights/bear_cse.pth +3 -0
  42. models/weights/bear_lbo.pth +3 -0
  43. models/weights/elephant.pth +3 -0
  44. models/weights/elephant_cse.pth +3 -0
  45. models/weights/elephant_lbo.pth +3 -0
  46. models/weights/horse.pth +3 -0
  47. models/weights/horse_cse.pth +3 -0
  48. models/weights/horse_lbo.pth +3 -0
  49. models/weights/sphere_faces.pth +3 -0
  50. models/weights/sphere_verts.pth +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* 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
 
 
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
+ *.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,8 +1,8 @@
1
  ---
2
  title: Shic
3
- emoji: 🐠
4
  colorFrom: purple
5
- colorTo: purple
6
  sdk: gradio
7
  sdk_version: 4.39.0
8
  app_file: app.py
 
1
  ---
2
  title: Shic
3
+ emoji: 📊
4
  colorFrom: purple
5
+ colorTo: green
6
  sdk: gradio
7
  sdk_version: 4.39.0
8
  app_file: app.py
app.py ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ import numpy as np
4
+ import trimesh as tm
5
+ from src.model import DinoV2
6
+ from src.shape_model import CSE
7
+ from PIL import Image, ImageDraw
8
+ import torch
9
+ from torchvision import transforms
10
+ import matplotlib.pyplot as plt
11
+ import hashlib
12
+
13
+ def image_hash(image):
14
+ """Generate a hash for an image."""
15
+ image_bytes = image.tobytes()
16
+ hash_function = hashlib.sha256()
17
+ hash_function.update(image_bytes)
18
+ return hash_function.hexdigest()
19
+
20
+
21
+ #device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
22
+ device = torch.device('cpu')
23
+ models = {}
24
+ for class_name in ['bear', 'horse', 'elephant']:
25
+ print(f'Loading model weights for {class_name}')
26
+ models[class_name] = {
27
+ 'image_encoder': DinoV2(16),
28
+ 'cse': CSE(class_name=class_name, num_basis=64, device=device)
29
+ }
30
+ models[class_name]['image_encoder'].load_state_dict(torch.load(f'./models/weights/{class_name}.pth', map_location=device))
31
+ models[class_name]['cse'].load_state_dict(torch.load(f'./models/weights/{class_name}_cse.pth', map_location=device))
32
+ models[class_name]['cse'].functional_basis = torch.load(f'./models/weights/{class_name}_lbo.pth', map_location=device)
33
+
34
+ models[class_name]['image_encoder'] = models[class_name]['image_encoder'].to(device)
35
+ models[class_name]['cse'] = models[class_name]['cse'].to(device)
36
+ models[class_name]['cse'].functional_basis = models[class_name]['cse'].functional_basis.to(device)
37
+ models[class_name]['cse'].weight_matrix = models[class_name]['cse'].weight_matrix.to(device)
38
+
39
+ models[class_name]['shape_feats'] = models[class_name]['cse']().to(device)
40
+
41
+ # Convert PIL image to a format your model expects (e.g., torch.Tensor)
42
+ transform = transforms.Compose([
43
+ transforms.Resize((224, 224)),
44
+ transforms.ToTensor(),
45
+ transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
46
+ ])
47
+
48
+ cached_features = {'bear': {}, 'horse': {}, 'elephant': {}}
49
+
50
+ text_description = """
51
+ # Demo for SHIC: Shape-Image Correspondences with no Keypoint Superivision (ECCV 2024)
52
+ Project website: https://www.robots.ox.ac.uk/~vgg/research/shic/
53
+
54
+ - **Step 1:** First select a class (now it defaults to 'bear')
55
+ - **Step 2:** Upload an image of an animal from that class (or select one of the provided examples)
56
+ - **Step 3:** Click on the image (somewhere over the object) to see the image-to-shape correspondences. You can keep clicking on the input image to see new correspondences.
57
+
58
+ Notes:
59
+ - You can click and drag to rotate the 3D shape
60
+ - Currently the demo supports bears, horses, and elephants. Other classes coming soon!
61
+ - Make sure you have selected the correct class for your image (It works cross-class too though!)
62
+ """
63
+
64
+ example_images_dir = './gradio_example_images/'
65
+ example_images_names = [
66
+ 'bear1.png', 'bear2.png', 'bear3.png', 'winnie.png',
67
+ 'horse1.png', 'horse2.png', 'mylittlepony.png', 'ponyta.png',
68
+ 'elephant1.png', 'elephant2.png', 'dumbo.png', 'phanpy.png'
69
+ ]
70
+ example_images = [os.path.join(example_images_dir, img) for img in example_images_names]
71
+ sphere_verts_ = torch.load(f'./models/weights/sphere_verts.pth', map_location=device)
72
+ sphere_faces_ = torch.load(f'./models/weights/sphere_faces.pth', map_location=device)
73
+ def center_crop(img):
74
+ """
75
+ Center crops an image to the target size of 224x224.
76
+ """
77
+ width, height = img.size # Get dimensions
78
+ # Calculate the target size for center cropping
79
+ target_size = min(width, height)
80
+
81
+ # Calculate the coordinates for center cropping
82
+ left = (width - target_size) // 2
83
+ top = (height - target_size) // 2
84
+ right = left + target_size
85
+ bottom = top + target_size
86
+
87
+ # Perform center cropping
88
+ cropped_img = img.crop((left, top, right, bottom))
89
+
90
+ return cropped_img
91
+
92
+ def draw_point_on_image(image, x_, y_):
93
+ """Draws a red dot on a copy of the image at the specified point."""
94
+ # Make a copy of the image to avoid altering the original
95
+ image_copy = image.copy()
96
+ draw = ImageDraw.Draw(image_copy)
97
+ x, y = x_, y_ # Adjust these based on the actual structure of `point`
98
+ dot_radius = image.size[0] // 100
99
+ # Draw a red dot
100
+ draw.ellipse([(y-dot_radius, x-dot_radius), (y+dot_radius, x+dot_radius)], fill='red')
101
+
102
+ return image_copy
103
+
104
+ def rotate_y(vertices, angle_degrees):
105
+ angle_radians = np.radians(angle_degrees)
106
+ rotation_matrix = np.array([
107
+ [np.cos(angle_radians), 0, np.sin(angle_radians)],
108
+ [0, 1, 0],
109
+ [-np.sin(angle_radians), 0, np.cos(angle_radians)]
110
+ ])
111
+
112
+ # Assuming vertices is a numpy array of shape (N, 3)
113
+ rotated_vertices = np.dot(vertices, rotation_matrix)
114
+ return rotated_vertices
115
+
116
+ def make_final_mesh(verts, faces, similarities):
117
+ vert_argmax = similarities.argmax(dim=1)
118
+ vertex = verts[vert_argmax]
119
+ color=[255, 0, 0]
120
+
121
+ vertex_colors=similarities.transpose(1,0).cpu().detach().numpy()
122
+ # to viridis color map
123
+ vertex_colors = plt.cm.viridis(vertex_colors)[:, 0, :3]
124
+
125
+ num_verts_so_far = len(verts)
126
+
127
+
128
+ # Create a sphere mesh
129
+
130
+ # Scale and translate the sphere to the desired location and size
131
+ scale_dot = 0.015 # radius of the sphere
132
+ translation = torch.tensor(vertex, device=device).unsqueeze(0) # desired location
133
+
134
+ verts_sphere = sphere_verts_ * scale_dot + translation # scale and translate vertices
135
+ faces_sphere = sphere_faces_ + num_verts_so_far # faces are the same
136
+
137
+ verts_rgb_sphere = torch.tensor([color], device=device).expand(verts_sphere.shape[0], -1)[None] / 255 # [1, N, 3]
138
+
139
+
140
+ # verts and all sphere verts
141
+ # concat np arrays verts + verts_sphere.cpu().numpy() (4936,3) (2562,3)
142
+ all_verts = np.concatenate([verts, verts_sphere.cpu().numpy()], axis=0)
143
+ all_faces = np.concatenate([faces, faces_sphere.cpu().numpy()], axis=0)
144
+
145
+ all_textures = np.concatenate([vertex_colors, verts_rgb_sphere.cpu().numpy()[0]], axis=0)
146
+
147
+ return tm.Trimesh(vertices=all_verts, faces=all_faces, vertex_colors=all_textures)
148
+
149
+ def process_mesh(image, class_name, x_, y_):
150
+ x_, y_ = x_, y_
151
+ h, w = image.size
152
+
153
+ x = torch.tensor(x_ * 224 / w)
154
+ y = torch.tensor(y_ * 224 / h)
155
+
156
+ hashed_image = image_hash(image)
157
+ if hashed_image in cached_features[class_name]:
158
+ feats = cached_features[class_name][hashed_image]
159
+ else:
160
+
161
+ image_tensor = transform(image).unsqueeze(0)
162
+
163
+ # Predict texture
164
+ feats = models[class_name]['image_encoder'](image_tensor.to(device))
165
+
166
+ cached_features[class_name][hashed_image] = feats
167
+
168
+ # print('feats shape', feats.shape)
169
+
170
+ sampled_feats = feats[:, :, x.long(), y.long()]
171
+ similarities = torch.einsum('ik, lk -> il', sampled_feats, models[class_name]['shape_feats'])
172
+ # normalize similarities
173
+ similarities = (similarities - similarities.min()) / (similarities.max() - similarities.min())
174
+
175
+ faces = models[class_name]['cse'].shape['faces'].cpu().numpy().copy()
176
+ verts = models[class_name]['cse'].shape['verts'].cpu().numpy().copy()
177
+
178
+ # rotate the shape 235
179
+ verts = rotate_y(verts, 145)
180
+
181
+ mesh = make_final_mesh(verts, faces, similarities)
182
+ # save as obj
183
+ mesh_path = './mesh.obj'
184
+ mesh.export(mesh_path)
185
+
186
+ return mesh_path
187
+
188
+ def update_output(image, class_name, evt: gr.SelectData):
189
+ if class_name is None:
190
+ class_name = 'bear'
191
+ # This function will be triggered when an image is clicked.
192
+ # evt contains the click event data, including the coordinates.
193
+ x_, y_ = evt.index[1], evt.index[0]
194
+ modified_image = draw_point_on_image(image, x_, y_)
195
+ mesh_path = process_mesh(image, class_name, x_, y_)
196
+ return modified_image, mesh_path # Replace with the actual model path
197
+
198
+
199
+ with gr.Blocks() as demo:
200
+ # choose a class
201
+ gr.Markdown(text_description)
202
+
203
+
204
+ with gr.Row(variant="panel"):
205
+ with gr.Column(scale=1):
206
+ class_name = gr.Dropdown(choices=['bear', 'horse', 'elephant'],
207
+ label="Select a class (defaults to 'bear')")
208
+ input_img = gr.Image(label="Input", type="pil", width=256)
209
+ gr.Examples(
210
+ examples = example_images,
211
+ inputs = [input_img],
212
+ cache_examples=False,
213
+ label='Feel free to use one of our provided examples!',
214
+ examples_per_page=30
215
+ )
216
+ with gr.Column(scale=1):
217
+ output_img = gr.Image(label="Selected Point", interactive=False, height=512)
218
+ with gr.Column(scale=1):
219
+ output = gr.Model3D(label='Pixel to Vertex Similarities', height=512)
220
+
221
+
222
+
223
+ input_img.select(update_output, [input_img, class_name], [output_img, output])
224
+
225
+ if __name__ == "__main__":
226
+ demo.launch(share=True)
gradio_example_images/baloo.png ADDED

Git LFS Details

  • SHA256: 5927e6aa4f4aa483e008078cceb83d71bcf85c0b52e7daf989be699840e91cc1
  • Pointer size: 131 Bytes
  • Size of remote file: 946 kB
gradio_example_images/bear1.png ADDED

Git LFS Details

  • SHA256: bbbc32499ffd0a166934f3a4267c04376dbb82546f8953d35c81bca7b207f569
  • Pointer size: 131 Bytes
  • Size of remote file: 941 kB
gradio_example_images/bear2.png ADDED

Git LFS Details

  • SHA256: 4ba6ae04e06a1994412b00b65e6fa666269085aca5153d35623cdcf29b679191
  • Pointer size: 131 Bytes
  • Size of remote file: 691 kB
gradio_example_images/bear3.png ADDED

Git LFS Details

  • SHA256: c5b78039947df0db2455a242f19dc3c2c721aa861edb7d2e30826f2a83f7eccb
  • Pointer size: 132 Bytes
  • Size of remote file: 1.22 MB
gradio_example_images/bear4.png ADDED

Git LFS Details

  • SHA256: c9c9cf96643e4b033bd5e1ddd60944ae4137d7e4577d904a6cd6b8749bf802e2
  • Pointer size: 132 Bytes
  • Size of remote file: 1.11 MB
gradio_example_images/bears/.DS_Store ADDED
Binary file (6.15 kB). View file
 
gradio_example_images/bears/baloo.png ADDED

Git LFS Details

  • SHA256: 5927e6aa4f4aa483e008078cceb83d71bcf85c0b52e7daf989be699840e91cc1
  • Pointer size: 131 Bytes
  • Size of remote file: 946 kB
gradio_example_images/bears/bear1.png ADDED

Git LFS Details

  • SHA256: bbbc32499ffd0a166934f3a4267c04376dbb82546f8953d35c81bca7b207f569
  • Pointer size: 131 Bytes
  • Size of remote file: 941 kB
gradio_example_images/bears/bear2.png ADDED

Git LFS Details

  • SHA256: 4ba6ae04e06a1994412b00b65e6fa666269085aca5153d35623cdcf29b679191
  • Pointer size: 131 Bytes
  • Size of remote file: 691 kB
gradio_example_images/bears/bear3.png ADDED

Git LFS Details

  • SHA256: c5b78039947df0db2455a242f19dc3c2c721aa861edb7d2e30826f2a83f7eccb
  • Pointer size: 132 Bytes
  • Size of remote file: 1.22 MB
gradio_example_images/bears/bear4.png ADDED

Git LFS Details

  • SHA256: c9c9cf96643e4b033bd5e1ddd60944ae4137d7e4577d904a6cd6b8749bf802e2
  • Pointer size: 132 Bytes
  • Size of remote file: 1.11 MB
gradio_example_images/bears/dumbo.png ADDED

Git LFS Details

  • SHA256: 034d39f14be79d0e82b5080171d1be7c30d3b56d4a6eb44e9fcd596cbf738a8f
  • Pointer size: 131 Bytes
  • Size of remote file: 786 kB
gradio_example_images/bears/elephant1.png ADDED

Git LFS Details

  • SHA256: 47a4f2848997f697f329c9985c0ecfb2bc7fb2cd2d3aaa4767e0df554700d65c
  • Pointer size: 132 Bytes
  • Size of remote file: 1.38 MB
gradio_example_images/bears/elephant2.png ADDED

Git LFS Details

  • SHA256: 428e037492f73c61c6877533a986e20ed8f09b136e7d7cced0c52761cc2d3de4
  • Pointer size: 132 Bytes
  • Size of remote file: 1.7 MB
gradio_example_images/bears/horse1.png ADDED

Git LFS Details

  • SHA256: 3db9129ba37b09b55fde04bf7ca92d22bbbb0a8ca68f06ac08f6ea6e8f1c3246
  • Pointer size: 132 Bytes
  • Size of remote file: 1.35 MB
gradio_example_images/bears/horse2.png ADDED

Git LFS Details

  • SHA256: 7c3cefd4d0c6a89309a6a74b8c63e93f9028671d0f930d8f32684d4127ec1ebe
  • Pointer size: 131 Bytes
  • Size of remote file: 618 kB
gradio_example_images/bears/horse3.png ADDED

Git LFS Details

  • SHA256: 590f0139900b62a69458f0d344ada9f2ee4ad1693002fffe13d2ad580aa38279
  • Pointer size: 131 Bytes
  • Size of remote file: 847 kB
gradio_example_images/bears/horseanime.png ADDED

Git LFS Details

  • SHA256: a2f222af466c630215e086775eb288192e5f0fb0c2fe66372b8913c4f37cc12a
  • Pointer size: 132 Bytes
  • Size of remote file: 1.7 MB
gradio_example_images/bears/mylittlepony.png ADDED

Git LFS Details

  • SHA256: 28b3a02139e8e295ff5afb61398c44268082fc26b1b8252f8d143104d5a70efb
  • Pointer size: 131 Bytes
  • Size of remote file: 609 kB
gradio_example_images/bears/phanpy.png ADDED

Git LFS Details

  • SHA256: 067b7326c7a2b81f919e8f96cc7780a1da804d4775798579aeb14e306a8da478
  • Pointer size: 131 Bytes
  • Size of remote file: 637 kB
gradio_example_images/bears/ponyta.png ADDED

Git LFS Details

  • SHA256: e2cab2fde97db913483b86722851ff95b2ded2c43219e70ee5a7a6d92157d90a
  • Pointer size: 131 Bytes
  • Size of remote file: 610 kB
gradio_example_images/bears/winnie.png ADDED

Git LFS Details

  • SHA256: 5495d58a61cef9ee7408101f400a0834f791bd36bb4513e202c70425e52f3f49
  • Pointer size: 131 Bytes
  • Size of remote file: 689 kB
gradio_example_images/dumbo.png ADDED

Git LFS Details

  • SHA256: 034d39f14be79d0e82b5080171d1be7c30d3b56d4a6eb44e9fcd596cbf738a8f
  • Pointer size: 131 Bytes
  • Size of remote file: 786 kB
gradio_example_images/elephant1.png ADDED

Git LFS Details

  • SHA256: 47a4f2848997f697f329c9985c0ecfb2bc7fb2cd2d3aaa4767e0df554700d65c
  • Pointer size: 132 Bytes
  • Size of remote file: 1.38 MB
gradio_example_images/elephant2.png ADDED

Git LFS Details

  • SHA256: 428e037492f73c61c6877533a986e20ed8f09b136e7d7cced0c52761cc2d3de4
  • Pointer size: 132 Bytes
  • Size of remote file: 1.7 MB
gradio_example_images/horse1.png ADDED

Git LFS Details

  • SHA256: 3db9129ba37b09b55fde04bf7ca92d22bbbb0a8ca68f06ac08f6ea6e8f1c3246
  • Pointer size: 132 Bytes
  • Size of remote file: 1.35 MB
gradio_example_images/horse2.png ADDED

Git LFS Details

  • SHA256: 7c3cefd4d0c6a89309a6a74b8c63e93f9028671d0f930d8f32684d4127ec1ebe
  • Pointer size: 131 Bytes
  • Size of remote file: 618 kB
gradio_example_images/horse3.png ADDED

Git LFS Details

  • SHA256: 590f0139900b62a69458f0d344ada9f2ee4ad1693002fffe13d2ad580aa38279
  • Pointer size: 131 Bytes
  • Size of remote file: 847 kB
gradio_example_images/horseanime.png ADDED

Git LFS Details

  • SHA256: a2f222af466c630215e086775eb288192e5f0fb0c2fe66372b8913c4f37cc12a
  • Pointer size: 132 Bytes
  • Size of remote file: 1.7 MB
gradio_example_images/mylittlepony.png ADDED

Git LFS Details

  • SHA256: 28b3a02139e8e295ff5afb61398c44268082fc26b1b8252f8d143104d5a70efb
  • Pointer size: 131 Bytes
  • Size of remote file: 609 kB
gradio_example_images/phanpy.png ADDED

Git LFS Details

  • SHA256: 067b7326c7a2b81f919e8f96cc7780a1da804d4775798579aeb14e306a8da478
  • Pointer size: 131 Bytes
  • Size of remote file: 637 kB
gradio_example_images/ponyta.png ADDED

Git LFS Details

  • SHA256: e2cab2fde97db913483b86722851ff95b2ded2c43219e70ee5a7a6d92157d90a
  • Pointer size: 131 Bytes
  • Size of remote file: 610 kB
gradio_example_images/winnie.png ADDED

Git LFS Details

  • SHA256: 5495d58a61cef9ee7408101f400a0834f791bd36bb4513e202c70425e52f3f49
  • Pointer size: 131 Bytes
  • Size of remote file: 689 kB
models/shapes/bear.obj ADDED
The diff for this file is too large to render. See raw diff
 
models/shapes/elephant.obj ADDED
The diff for this file is too large to render. See raw diff
 
models/shapes/horse.obj ADDED
The diff for this file is too large to render. See raw diff
 
models/weights/bear.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:231e2af384361aa7b093cf7cde646d25e7a3ad1c4ffd3b57c78c10cf9401fa41
3
+ size 121594483
models/weights/bear_cse.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ef81c20f946a0855214546cac4e7fcc3a5415eb87e2192e4ed3d156881bad1a2
3
+ size 4907
models/weights/bear_lbo.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:836ef2b4255eec7608779518de80609a1bbdbaf6f6c5b358b6f2c6454ebfb2ab
3
+ size 1264363
models/weights/elephant.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4b5ce66ccd2e39c8b686b489b24ce915dc4f77533aeb58493ead1aed7edfbeda
3
+ size 121594483
models/weights/elephant_cse.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b1e46929a6814228c4d2de44077ee70dad631135977b17baed222332ea8af83
3
+ size 4907
models/weights/elephant_lbo.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5cbb99a00b32a1a62a8e00f0f3d719e526417981b4a7f93a31216dd4756342a1
3
+ size 1281259
models/weights/horse.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c9a6ba20c3daa0ad689b77aa93de1f040e302bf205458bc38f6f771a361d4bdb
3
+ size 121594483
models/weights/horse_cse.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b760d24a8d936b2ba55543475f2c0e739ce03ab8f388f31722a248e398fc4f3d
3
+ size 4907
models/weights/horse_lbo.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8ece469e1600611053a06fbc670d1c0e71a785d4a35b55608d9ddbf901e439cd
3
+ size 1281771
models/weights/sphere_faces.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9f4ab4a3248ffb242cfb5d1b0d726bcf56cb6de826e8ef287d0bf29520d99260
3
+ size 123627
models/weights/sphere_verts.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f6945509c384d61fcbbacfac4d61e4cdd909af610fcb8f6772a71bd7cff6f10
3
+ size 31467