You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
4.9 KiB
191 lines
4.9 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "964ccced",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import torch\n",
|
|
"\n",
|
|
"from shap_e.diffusion.sample import sample_latents\n",
|
|
"from shap_e.diffusion.gaussian_diffusion import diffusion_from_config\n",
|
|
"from shap_e.models.download import load_model, load_config\n",
|
|
"from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, gif_widget"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "8eed3a76",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "4127249f-da93-4da9-a15e-47fc1d918758",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"NVIDIA GeForce RTX 3090\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(torch.cuda.get_device_name())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "2d922637",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"xm = load_model('transmitter', device=device)\n",
|
|
"model = load_model('text300M', device=device)\n",
|
|
"diffusion = diffusion_from_config(load_config('diffusion'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "53d329d0",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "299c91406ddc4a368d1c80ed81c20a84",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
" 0%| | 0/64 [00:00<?, ?it/s]"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"batch_size = 1\n",
|
|
"guidance_scale = 30.0\n",
|
|
"prompt = \"road sign\"\n",
|
|
"\n",
|
|
"latents = sample_latents(\n",
|
|
" batch_size=batch_size,\n",
|
|
" model=model,\n",
|
|
" diffusion=diffusion,\n",
|
|
" guidance_scale=guidance_scale,\n",
|
|
" model_kwargs=dict(texts=[prompt] * batch_size),\n",
|
|
" progress=True,\n",
|
|
" clip_denoised=True,\n",
|
|
" use_fp16=True,\n",
|
|
" use_karras=True,\n",
|
|
" karras_steps=64,\n",
|
|
" sigma_min=1e-3,\n",
|
|
" sigma_max=160,\n",
|
|
" s_churn=0,\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "633da2ec",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "7c8b8946a49847dd9aa5376f9568775f",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HTML(value='<img src=\"data:image/gif;base64,R0lGODlhQABAAIcAAJOYl4+UlY6TlI2TlI2Tk46Sko2Sk42SkoySk4ySko2RkYyRko…"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"render_mode = 'nerf' # you can change this to 'stf'\n",
|
|
"size = 64 # this is the size of the renders; higher values take longer to render.\n",
|
|
"\n",
|
|
"cameras = create_pan_cameras(size, device)\n",
|
|
"for i, latent in enumerate(latents):\n",
|
|
" images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)\n",
|
|
" display(gif_widget(images))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "85a4dce4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/home/cailean/shap-e/shap_e/models/stf/renderer.py:286: UserWarning: exception rendering with PyTorch3D: No module named 'pytorch3d'\n",
|
|
" warnings.warn(f\"exception rendering with PyTorch3D: {exc}\")\n",
|
|
"/home/cailean/shap-e/shap_e/models/stf/renderer.py:287: UserWarning: falling back on native PyTorch renderer, which does not support full gradients\n",
|
|
" warnings.warn(\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Example of saving the latents as meshes.\n",
|
|
"from shap_e.util.notebooks import decode_latent_mesh\n",
|
|
"\n",
|
|
"for i, latent in enumerate(latents):\n",
|
|
" t = decode_latent_mesh(xm, latent).tri_mesh()\n",
|
|
" with open(f'road_example_mesh_{i}.ply', 'wb') as f:\n",
|
|
" t.write_ply(f)\n",
|
|
" with open(f'road_example_mesh_{i}.obj', 'w') as f:\n",
|
|
" t.write_obj(f)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "71b5ace4-b449-4a7e-b4e3-66ee6a5d03c3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|
|
|