Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"Using a 3D Renderer to Generate Synthetic Data","local":"using-a-3d-renderer-to-generate-synthetic-data","sections":[{"title":"Blender","local":"blender","sections":[],"depth":2},{"title":"BlenderProc","local":"blenderproc","sections":[],"depth":2},{"title":"Blender Resources","local":"blender-resources","sections":[{"title":"The following video explains how to render a 3D syntehtic dataset in Blender:","local":"the-following-video-explains-how-to-render-a-3d-syntehtic-dataset-in-blender","sections":[],"depth":3},{"title":"The following video explains how to create a 3D object using Photogrammetry:","local":"the-following-video-explains-how-to-create-a-3d-object-using-photogrammetry","sections":[],"depth":3}],"depth":2},{"title":"Papers / Blogs","local":"papers--blogs","sections":[],"depth":2},{"title":"BlenderProc Resources","local":"blenderproc-resources","sections":[{"title":"The following video provides an overview of the BlenderProc pipeline:","local":"the-following-video-provides-an-overview-of-the-blenderproc-pipeline","sections":[],"depth":3}],"depth":2},{"title":"Papers","local":"papers","sections":[],"depth":2}],"depth":1}"> | |
| <link href="/docs/computer-vision-course/pr_397/en/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/entry/start.7f209408.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/scheduler.7bc62968.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/singletons.b15acae1.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/paths.11cdc4b4.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/entry/app.32e8338e.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/index.2f8492b0.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/nodes/0.e37092e8.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/nodes/14.6813f4cf.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/Youtube.848500a5.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/CodeBlock.bb61a5a9.js"> | |
| <link rel="modulepreload" href="/docs/computer-vision-course/pr_397/en/_app/immutable/chunks/index.514d62da.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{"title":"Using a 3D Renderer to Generate Synthetic Data","local":"using-a-3d-renderer-to-generate-synthetic-data","sections":[{"title":"Blender","local":"blender","sections":[],"depth":2},{"title":"BlenderProc","local":"blenderproc","sections":[],"depth":2},{"title":"Blender Resources","local":"blender-resources","sections":[{"title":"The following video explains how to render a 3D syntehtic dataset in Blender:","local":"the-following-video-explains-how-to-render-a-3d-syntehtic-dataset-in-blender","sections":[],"depth":3},{"title":"The following video explains how to create a 3D object using Photogrammetry:","local":"the-following-video-explains-how-to-create-a-3d-object-using-photogrammetry","sections":[],"depth":3}],"depth":2},{"title":"Papers / Blogs","local":"papers--blogs","sections":[],"depth":2},{"title":"BlenderProc Resources","local":"blenderproc-resources","sections":[{"title":"The following video provides an overview of the BlenderProc pipeline:","local":"the-following-video-provides-an-overview-of-the-blenderproc-pipeline","sections":[],"depth":3}],"depth":2},{"title":"Papers","local":"papers","sections":[],"depth":2}],"depth":1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <h1 class="relative group"><a id="using-a-3d-renderer-to-generate-synthetic-data" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#using-a-3d-renderer-to-generate-synthetic-data"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Using a 3D Renderer to Generate Synthetic Data</span></h1> <p data-svelte-h="svelte-m7n1rz">When creating computer-generated images to use as synthetic training data, ideally we want the images to look as realistic as possible. | |
| Physically Based Renderers (PBR) such as <a href="https://www.blender.org" rel="nofollow">Blender Cycles</a> | |
| or <a href="https://unity.com" rel="nofollow">Unity</a> help to create images that are super realistic and look and feel just like they do in the real world.</p> <p data-svelte-h="svelte-8dopem">Imagine you’re creating an image of a shiny apple. Now, when you color that apple, you want it to look realistic, right? | |
| That’s where something called PBR comes in.</p> <p data-svelte-h="svelte-1xedqaw"><img src="https://huggingface.co/datasets/hf-vision/course-assets/resolve/main/apple.jpg" alt="apple"></p> <p data-svelte-h="svelte-rwpo57">Okay, let’s break it down:</p> <p data-svelte-h="svelte-a1wtw0"><em>Colors and Light:</em></p> <ul data-svelte-h="svelte-13t94ri"><li>When light shines on objects, it interacts with them in different ways. PBR tries to figure out and simulate this interaction.</li> <li>Think about how light hits the apple. Some parts may be brighter where the light directly hits, and some parts might be darker | |
| where the light is blocked or doesn’t reach as much.</li></ul> <p data-svelte-h="svelte-12ga40z"><em>Materials:</em></p> <ul data-svelte-h="svelte-jki7je"><li>Different materials react to light differently. For example, a shiny metallic surface reflects light more than a soft, matte fabric.</li> <li>PBR takes into account the material of an object, so if you’re rendering a metal vase, it will reflect light differently than a fluffy teddy bear.</li></ul> <p data-svelte-h="svelte-1ps8oir"><em>Textures:</em></p> <ul data-svelte-h="svelte-10292rw"><li>PBR uses textures to add details like bumps, scratches, or tiny grooves on the surface of objects. This makes things look more real because, in the real world, very few things are perfectly smooth.</li></ul> <p data-svelte-h="svelte-1pfshgm"><em>Realism:</em></p> <ul data-svelte-h="svelte-1xn1kss"><li>PBR aims to make things look as close to real life as possible. It does this by considering how light behaves in reality, how different materials interact with light, and how surfaces have small imperfections.</li></ul> <p data-svelte-h="svelte-17qeghi"><em>Layers of Light:</em></p> <ul data-svelte-h="svelte-us2oy9"><li>Imagine you’re looking at a glass of water. PBR will try to simulate the way light passes through the water and how it might distort what you see.</li> <li>It considers how multiple layers of how light interact with different parts of an object, making the rendered image more realistic.</li></ul> <p data-svelte-h="svelte-1v41sfn">PBR also simplifies the workflow. Instead of manually tweaking many parameters to get the right look, | |
| you can use a set of standardized materials and lighting models. | |
| This makes the process more intuitive and user-friendly.</p> <p data-svelte-h="svelte-jdzbq9">Now, think about training AI models like those used in computer vision. | |
| If you’re teaching a computer to recognize objects in images, it’s beneficial to have a diverse set of | |
| images that closely mimic real-world scenarios. PBR helps in generating synthetic data that looks so real that it can be used | |
| to train computer vision models effectively.</p> <p data-svelte-h="svelte-11n56g1">There are several 3D rendering engines that you can use for PBR, including <a href="https://www.blender.org" rel="nofollow">Blender Cycles</a> | |
| or <a href="https://unity.com" rel="nofollow">Unity</a>. We are going to focus on Blender because it is open source and there are a lot of resources about Blender.</p> <h2 class="relative group"><a id="blender" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#blender"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Blender</span></h2> <p data-svelte-h="svelte-1ja2qyi">Blender is a powerful, open-source 3D computer graphics software used for creating animated films, visual effects, art, 3D games, and more. | |
| It encompasses a wide range of features, making it a versatile tool for artists, animators, and developers. | |
| Let’s start off by walking through a basic example of rendering a synthetic image of an elephant.</p> <p data-svelte-h="svelte-h0dm8y">Here are the essential steps:</p> <ul data-svelte-h="svelte-1wmb2f5"><li>Create the elephant model. The one shown below was created with the <a href="https://metascan.ai" rel="nofollow">Metascan</a> app using Photogrammetry. | |
| Photogrammetry is a way of turning regular photos into a 3D model. It’s like taking a bunch of pictures of your toy from different angles | |
| and then using those pictures to make a computer version of it.</li> <li>Create the background - this was a multi-step process. See <a href="https://github.com/kfahn22/Synthetic-Data-Creation-in-Blender/tree/main/BACKGROUND" rel="nofollow">here</a> | |
| for a more detailed explanation.</li> <li>Adjust the lighting and camera positions.</li> <li>Fix the location and rotation of the elephant so that it fits within the frame (or camera view).</li></ul> <p data-svelte-h="svelte-cunkwf">Here is the elephant image generated in Blender:</p> <p data-svelte-h="svelte-1gh6diz"><img src="https://huggingface.co/datasets/hf-vision/course-assets/resolve/main/synthetic-data-creation-PBR/rendered_elephant.png" alt="elephant image"></p> <p data-svelte-h="svelte-1rcar4r">It is not completely photorealistic, but probably close enough to train a model to monitor elephant populations. Of course, to do | |
| that we need to create a large dataset of synthetic elephant images! You can use the Blender python environment | |
| <a href="https://docs.blender.org/api/current/info_advanced_blender_as_bpy.html" rel="nofollow">bpy</a> to render | |
| a large number of images with the location and rotation of the elephant randomized. | |
| You can also use a script to help with segmentation, depth, normal, and pose estimation.</p> <p data-svelte-h="svelte-1m3a08l">Great! How do we get started?</p> <p data-svelte-h="svelte-gbqbu7">Unfortunately, there is a pretty steep learning curve associated with Blender. None of the steps are too complicated, | |
| but wouldn’t it be nice if we could render the dataset without trying to figure all of this out? | |
| Luckily for us, there is a library called BlenderProc that has all the scripts we need to render realistic synthetic data | |
| and annotations and it is built on top of Blender.</p> <h2 class="relative group"><a id="blenderproc" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#blenderproc"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>BlenderProc</span></h2> <p data-svelte-h="svelte-r6gkd">The BlenderProc pipeline was introduced in <a href="https://arxiv.org/abs/1911.01911" rel="nofollow">BlenderProc</a>, Denninger, et. al. and is a modular pipeline built on top of <a href="https://www.blender.org/" rel="nofollow">Blender</a>. | |
| It can be used to generate images in a variety of use cases, including segmentation, depth, normal and pose estimation.</p> <p data-svelte-h="svelte-16hmwa">It is specifically created to help in the generation of realistic looking images for the training of convolutional neural networks.<br> | |
| It has the following properties which make it a great choice for synthetic data generation:</p> <ul data-svelte-h="svelte-17nrqt5"><li>Procedural Generation: Enables the automated creation of complex 3D scenes with variations using procedural techniques.</li> <li>Simulation: Supports the integration of simulations, including physics simulations, to enhance realism.</li> <li>Large-Scale Generation: Designed to handle large-scale scene generation efficiently, making it suitable for diverse applications.</li> <li>Automation and Scalability:<ul><li>Scripting: Allows users to automate the generation process by employing python scripts to tailor BlenderProc to their specific needs and configure parameters.</li> <li>Parallel Processing: Supports parallel processing for scalability, making it efficient for generating a large number of scenes.</li></ul></li></ul> <p data-svelte-h="svelte-1djvpst">You can install BlenderProc via pip:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->pip install blenderProc<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-e1u0g4">Alternately, you can clone the official <a href="https://github.com/DLR-RM/BlenderProc" rel="nofollow">BlenderProc repository</a> from GitHub using Git:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->git <span class="hljs-built_in">clone</span> https://github.com/DLR-RM/BlenderProc<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1xel87t">BlenderProc must be run inside the blender python environment (bpy), as this is the only way to access the Blender API.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->blenderproc run <your_python_script><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1jtbgar">You can check out this notebook to try BlenderProc in Google Colab, demos the basic examples provided <a href="https://github.com/DLR-RM/BlenderProc/tree/main/examples/basics" rel="nofollow">here</a>. | |
| Here are some images rendered with the basic example:</p> <p data-svelte-h="svelte-1xh04a8"><img src="https://huggingface.co/datasets/hf-vision/course-assets/resolve/main/synthetic-data-creation-PBR/colors.png" alt="colors"> <img src="https://huggingface.co/datasets/hf-vision/course-assets/resolve/main/synthetic-data-creation-PBR/normals.png" alt="normals"> <img src="https://huggingface.co/datasets/hf-vision/course-assets/resolve/main/synthetic-data-creation-PBR/depth.png" alt="depth"></p> <h2 class="relative group"><a id="blender-resources" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#blender-resources"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Blender Resources</span></h2> <ul data-svelte-h="svelte-1hlup7b"><li><a href="https://docs.blender.org/manual/en/latest/0" rel="nofollow">User Manual</a></li> <li><a href="https://awesome-blender.netlify.app" rel="nofollow">Awesome-blender — Extensive list of resources</a></li> <li><a href="https://www.youtube.com/@BlenderOfficial" rel="nofollow">Blender Youtube Channel</a></li></ul> <h3 class="relative group"><a id="the-following-video-explains-how-to-render-a-3d-syntehtic-dataset-in-blender" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#the-following-video-explains-how-to-render-a-3d-syntehtic-dataset-in-blender"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>The following video explains how to render a 3D syntehtic dataset in Blender:</span></h3> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/E1Pqpfg5kSo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <h3 class="relative group"><a id="the-following-video-explains-how-to-create-a-3d-object-using-photogrammetry" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#the-following-video-explains-how-to-create-a-3d-object-using-photogrammetry"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>The following video explains how to create a 3D object using Photogrammetry:</span></h3> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/Pcqokf3PG_4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <h2 class="relative group"><a id="papers--blogs" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#papers--blogs"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Papers / Blogs</span></h2> <ul data-svelte-h="svelte-1dizrlz"><li><a href="https://iopscience.iop.org/article/10.1088/1361-6501/acc59e/pdf_" rel="nofollow">Developing digital twins of multi-camera metrology systems in Blender</a></li> <li><a href="https://www.saifkhichi.com/blog/blender-depth-map-surface-normals" rel="nofollow">Generate Depth and Normal Maps with Blender</a></li> <li><a href="https://medium.com/rowden/object-detection-with-synthetic-training-data-f6735a5a34bc" rel="nofollow">Object detection with synthetic training data</a></li></ul> <h2 class="relative group"><a id="blenderproc-resources" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#blenderproc-resources"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>BlenderProc Resources</span></h2> <ul data-svelte-h="svelte-1na588e"><li><a href="https://github.com/DLR-RM/BlenderProc" rel="nofollow">BlenderProc Github Repo</a></li> <li><a href="https://elib.dlr.de/139317/1/denninger.pdf" rel="nofollow">BlenderProc: Reducing the Reality Gap with Photorealistic Rendering</a></li> <li><a href="https://dlr-rm.github.io/BlenderProc/" rel="nofollow">Documentation</a></li></ul> <h3 class="relative group"><a id="the-following-video-provides-an-overview-of-the-blenderproc-pipeline" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#the-following-video-provides-an-overview-of-the-blenderproc-pipeline"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>The following video provides an overview of the BlenderProc pipeline:</span></h3> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/1AvY_iS6xQA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <h2 class="relative group"><a id="papers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#papers"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Papers</span></h2> <ul data-svelte-h="svelte-df5x24"><li><a href>3D Menagerie: Modeling the 3D Shape and Pose of Animals</a></li> <li><a href>Fake It Till You Make It: Face analysis in the wild using synthetic data alone</a></li> <li><a href="https://arxiv.org/pdf/2106.08045.pdf" rel="nofollow">Object Detection and Autoencoder-Based 6D Pose Estimation for Highly Cluttered Bin Picking</a></li> <li><a href="https://arxiv.org/abs/1912.08265" rel="nofollow">Learning from Synthetic Animals</a></li></ul> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/computer-vision-course/blob/main/chapters/en/unit10/blenderProc.mdx" target="_blank"><span data-svelte-h="svelte-1kd6by1"><</span> <span data-svelte-h="svelte-x0xyl0">></span> <span data-svelte-h="svelte-1dajgef"><span class="underline ml-1.5">Update</span> on GitHub</span></a> <p></p> | |
| <script> | |
| { | |
| __sveltekit_1p6gie1 = { | |
| assets: "/docs/computer-vision-course/pr_397/en", | |
| base: "/docs/computer-vision-course/pr_397/en", | |
| env: {} | |
| }; | |
| const element = document.currentScript.parentElement; | |
| const data = [null,null]; | |
| Promise.all([ | |
| import("/docs/computer-vision-course/pr_397/en/_app/immutable/entry/start.7f209408.js"), | |
| import("/docs/computer-vision-course/pr_397/en/_app/immutable/entry/app.32e8338e.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 14], | |
| data, | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 32.5 kB
- Xet hash:
- 967482b20a052fcd5d2b7ec05c2721f11aedde5995840bfbcd6c43d564c4de01
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.