Comments (11)
Hi,
Here it goes:
- textureCoords are the coordinates of the vertices of the candide model in the texture image. The texture image is an image of the face that is being overlaid on top of the face seen by the camera.
- The candide.npz file contains several things: the mean 3D model of a face, the blendshapes, the mesh, the correspondences between the 2D landmarks and the vertices of the model. The candide.obj file cannot store all that information.
- Yes, that is what shapes2D is.
- modelParams contain the weights of the blendshapes of the candide model and the pose of the head, which is used to render the face.
Hope that helps, tell me if you have more questions.
Marek
from faceswap.
Hi,
The first line specifies the location of a vertex in the texture and the second line specifies the 3D position of the corresponding vertex. Those two lines are part of a larger section of code:
glBegin(GL_TRIANGLES)
for triangle in self.mesh:
for vertex in triangle:
glTexCoord2fv(self.textureCoords[:, vertex])
glVertex3fv(vertices[:, vertex])
glEnd()
This section of code specifies the coordinates of triangle vertices in texture and 3D space. The self.mesh
array consists of triples of indices that specify which verices of vertices
form the triangles.
Does that explain it?
Marek
from faceswap.
Thank you! Will try to work with this info.
from faceswap.
Hi @MarekKowalski I'm trying to recreate these lines w/o the opengl dependency. I can't seem to find a good explanation of what's going on here? Please help me understand what the functions are doing. I put in comments the explanations I found but I really can't visualize what glTexCoord2fv & glVertex3fv are doing.
for triangle in self.mesh:
for vertex in triangle:
#Specify s, t, r, and q texture coordinates
glTexCoord2fv(self.textureCoords[:, vertex])
#Specify x, y, z, and w coordinates of a vertex.
glVertex3fv(shape3D[:, vertex])
Thanks again in advance!
from faceswap.
Thank you so much Marek! I studied it further. So, that section of the code does the delaunay triangulation for both textureCoords
& vertices
, makes up for 2 meshes of 175 triangles, 1 2D(texture) & 1 3D(camera image shape3d). However, I'm lost to what happened to these specified meshes.
I have an experience face morphing & face swapping in plain 2D approach. It also involves delaunay triangulation then warps the two 2d image in piecewise affine manner.
I can't seem to find a function in this code that does the warping counterpart. Where do you do the actual warping of these 2D & 3D mesh to arrive at the face-swapped output (data
& renderedImg
)? If the process to arrive does not involve warping then what happens to these meshes after being specified for OpenGL?
Thanks again. You've done so much help.
Cham
from faceswap.
Hi,
There is no delaunay triangulation being performed in the code. The structure of the mesh is provided by the candide model itsef.
Instead of the warping, which you know from the 2D approach, the face mesh is rendered (with the texture from the source image) using OpenGL. The rendering step replaces the warping.
Marek
from faceswap.
I already achieved the result that I want but I just used warping instead of rendering.
Thanks a lot Marek!
from faceswap.
@chamantonio can you please share the headless version, i am trying to set it up in colab, can share the colab if that works
from faceswap.
I already achieved the result that I want but I just used warping instead of rendering.
Thanks a lot Marek!
Hey, could you please share the headless version? I will very appreciate if you can.
from faceswap.
Has anyone succeeded in setting it up in google colab?
Thank you!
from faceswap.
could you find anything?
from faceswap.
Related Issues (20)
- face moving while blinking HOT 1
- Overlay Transparency HOT 1
- Question mean3DShape HOT 1
- The principle about the algorithms in 'FaceSwap' HOT 1
- Real Time? HOT 1
- RuntimeError: Unable to open ../shape_predictor_68_face_landmarks.dat HOT 1
- Face texture. HOT 5
- google colab HOT 1
- mouth HOT 5
- How to interupt the script? HOT 1
- How to make eye blinking HOT 6
- How can run zad2.py without camera HOT 1
- Face Vibrating HOT 2
- Multiple faces in source or target video HOT 4
- How to create my own candide.npz
- Faces not properly aligned in the final image
- Error with predictor HOT 1
- About gesture control and masks
- cv2.error: OpenCV(4.5.2-dev) :-1: error: (-5:Bad argument) in function 'pointPolygonTest' HOT 3
- face reading 3D...
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from faceswap.