Sampler: Difference between revisions
StableTiger3 (talk | contribs) mNo edit summary |
StableTiger3 (talk | contribs) No edit summary |
||
| (9 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
A sampler is a tool that helps us create different images from the same text by adding some randomness to the process. For example, if we have a text that says "a blue car", a sampler can generate different images of blue cars with different shapes, sizes, angles, and backgrounds. A sampler is useful because it allows us to explore different possibilities and variations of the same text. | A sampler is a tool that helps us create different images from the same text by adding some randomness to the process. For example, if we have a text that says "a blue car", a sampler can generate different images of blue cars with different shapes, sizes, angles, and backgrounds. A sampler is useful because it allows us to explore different possibilities and variations of the same text. | ||
[[File:Sampling Examples.jpg|left|thumb|744x744px|Sampler Examples]] | [[File:Sampling Examples.jpg|left|thumb|744x744px|Sampler Examples at various [[CFG Scale|CFG Scales]]]] | ||
= Different Samplers = | = Different Samplers = | ||
| Line 11: | Line 11: | ||
=='''Heun'''== | =='''Heun'''== | ||
'''Heun''' is a method that uses the midpoint of the edge opposite to the vertex as the barycenter. This method is similar to Euler, but it avoids some of the problems with obtuse angles. | '''Heun''' is a method that uses the midpoint of the edge opposite to the vertex as the barycenter. This method is similar to Euler, but it avoids some of the problems with obtuse angles. | ||
== | |||
== DPM == | |||
== | |||
===<u>DPM2 a</u>=== | |||
'''DPM2 a''' is just DPM2 but with adaptive step size. It is a method that uses an approximation of the dual point as the barycenter. The approximation is obtained by projecting the dual point onto the face plane. This method is more stable than DPM2, but it can introduce some errors. | '''DPM2 a''' is just DPM2 but with adaptive step size. It is a method that uses an approximation of the dual point as the barycenter. The approximation is obtained by projecting the dual point onto the face plane. This method is more stable than DPM2, but it can introduce some errors. | ||
== | ===<u>DPM++ 2S a</u>=== | ||
'''DPM++ 2S a:''' DPM++ with two-step prediction and adaptive step size. It is a method that uses an improved approximation of the dual point as the barycenter. The improvement is obtained by scaling the dual point by a factor that depends on the face area. This method is more accurate than DPM2 a, but it can be complex to implement. | '''DPM++ 2S a:''' DPM++ with two-step prediction and adaptive step size. It is a method that uses an improved approximation of the dual point as the barycenter. The improvement is obtained by scaling the dual point by a factor that depends on the face area. This method is more accurate than DPM2 a, but it can be complex to implement. | ||
== | ===<u>DPM++ 2M</u>=== | ||
'''DPM++ 2M''' is a method that uses an alternative approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the midpoints of the edges, where the weights are proportional to the cotangents of the opposite angles. This method is simpler than DPM++ 2S a, but it can produce poor results for non-planar faces. | '''DPM++ 2M''' is a method that uses an alternative approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the midpoints of the edges, where the weights are proportional to the cotangents of the opposite angles. This method is simpler than DPM++ 2S a, but it can produce poor results for non-planar faces. | ||
== | ===<u>DPM++ SDE</u>=== | ||
'''DPM++ SDE:''' DPM++ with stochastic differential equation formulation. It is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by solving a system of linear equations that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more robust than DPM++ 2S a and DPM++ 2M, but it can be expensive to solve. | '''DPM++ SDE:''' DPM++ with stochastic differential equation formulation. It is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by solving a system of linear equations that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more robust than DPM++ 2S a and DPM++ 2M, but it can be expensive to solve. | ||
== | ===<u>DPM fast</u>=== | ||
'''DPM fast''' is a method that uses a fast approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the vertex positions, where the weights are proportional to the face area and inversely proportional to the distance from the vertex to the face plane. This method is faster than DPM++ SDE, but it can introduce some errors. | '''DPM fast''' is a method that uses a fast approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the vertex positions, where the weights are proportional to the face area and inversely proportional to the distance from the vertex to the face plane. This method is faster than DPM++ SDE, but it can introduce some errors. | ||
== | ===<u>DPM adaptive</u>=== | ||
'''DPM adaptive''' is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by computing an optimal weight for each vertex position that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more accurate than DPM fast, but it can be complex to implement. | '''DPM adaptive''' is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by computing an optimal weight for each vertex position that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more accurate than DPM fast, but it can be complex to implement. | ||
== | ===<u>DPM2 Karras</u>=== | ||
= | |||
'''DPM2 Karras''' is a variant of DPM2 that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2, but it can be expensive to compute. | '''DPM2 Karras''' is a variant of DPM2 that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2, but it can be expensive to compute. | ||
== | ===<u>DPM2 a Karras</u>=== | ||
'''DPM2 a Karras''' is a variant of DPM2 a that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2 a, but it can introduce some errors. | '''DPM2 a Karras''' is a variant of DPM2 a that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2 a, but it can introduce some errors. | ||
== | ===<u>DPM++ 2S a Karras</u>=== | ||
'''DPM++ 2S a Karras''' is a variant of DPM++ 2S a that uses LMS Karras instead of LMS to compute the dual point. This variant is more accurate than DPM++ 2S a, but it can be complex to implement. | '''DPM++ 2S a Karras''' is a variant of DPM++ 2S a that uses LMS Karras instead of LMS to compute the dual point. This variant is more accurate than DPM++ 2S a, but it can be complex to implement. | ||
== | ===<u>DPM++ 2M Karras</u>=== | ||
'''DPM++ 2M Karras''' is a variant of DPM++ 2M that uses LMS Karras instead of LMS to compute the dual point. This variant is simpler than DPM++ 2S a Karras, but it can produce poor results for non-planar faces. | '''DPM++ 2M Karras''' is a variant of DPM++ 2M that uses LMS Karras instead of LMS to compute the dual point. This variant is simpler than DPM++ 2S a Karras, but it can produce poor results for non-planar faces. | ||
== | ===<u>DPM++ SDE Karras</u>=== | ||
'''DPM++ SDE Karras''' is a variant of DPM++ SDE that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM++ SDE, but it can be expensive to solve. | '''DPM++ SDE Karras''' is a variant of DPM++ SDE that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM++ SDE, but it can be expensive to solve. | ||
=='''LMS Karras'''== | |||
'''LMS Karras''' LMS with Karras et al.'s sampling scheme. It is a variant of LMS that uses a different formula for computing the least-squares plane. The formula is based on minimizing the sum of squared distances from each vertex position to its projection onto the plane along its normal vector. This formula is more robust than the standard LMS formula, which minimizes the sum of squared distances from each vertex position to its projection onto the plane along any direction. | |||
=='''DDIM'''== | =='''DDIM'''== | ||
'''DDIM''' Denoising Diffusion Implicit Models, a diffusion model with implicit denoising function. It is a method that uses the discrete differential of the identity map as the barycenter. The discrete differential of the identity map is defined as the average of the vertex positions weighted by the face area. This method is simple and fast, but it can produce poor results for irregular meshes or meshes with obtuse angles. | '''DDIM''' Denoising Diffusion Implicit Models, a diffusion model with implicit denoising function. It is a method that uses the discrete differential of the identity map as the barycenter. The discrete differential of the identity map is defined as the average of the vertex positions weighted by the face area. This method is simple and fast, but it can produce poor results for irregular meshes or meshes with obtuse angles. | ||
=='''PLMS'''== | =='''PLMS'''== | ||
'''PLMS''' stands for Preconditioned Langevin Monte Carlo with Stochastic Gradient Descent. A method that uses the projection of the least-squares plane as the barycenter. The projection of the least-squares plane is defined as the point on the face plane that is closest to the least-squares plane. This method is more robust than DDIM, but it can be expensive to compute and it can introduce numerical errors. | '''PLMS''' stands for Preconditioned Langevin Monte Carlo with Stochastic Gradient Descent. A method that uses the projection of the least-squares plane as the barycenter. The projection of the least-squares plane is defined as the point on the face plane that is closest to the least-squares plane. This method is more robust than DDIM, but it can be expensive to compute and it can introduce numerical errors. | ||
Latest revision as of 16:31, 28 August 2023
A sampler is a tool that helps us create different images from the same text by adding some randomness to the process. For example, if we have a text that says "a blue car", a sampler can generate different images of blue cars with different shapes, sizes, angles, and backgrounds. A sampler is useful because it allows us to explore different possibilities and variations of the same text.
Different Samplers
These are different methods for sampling discrete differential geometry (DDG) operators on meshes. DDG operators are used to approximate differential operators such as gradients, divergence, and Laplacian on discrete surfaces. Sampling DDG operators is important for applications such as mesh smoothing, curvature estimation, and geometric processing.
Euler and Euler a
Euler a is a method that uses the average of the vertex positions as the barycenter of a face. Euler is a method that uses the circumcenter of a face as the barycenter. These methods are simple and fast, but they can produce poor results for irregular meshes or meshes with obtuse angles.
LMS
LMS Langevin Monte Carlo with Stochastic Gradient Descent. It is a method that uses the least-squares fit of a plane to the face vertices as the barycenter. This method is more robust than Euler and Euler a, but it can be expensive to compute and it can introduce numerical errors.
Heun
Heun is a method that uses the midpoint of the edge opposite to the vertex as the barycenter. This method is similar to Euler, but it avoids some of the problems with obtuse angles.
DPM
DPM2 a
DPM2 a is just DPM2 but with adaptive step size. It is a method that uses an approximation of the dual point as the barycenter. The approximation is obtained by projecting the dual point onto the face plane. This method is more stable than DPM2, but it can introduce some errors.
DPM++ 2S a
DPM++ 2S a: DPM++ with two-step prediction and adaptive step size. It is a method that uses an improved approximation of the dual point as the barycenter. The improvement is obtained by scaling the dual point by a factor that depends on the face area. This method is more accurate than DPM2 a, but it can be complex to implement.
DPM++ 2M
DPM++ 2M is a method that uses an alternative approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the midpoints of the edges, where the weights are proportional to the cotangents of the opposite angles. This method is simpler than DPM++ 2S a, but it can produce poor results for non-planar faces.
DPM++ SDE
DPM++ SDE: DPM++ with stochastic differential equation formulation. It is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by solving a system of linear equations that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more robust than DPM++ 2S a and DPM++ 2M, but it can be expensive to solve.
DPM fast
DPM fast is a method that uses a fast approximation of the dual point as the barycenter. The approximation is obtained by computing the weighted average of the vertex positions, where the weights are proportional to the face area and inversely proportional to the distance from the vertex to the face plane. This method is faster than DPM++ SDE, but it can introduce some errors.
DPM adaptive
DPM adaptive is a method that uses an adaptive approximation of the dual point as the barycenter. The approximation is obtained by computing an optimal weight for each vertex position that minimizes the squared distance error between the dual point and its projection onto the face plane. This method is more accurate than DPM fast, but it can be complex to implement.
DPM2 Karras
DPM2 Karras is a variant of DPM2 that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2, but it can be expensive to compute.
DPM2 a Karras
DPM2 a Karras is a variant of DPM2 a that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM2 a, but it can introduce some errors.
DPM++ 2S a Karras
DPM++ 2S a Karras is a variant of DPM++ 2S a that uses LMS Karras instead of LMS to compute the dual point. This variant is more accurate than DPM++ 2S a, but it can be complex to implement.
DPM++ 2M Karras
DPM++ 2M Karras is a variant of DPM++ 2M that uses LMS Karras instead of LMS to compute the dual point. This variant is simpler than DPM++ 2S a Karras, but it can produce poor results for non-planar faces.
DPM++ SDE Karras
DPM++ SDE Karras is a variant of DPM++ SDE that uses LMS Karras instead of LMS to compute the dual point. This variant is more robust than DPM++ SDE, but it can be expensive to solve.
LMS Karras
LMS Karras LMS with Karras et al.'s sampling scheme. It is a variant of LMS that uses a different formula for computing the least-squares plane. The formula is based on minimizing the sum of squared distances from each vertex position to its projection onto the plane along its normal vector. This formula is more robust than the standard LMS formula, which minimizes the sum of squared distances from each vertex position to its projection onto the plane along any direction.
DDIM
DDIM Denoising Diffusion Implicit Models, a diffusion model with implicit denoising function. It is a method that uses the discrete differential of the identity map as the barycenter. The discrete differential of the identity map is defined as the average of the vertex positions weighted by the face area. This method is simple and fast, but it can produce poor results for irregular meshes or meshes with obtuse angles.
PLMS
PLMS stands for Preconditioned Langevin Monte Carlo with Stochastic Gradient Descent. A method that uses the projection of the least-squares plane as the barycenter. The projection of the least-squares plane is defined as the point on the face plane that is closest to the least-squares plane. This method is more robust than DDIM, but it can be expensive to compute and it can introduce numerical errors.