3D mesh generator based on 2D images
The device generates 3D meshes from 2D images using a neural network, addressing the inefficiency of manual 3D mesh creation in computer animation by automating the process and improving realism.
Patent Information
- Application Number
- JP2023526010
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2020-10-29
- Publication Date
- 2025-01-29
- Estimated Expiration
- 2040-10-29
AI Technical Summary
Existing computer animation systems require manual programming and designing of 3D meshes for objects, which is time-consuming and limits the efficiency of generating realistic animations, especially for complex movements and appearances.
A device and method that generates a 3D mesh from a single 2D image using a neural network trained on synthetic data, comprising a communication interface, memory unit, pre-processing engine, neural network engine, and mesh generator engine to create a 3D mesh from a 2D image, including joint heat maps and segmentation maps.
Enables the automatic generation of realistic 3D meshes from 2D images, reducing manual effort and enhancing the efficiency of creating animated objects with natural movements and appearances.
Smart Images

Figure 0007624065000001 
Figure 0007624065000002 
Figure 0007624065000003
Abstract
Description
[Background technology]
[0001] Computer animation is a field of computer-generated imagery used for a variety of purposes, including in film, video games, entertainment, biomechanics, training footage, sports simulators, and other technologies. in Animation of people or other objects may involve the generation of three-dimensional meshes that may be manipulated by a computer animation system to perform various movements in three dimensions. The movements may be viewed by a user or audience from a single angle or from multiple angles.
[0002] Objects to be animated in computer animation are typically pre-programmed within the system. For example, an artist or illustrator may develop a general look for the object to be animated. In some embodiments, multiple looks may be generated for objects such as people with different face or body types. In designing these additional avatars, a programmer or graphic designer may typically generate meshes for each avatar individually. In some embodiments, scans of real-world objects may also be captured from multiple angles and stitched together to form a three-dimensional mesh. Summary of the Invention [Means for solving the problem]
[0003] Computer animation is used in a wide range of different fields to provide movement to various objects, such as people. In many implementations of computer animation, a three-dimensional representation of an object is generated with various characteristics. The characteristics are not particularly limited and may depend on the object and the expected movement and range of motion the object may have. For example, if the object is a car, the car may be expected to have a standard shape, such as a sedan, with doors that open, wheels that can swivel, and front wheels that can turn within a certain range of angles.
[0004] In other examples where the object is a person, the person will have various joints with different ranges of motion. It should be understood by those skilled in the art with the benefit of this description that the term "joint" refers to various reference points on a person that may be modeled with ranges of motion to represent approximations of reference points on a person. For example, a joint may also refer to a reference point on a person that is not a physiological joint, such as an eye. In other examples, a joint may refer to a reference point associated with multiple physiological bone joints, such as a wrist or ankle.
[0005] Thus, an object to be animated may generally be represented by a pre-programmed mesh with relevant characteristics such as location and range of motion at each joint. The location and available range of motion at each joint will provide the object with the appearance of natural movement. In addition, the mesh may have additional features such as texture and color added onto it to provide a clearer appearance of the object. For example, a three-dimensional mesh of a person may be generated with joints representing physiological joints to mimic the person's natural movement. Color may be added to the mesh to match skin color and / or clothing, and texture may also be added to provide the appearance of a real person. The mesh may then be animated for various purposes such as those described above.
[0006] An apparatus and method are provided for generating a three-dimensional mesh based on a single two-dimensional image. The apparatus may receive an image representing an object and then derive a complete three-dimensional mesh, including inferring the back surface of the object that is not visible in the input image. The generation of the back surface of the object is performed by a neural network that is trained with synthetic data to approximate the back surface based on various input parameters, which will be described in detail below. By providing a means for generating a three-dimensional mesh from a single two-dimensional image, lifelike avatars may be generated without manually generating the avatars by a designer or programmer. Moreover, the use of a single two-dimensional image further expedites the process compared to other methods that may use multiple scans from multiple angles to interpolate the three-dimensional mesh, color, and texture.
[0007] In this description, the models and techniques discussed below generally apply to humans, but it should be understood by those skilled in the art with the benefit of this description that the embodiments described below may be applied to other objects, such as animals and machines, as well. The present invention provides, for example, the following: (Item 1) 1. An apparatus comprising: a communications interface for receiving raw data from an external source, said raw data including representations of objects; a memory storage unit for storing said raw data; a pre-processing engine for generating a coarse segmentation map and a joint heat map from the raw data, the coarse segmentation map for outlining the object and the joint heat map for representing points on the object; a neural network engine for receiving the raw data, the coarse segmentation map, and the joint heat map, the neural network engine for generating a plurality of two-dimensional maps; a mesh generator engine for generating a three-dimensional mesh based on said plurality of two-dimensional maps; An apparatus comprising: (Item 2) 2. The apparatus of item 1, wherein the raw data is a two-dimensional image. (Item 3) 3. The apparatus according to item 2, wherein the two-dimensional image is an RGB image. (Item 4) 4. The apparatus according to any one of claims 1 to 3, wherein the object is a person. (Item 5) 5. The apparatus of claim 4, wherein the pre-processing engine is for generating a plurality of joint heatmaps, and the neural network engine is for using the plurality of joint heatmaps and generating the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap. (Item 6) 6. The apparatus of claim 5, wherein the plurality of joint heat maps include a separate heat map for each of a left eye, a right eye, a left shoulder, a right shoulder, a left elbow, a right elbow, a left wrist, a right wrist, a left hip, a right hip, a left knee, a right knee, a left ankle, a right ankle, a left toes, and a right toes. (Item 7) 7. The apparatus of any one of claims 1-6, wherein the neural network engine is for using a fully convolutional network. (Item 8) 8. The apparatus of claim 7, wherein the fully convolutional network comprises a semi-supervised two-stage stacked U-net. (Item 9) 9. The apparatus of any one of items 1-8, wherein the plurality of two-dimensional maps include a fine segmentation map, a distance map, a thickness map, a front red map, a front green map, a front blue map, a back red map, a back green map, and a back blue map. (Item 10) 10. The apparatus of claim 9, wherein the plurality of two-dimensional maps further includes a first front normal map, a second front normal map, a first back normal map, and a second back normal map to improve a training process of the neural network engine. (Item 11) 11. The apparatus of claim 9 or 10, wherein the distance map comprises a distance between a reference plane and a front surface. (Item 12) Item 12. The apparatus of item 11, wherein the reference plane is between a camera plane and the object. (Item 13) 13. The apparatus of any one of items 9-12, wherein the neural network engine is for removing lighting and shadow data from the raw data. (Item 14) 14. The apparatus of any one of items 9-13, wherein the mesh generator engine generates the 3D mesh within the fine segmentation map and discards pixels that fall outside the segmentation. (Item 15) 1. A method comprising: receiving raw data from an external source via a communications interface, the raw data including a human expression; storing said raw data in a memory storage unit; generating a coarse segmentation map and a joint heat map from the raw data via a pre-processing engine, the coarse segmentation map for outlining the person and the joint heat map for representing joints on the person; applying a neural network to the raw data, the coarse segmentation map, and the joint heatmap to generate a plurality of two-dimensional maps; generating a three-dimensional mesh based on said plurality of two-dimensional maps; A method comprising: (Item 16) Item 16. The method of item 15, wherein receiving the raw data includes receiving a two-dimensional image. (Item 17) Item 17. The method of item 16, wherein receiving the two-dimensional image includes receiving an RGB image. (Item 18) 18. The method of any one of items 15-17, further comprising generating a plurality of joint heatmaps, the plurality of joint heatmaps being used by the neural network to generate the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap. (Item 19) 19. The method of any one of items 15-18, wherein applying the neural network comprises applying a fully convolutional network. (Item 20) 20. The method of any one of claims 15-19, wherein generating the plurality of two-dimensional maps includes generating a distance map, the distance map including a distance between a reference surface and a front surface. (Item 21) 21. The method of claim 20, further comprising establishing the reference plane between a camera plane and the person. (Item 22) 22. The method of any one of items 15-21, further comprising removing lighting and shadow data from the raw data using the neural network. (Item 23) A non-transitory computer readable medium encoded with code, the code causing a processor to: receiving raw data from an external source via a communications interface, the raw data including a human expression; storing said raw data in a memory storage unit; generating a coarse segmentation map and a joint heat map from the raw data via a pre-processing engine, the coarse segmentation map for outlining the person and the joint heat map for representing joints on the person; applying a neural network to the raw data, the coarse segmentation map, and the joint heatmap to generate a plurality of two-dimensional maps; generating a three-dimensional mesh based on said plurality of two-dimensional maps; A non-transitory computer readable medium for instructing a user to: (Item 24) 24. The non-transitory computer readable medium of claim 23, wherein the code is for instructing the processor to receive a two-dimensional image as the raw data. (Item 25) 25. The non-transitory computer-readable medium of claim 24, wherein the two-dimensional image is an RGB image. (Item 26) 26. The non-transitory computer-readable medium of any one of claims 23-25, wherein the code is for instructing the processor to generate a plurality of joint heatmaps, the plurality of joint heatmaps being used by the neural network to generate the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap. (Item 27) 27. The non-transitory computer-readable medium of any one of claims 23-26, wherein the neural network to be applied is a fully convolutional neural network. (Item 28) 26. The non-transitory computer-readable medium of any one of claims 23-25, wherein the code is for instructing the processor to generate a distance map as one of the plurality of two-dimensional maps, the distance map including a distance between a reference plane and a front surface. (Item 29) 30. The non-transitory computer-readable medium of claim 28, wherein the code is for instructing the processor to set the reference plane using the neural network, the reference plane being to be set between a camera plane and the person. (Item 30) 30. The non-transitory computer-readable medium of any one of claims 23-29, wherein the code is for instructing the processor to remove lighting and shadow data from the raw data using the neural network. [Brief description of the drawings]
[0008] Reference will now be made, by way of example only, to the accompanying drawings in which:
[0009] [Figure 1] FIG. 1 is a schematic diagram of components of an exemplary apparatus for generating a 3D mesh based on a single 2D image.
[0010] [Diagram 2] FIG. 2 is an example of raw data representing an image received at the apparatus of FIG.
[0011] [Figure 3A] FIG. 3A is a map of the intensity of the red color in the image of FIG.
[0012] [Figure 3B] FIG. 3B is a map of the intensity of the green color in the image of FIG.
[0013] [Figure 3C] FIG. 3C is a map of the intensity of the blue color in the image of FIG.
[0014] [Figure 4] FIG. 4 is a coarse segmentation map of the image of FIG.
[0015] [Figure 5A] FIG. 5A is a joint heat map of the right shoulder joint of the person in the image of FIG.
[0016] [Figure 5B] FIG. 5B is a joint heatmap of the right elbow joint of the person in the image of FIG. 2.
[0017] [Figure 5C] FIG. 5C is a joint heat map of the right wrist joint of the person in the image of FIG.
[0018] [Figure 5D] FIG. 5D is a joint heat map of the left shoulder joint of the person in the image of FIG.
[0019] [Figure 5E] FIG. 5E is a joint heatmap of the left elbow joint of the person in the image of FIG.
[0020] [Figure 5F] FIG. 5F is a joint heat map of the left wrist joint of the person in the image of FIG.
[0021] [Figure 5G] FIG. 5G is a joint heat map of the right hip joint of the person in the image of FIG.
[0022] [Figure 5H] FIG. 5H is a joint heat map of the right knee joint of the person in the image of FIG.
[0023] [Figure 5I] FIG. 5I is a joint heat map of the right ankle joint of the person in the image of FIG.
[0024] [Figure 5J] FIG. 5J is a joint heatmap of the left hip joint of the person in the image of FIG.
[0025] [Figure 5K] FIG. 5K is a joint heat map of the left knee joint of the person in the image of FIG.
[0026] [Figure 5L] FIG. 5L is a joint heat map of the left ankle joint of the person in the image of FIG.
[0027] [Figure 5M] FIG. 5M is a joint heatmap of the right eye of the person in the image of FIG.
[0028] [Figure 5N] FIG. 5N is an articular heatmap of the left eye of the person in the image of FIG.
[0029] [Figure 5P] FIG. 5P is a joint heat map of the left toe of the person in the image of FIG. 2.
[0030] [Figure 5Q] FIG. 5Q is a toe joint heat map of the right foot of the person in the image of FIG.
[0031] [Figure 6] FIG. 6 is a representation of the joint heatmaps shown in FIGS. 5A-5Q superimposed onto a single image.
[0032] [Figure 7]FIG. 7 is a fine segmentation map of the image of FIG.
[0033] [Figure 8A] FIG. 8A is a frontal 2D distance map as generated by the neural network engine.
[0034] [Figure 8B] FIG. 8B is a frontal 2D thickness map as generated by the neural network engine.
[0035] [Figure 9A] FIG. 9A is a map of the frontal red intensity as generated by the neural network engine.
[0036] [Figure 9B] FIG. 9B is a map of the frontal green intensity as generated by the neural network engine.
[0037] [Figure 9C] FIG. 9C is a map of the frontal blue intensity as generated by the neural network engine.
[0038] [Figure 10A] FIG. 10A is a map of the backside red intensity as generated by the neural network engine.
[0039] [Figure 10B] FIG. 10B is a map of the backside green intensity as generated by the neural network engine.
[0040] [Figure 10C] FIG. 10C is a map of the back surface blue intensity as generated by the neural network engine.
[0041] [Figure 11A]FIG. 11A is a map of first normal values for the front face as generated by the neural network engine.
[0042] [Figure 11B] FIG. 11B is a map of the second normal values of the front face as generated by the neural network engine.
[0043] [Figure 12A] FIG. 12A is a map of the first normal values of the back face as generated by the neural network engine.
[0044] [Figure 12B] FIG. 12B is a map of the second normal values of the back face as generated by the neural network engine.
[0045] [Figure 13A] FIG. 13A is a front view of 3D meshes stitched together.
[0046] [Figure 13B] FIG. 13B is a side view of the 3D meshes stitched together.
[0047] [Figure 13C] FIG. 13C is a rear view of the 3D meshes stitched together.
[0048] [Figure 14] FIG. 14 is a schematic diagram of a system for illustrating distance and thickness measurements.
[0049] [Figure 15A] FIG. 15A is a front view of a stitched 3D mesh with added color based on the 2D maps of FIGS. 9A-9C and 10A-10C.
[0050] [Figure 15B]FIG. 15B is a side view of the mesh shown in FIG. 15A.
[0051] [Figure 15C] FIG. 15C is a rear view of the mesh shown in FIG. 15A.
[0052] [Figure 16] FIG. 16 is a schematic diagram of a system for providing access to the device for generating a 3D mesh based on a single 2D image.
[0053] [Figure 17] FIG. 17 is a schematic diagram of components of another exemplary apparatus for generating a three-dimensional mesh based on a single two-dimensional image.
[0054] [Figure 18] FIG. 18 is a flow chart of one embodiment of a method for generating a 3D mesh based on a single 2D image. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0055] Detailed Description As used herein, any use of terms suggesting absolute orientation (e.g., "top," "bottom," "upper," "lower," "left," "right," "low," "high," etc.) is for illustrative convenience and may refer to the orientation shown in a particular figure. However, such terms should not be construed in a limiting sense, as it is envisioned that various components will, in practice, be utilized in the same or different orientations than those described or shown.
[0056] Referring to FIG. 1, a schematic diagram of an apparatus for generating a three-dimensional mesh based on a single two-dimensional image is generally shown at 50. The apparatus 50 may include additional components such as various additional interfaces and / or input / output devices, such as indicators, for interacting with a user of the apparatus 50. The interaction may include viewing an operational status of the apparatus 50 or the system in which the apparatus 50 operates, updating parameters of the apparatus 50, or resetting the apparatus 50. In this embodiment, the apparatus 50 is for receiving raw data, such as a standard RGB image, processing the raw data, and generating a three-dimensional mesh. In this embodiment, the apparatus 50 includes a communication interface 55, a memory storage unit 60, a pre-processing engine 65, a neural network engine 70, and a mesh generator engine 75.
[0057] The communication interface 55 is for communicating with an external source to receive raw data representing the object. In this embodiment, the communication interface 55 may communicate with the external source via a network, which may be a public network shared with a number of connected devices, such as a WiFi network or a cellular network. In other embodiments, the communication interface 55 may receive data from the external source via a private network, such as an intranet or a wired connection with another device. As another example, the communication interface 55 may connect to another nearby device via a Bluetooth connection, a wireless signal, or an infrared signal. In particular, the communication interface 55 is for receiving raw data from the external source, which will be stored on the memory storage unit 60.
[0058] In this embodiment, the raw data may be a two-dimensional image of an object. The manner in which the object is represented and the exact format of the two-dimensional image are not particularly limited. In this embodiment, the two-dimensional image is received in RGB format. It should be understood by those skilled in the art with the benefit of this description that the RGB format is an additive color model in which a color image is represented by three values, each value representing the intensity of red, green, or blue. Thus, the two-dimensional image may be represented by three separate maps. In other embodiments, the two-dimensional image may be in a different format, such as a raster graphic file or a compressed image file, captured and processed by a camera.
[0059] Additionally, communication interface 55 may be used to transmit results such as the generated three-dimensional mesh. For example, communication interface 55 may communicate with an animation engine (not shown), which may be part of apparatus 50 or reside on a separate device. Thus, apparatus 50 may operate to receive raw data from an external source and generate three-dimensional objects with joints, surface colors, and textures that are transmitted either back to the external source for additional processing and / or rendering, or back to an additional device for additional processing and / or rendering. Thus, apparatus 50 may operate as a service for a computer animator who may wish to generate a new avatar that resembles an individual in a photograph.
[0060] The memory storage unit 60 is for storing data received via the communication interface 55. In particular, the memory storage unit 60 may store raw data including two-dimensional images representing objects for which three-dimensional mesh and surface data are to be generated. In this embodiment, the memory storage unit 60 may store a plurality of two-dimensional images representing different objects in two dimensions for the purpose of three-dimensional animation. In particular, the objects may be images of people having different sizes and may include people in different poses showing different joints. For example, the image may be of a person in an A-position, clearly showing multiple approximately symmetrical joints. In another embodiment, the person may be in a standard T-position position. In a further embodiment, the person in the raw data may be in a natural pose with one or more joints blocked from view. Although each embodiment relates to a two-dimensional image of a person, it should be understood with the benefit of this description that the embodiments may also include images representing different types of objects, such as animals or machines.
[0061] The memory storage unit 60 may also be used to store additional data to be used by the apparatus 50. For example, the memory storage unit 60 may store various reference data sources, such as template and model data. It is understood that the memory storage unit 60 may include multiple media, which may be physical computer-readable media used to maintain multiple databases, or may be distributed across one or more external servers, such as a central server or cloud servers.
[0062] In this embodiment, the memory storage unit 60 includes a non-transitory machine-readable storage medium, which may be, but is not limited to, any electronic, magnetic, optical, or other physical storage device. The memory storage unit 60 may be used to store information such as data received from an external source via the communication interface 55, template data, training data, preprocessed data from the preprocessing engine 65, results from the neural network engine 70, or results from the mesh generator engine 75. In addition, the memory storage unit 60 may be used to store instructions regarding the general operation of the device 50. Furthermore, the memory storage unit 60 may store an operating system, executable by the processor, to provide the device 50 with general functionality, such as functionality for supporting various applications. The memory storage unit 60 may additionally store instructions for operating the preprocessing engine 65 and the neural network engine 70, or the mesh generator engine 75. Furthermore, the memory storage unit 60 may also store control instructions for operating other components and any peripheral devices that may be disposed with the device 50, such as a camera and a user interface.
[0063] Memory storage unit 60 may be pre-loaded with data, such as training data or instructions for operating components of device 50. In other embodiments, instructions may be loaded via communications interface 55 or by directly transferring instructions from a portable memory storage device connected to device 50, such as a memory flash drive. In other embodiments, memory storage unit 60 may be an external unit, such as an external hard drive or a cloud service that provides content.
[0064] The pre-processing engine 65 is for pre-processing the raw data from the memory storage unit 60 to generate a coarse segmentation map and a two-dimensional joint heat map. In this embodiment, the raw data may include a color image of an object. It should be understood by those skilled in the art that the format of the raw data is not particularly limited. To illustrate the operation of the pre-processing engine 65, the raw data may be rendered to provide a color image (shown in grayscale in FIG. 2). In this specific embodiment, the object of the raw data represents a photograph of a person in an A-position. Furthermore, the raw data in this specific embodiment is an RGB image that may be represented as three superimposed maps of red, green, and blue intensity. The maps may include values, such as normalized values from 0 to 1, for each pixel to represent the intensity of the color. Continuing with this embodiment, the color image shown in FIG. 2 may be represented by a red map (FIG. 3A), a green map (FIG. 3B), and a blue map (FIG. 3C), with darker shades of grayscale representing lower intensity amounts of individual colors. In other embodiments where the raw data may not be in an RGB image format, the raw data may be converted to RGB format prior to being received by pre-processing engine 65. Alternatively, pre-processing engine 65 may be configured to receive and handle additional types of image formats.
[0065] The coarse segmentation map generated by the pre-processing engine 65 is generally intended to provide an outline of an object. In this embodiment, the coarse segmentation map is a two-dimensional map. Referring to FIG. 4, an embodiment of a coarse segmentation map for the image shown in FIG. 2 is shown. The coarse segmentation map includes, for each pixel, a binary value to indicate whether the pixel is part of an object or not. Thus, the coarse segmentation map shows a shape similar to a person in the original image in an A-shaped pose. It should be understood by those skilled in the art with the benefit of this description that the coarse segmentation map may be used to isolate pixels of interest for further analysis, such as by the neural network engine 70.
[0066] The generation of the coarse segmentation map is not particularly limited and may involve various image processing engines or user input. In this embodiment, a computer vision based human pose and segmentation system such as the wrnchAI engine is used. In other embodiments, other types of computer vision based human segmentation systems such as OpenPose, Mask-R CNN, or other depth sensor, stereo camera, or LIDAR based human segmentation systems such as Microsoft Kinect or Intel RealSense may also be used. In addition, the segmentation map may be annotated manually using appropriate software such as CVAT, or in a semi-automatic manner using segmentation assistant tools such as those in Adobe Photoshop or GIMP.
[0067] The joint heatmap generated by the pre-processing engine 65 is generally intended to provide a representation of the locations of points on an object. In this example, the joint heatmap is a two-dimensional map. Points of interest on an object are joints that may correspond to locations where the object undergoes relative motion between parts of the object. Continuing with this example of a person as the object, the joints may represent joints on the person, such as the shoulder, where the arm moves relative to the torso. The joint heatmap includes a confidence value for each pixel to indicate the likelihood that the pixel is where the joint of interest is located. Thus, the joint heatmap typically shows a single hotspot where the pre-processing engine 65 has determined that the joint of interest is located. It should be understood that in some examples, the pre-processing engine 65 may be part of an external system that provides pre-processed data, or the pre-processed data may be generated by other methods, such as manually by a user.
[0068] It should be understood by those skilled in the art with the benefit of this description that an object may have more than one joint heat map. In particular, separate joint heat maps may be generated for multiple predefined joints. In a specific embodiment of a person, multiple joints may be predefined to represent points at which a person may have relative motion. It should also be understood that for each joint, certain ranges of motion or characteristics for the joint may be approximated. For example, a shoulder joint may have a predetermined range of motion and degrees of freedom that approximates the motion around a human shoulder, and an elbow may have more limited degrees of freedom that resembles the difference between a person's shoulder and elbow. It should also be understood by those skilled in the art with the benefit of this description that, in this embodiment, more predetermined joints identified for an object allow for a more accurate and realistic depiction of a person.
[0069] In this particular embodiment, pre-processing engine 65 is configured to identify and localize 16 joints on a human: in particular, left eye, right eye, left shoulder, right shoulder, left elbow, right elbow, left wrist, right wrist, left hip, right hip, left knee, right knee, left ankle, right ankle, left toes, and right toes. Referring back to the raw data images shown in FIG. 2, the pre-processing engine 65 generates joint heat maps for the right shoulder (FIG. 5A), right elbow (FIG. 5B), right wrist (FIG. 5C), left shoulder (FIG. 5D), left elbow (FIG. 5E), left wrist (FIG. 5F), right hip (FIG. 5G), right knee (FIG. 5H), right ankle (FIG. 5I), left hip (FIG. 5J), left knee (FIG. 5K), left ankle (FIG. 5L), right eye (FIG. 5M), left eye (FIG. 5N), left toes (FIG. 5P), and right toes (FIG. 5Q). By superimposing FIGS. 5A-5Q, the joints of the person shown in the original FIG. 2 can also be viewed in FIG. 6. It should be understood that each of the joint heat maps will be used by the neural network engine 70 and that the representation shown in FIG. 6 is for user viewing and comparison purposes.
[0070] The generation of the joint heatmap may involve various image processing engines, without limitation. In this embodiment, a computer vision based human pose system, such as the wrnchAI engine, is used to identify each joint and assign a confidence value to the location of the joint in the raw data. In other embodiments, other types of human pose systems may also be used, such as OpenPose, Google Blaze Pose, Mask-R CNN, or other depth sensor, stereo camera, or LIDAR based human pose systems, such as Microsoft Kinect or Intel RealSense. In further embodiments, the human pose may alternatively be manually annotated in a suitable keypoint annotation tool, such as Keymakr.
[0071] In this embodiment, the coarse segmentation maps and joint heat maps generated by the pre-processing engine 65 are stored in the memory storage unit 60 for subsequent use by the neural network engine 70. In other embodiments, the coarse segmentation maps and joint heat maps generated by the pre-processing engine 65 may be fed directly into the neural network engine 70 for subsequent processing.
[0072] The neural network engine 70 receives raw data from the memory storage unit 60, and the coarse segmentation map and the joint heat map generated by the pre-processing engine 65. In this embodiment, the neural network engine 70 may access the memory storage unit 60, read the input, and generate a number of two-dimensional maps. The amount of input received by the neural network engine 70 is not particularly limited and may include more or less input than those described in the following embodiment. The two-dimensional maps generated by the neural network engine 70 are not particularly limited. For example, the two-dimensional maps may include maps of other characteristics. Furthermore, it should be understood by those skilled in the art with the benefit of this description that not all two-dimensional maps may be used by the mesh generator engine 75, and some two-dimensional maps will be used to improve training the neural network engine 70 and for improved accuracy of prediction.
[0073] The manner in which the two-dimensional map is generated is not particularly limited. In this embodiment, the neural network engine 70 is for applying a fully convolutional neural network to multiple inputs to generate multiple two-dimensional maps. In particular, the neural network engine 70 uses an architecture with a semi-supervised two-stage stacked U-net. In other embodiments, the neural network engine 70 may have a different architecture, such as a single U-net, an hourglass, or a stacked hourglass.
[0074] In this embodiment, the neural network engine 70 is to be trained using synthetic data. The synthetic data source is not particularly limited. In this embodiment, the synthetic data may be generated using a synthetic data generator using the one provided by the Unity platform, rigged human mesh data from RenderPeople, animations from Adobe Mixamo, and realistic HDRI backgrounds from HDRI Haven, etc. In other embodiments, the synthetic data may be rendered in Maya, Unreal Engine, Blender, or other 3D rendering platforms using body-scanned human mesh data sourced from online sources such as the CAESAR dataset or TurboSquid, or may be generated manually by collecting images with known measurements. In this embodiment, the training data includes 580 rigged characters, 220 HDRI backgrounds, and 1,200 animations. The characters are randomly selected and placed in front of randomly selected and randomly rotated HDRI backgrounds. Random animations are applied to the characters and screenshots are taken. This process is performed to generate approximately 50,000 images for training the neural network. In other embodiments, more or fewer images may also be used.
[0075] Furthermore, the training data used to train the neural network engine 70 may be noisy, such as with the addition of random noise, to further improve the results even if the results of the pre-processing engine 65 are not very accurate. In particular, the enhancement and addition of noise is to reduce the likelihood of overfitting the neural network to the synthetic data and to be robust to lower inaccuracies in the coarse segmentation and joint locations. The enhancement and addition of noise is not particularly limited. For example, the RGB image may be modified using Gaussian blur, motion blur, additive Gaussian noise, JPEG compression, contrast and brightness normalization, salt and pepper noise addition, and scaling and translation. The segmentation of the training data may also include scaling and translation and shrinking / dilating. In addition, the joint locations of the training data (i.e., joint heatmaps) may be subjected to scaling and translation and Gaussian noise addition on the x and y locations of the joints.
[0076] 2, the neural network engine 70 receives the following 20 inputs: a red map (FIG. 3A), a green map (FIG. 3B), a blue map (FIG. 3C), a coarse segmentation map (FIG. 4), and joint heat maps for the right shoulder (FIG. 5A), right elbow (FIG. 5B), right wrist (FIG. 5C), left shoulder (FIG. 5D), left elbow (FIG. 5E), left wrist (FIG. 5F), right hip (FIG. 5G), right knee (FIG. 5H), right ankle (FIG. 5I), left hip (FIG. 5J), left knee (FIG. 5K), left ankle (FIG. 5L), right eye (FIG. 5M), left eye (FIG. 5N), left toes (FIG. 5P), and right toes (FIG. 5Q).
[0077] In this embodiment, the neural network engine 70 generates a fine segmentation map, as shown in Figure 7. Similar to the coarse segmentation map generated by the pre-processing engine, the fine segmentation map contains, for each pixel, a binary value indicating whether the pixel is part of a human face or not. Thus, the fine segmentation map shows a shape similar to the person in the original image (Figure 2) in the A-pose. Coarse Upon careful inspection of the segmentation map and the fine segmentation map shown in Figure 7, it will become apparent that the fine segmentation map more accurately follows the edges of the person in the image. It should be understood by one of ordinary skill in the art with the benefit of this description that the fine segmentation map may therefore be used to isolate pixels of interest for generating front and back faces and stitching the front to back faces by mesh generator engine 75.
[0078] In this embodiment, the neural network engine 70 may also generate a distance map as shown in FIG. 8A to identify the distance to the front of the object as determined by the neural network engine 70. The distance may be determined as a function from the plane in which the camera capturing the original raw data is located. In other embodiments, the distance may be determined as a function from a reference plane. By setting the reference plane to be a plane other than the camera plane, such as between the camera plane and the object, a determination of the distance to the camera is not required, and thus the camera parameters become irrelevant. The neural network engine 70 further determines that the distance to the back of the person in the image is from the front in the thickness map shown in FIG. 8B. Since the raw data does not contain any information about the back, it should be understood by those skilled in the art with the benefit of this description that the thickness of the person is determined based on training from the synthetic data and inference based on contextual cues and common patterns, relationships and correlations between the geometry and appearance of the front and back of the person.
[0079] Following this embodiment, the neural network engine 70 further generates color information for the front and back. In particular, the neural network engine generates a front red map (FIG. 9A), a front green map (FIG. 9B), a blue map (FIG. 9C), a back red map (FIG. 10A), a back green map (FIG. 10B), and a back blue map (FIG. 10C). As with the other color maps described above, the color map generated by the neural network engine 70 may also be normalized to values between 0 and 1. In this embodiment, the neural network engine 70 may also process the original color map to remove light and shade data so that the generated two-dimensional color map does not include any shade or additional source lighting that may be in the original raw data file.
[0080] Further, the neural network engine 70 may generate additional optional maps for further refinement of the accuracy of the two-dimensional map used by the mesh generator engine 75. In addition, the additional two-dimensional maps may also aid in further training of the neural network engine 70. As an example, the neural network engine 70 may generate two-dimensional maps to describe the front and back surface normals for this purpose. With the surface position constraints and normalization of the normal vectors to the surfaces, it should be understood by those skilled in the art with the benefit of this description that only two values are used to describe the surface normals, since a third value may be generated from the other two values with the constraints described above. Thus, the neural network engine 70 may generate a first front normal map (FIG. 11A), a second front normal map (FIG. 11B), a first back normal map (FIG. 12A), and a second back normal map (FIG. 12B).
[0081] The mesh generator engine 75 is for generating a three-dimensional mesh based on the plurality of two-dimensional maps generated by the neural network engine 70. The manner in which the mesh generator engine 75 generates the three-dimensional mesh is not particularly limited and depends on the output of the neural network engine 70.
[0082] In this embodiment, the mesh generator engine 75 uses a fine segmentation map (FIG. 7) to isolate pixels or points that form part of the object and discards or ignores all pixels that fall outside the segmentation area. The front face of the mesh closest to the camera is then formed using the distance map (FIG. 8A), and the back face of the mesh is formed using the thickness map (FIG. 8B) in relation to the front face of the mesh. It should be understood by those skilled in the art with the benefit of this description that the mesh generator engine 75 may use the boundary of the segmentation area to connect the front face to the back face and generate more triangles in the mesh. Accordingly, the contours of the three-dimensional mesh formed from the distance map and thickness map are shown from the front (FIG. 13A), side (FIG. 13B), and back (FIG. 13C) views.
[0083] 14, a schematic diagram of a system 200 illustrating the measurements used to generate a three-dimensional mesh is shown. In this example, the system 200 includes a camera 210 for capturing an image of an object 205 at a position on a camera plane 215. After applying the neural network engine 70 as described in the above example, the distance map is generated based on a reference surface Distance d from 220 to pixel (x,y) 1 The thickness map is then calculated as the distance d 2 to provide.
[0084] The mesh generator engine 75 then uses the front red map (FIG. 9A), front green map (FIG. 9B), blue map (FIG. 9C), back red map (FIG. 10A), back green map (FIG. 10B), and back blue map (FIG. 10C) to add color to the mesh and generate the 3D mesh shown (in grayscale) from the front (FIG. 15A), side (FIG. 15B), and back (FIG. 15C) views.
[0085] Referring to FIG. 16, a schematic diagram of a computer network system is generally shown at 100. It should be understood that the system 100 is purely exemplary, and it will be apparent to those skilled in the art that a variety of computer network systems are envisioned. The system 100 includes an apparatus 50 for generating a three-dimensional mesh, a number of external sources 20-1 and 20-2 (collectively, these external sources are referred to herein as "external sources 20"), and a number of content requesters 25-1 and 25-2 (collectively, these content requesters are referred to herein as "content requesters 25"), connected by a network 110. Network 110 may include any type of network, such as, but not limited to, the Internet, an intranet or local area network, a cellular network, or any combination of these types of networks, In some embodiments, network 110 may also include a peer-to-peer network.
[0086] In this embodiment, the external source 20 may be any type of computing device used to communicate with the device 50 via the network 110 to provide raw data, such as images of a person. For example, the external source 20-1 may be a personal computer. It should be understood by those skilled in the art with the benefit of this description that the personal computer may be substituted with a laptop computer, a portable electronic device, a gaming device, a mobile computing device, a portable computing device, a tablet computing device, a mobile phone, and a smartphone, or the like. In some embodiments, the external source 20-2 may be a camera for capturing images. The raw data may be generated from images or videos received or captured at the external source 20. It should be understood that in other embodiments, the external source 20 may be a personal computer on which content may be generated such that the raw data is automatically generated from the content. The content requester 25 may also be any type of computing device used to communicate with the device 50 via the network 110 for receiving and subsequently animating a three-dimensional mesh. For example, content requester 25 may be a computer animator searching for new avatars to animate within a program.
[0087] 17, another schematic diagram of an apparatus 50a for generating a 3D mesh based on a single 2D image is generally shown. Similar components of the apparatus 50a are depicted similarly with reference to their counterparts in the apparatus 50, except followed by the subscript "a". In this example, the apparatus 50a includes a communication interface 55a, a memory storage unit 60a, and a processor 80a. In this example, the processor 80a includes a pre-processing engine 65a, a neural network engine 70a, and a mesh generator engine 75a.
[0088] In this embodiment, the memory storage unit 60a may also maintain databases for storing various data used by the device 50a. For example, the memory storage unit 60a may include a database 300a for storing raw data images in RGB image format, a database 310a for storing data generated by the pre-processing engine 65a, a database 320a for storing two-dimensional maps generated by the neural network engine 70a, and a database 330a for storing three-dimensional meshes generated by the mesh generator engine 75a. In addition, the memory storage unit may include an operating system 340a executable by the processor 80a to provide general functionality to the device 50a. Furthermore, the memory storage unit 60a may be encoded with code to instruct the processor 80a to perform specific steps for implementing methods described in more detail below. The memory storage unit 60a may also store instructions for performing operations at the driver level and other hardware drives to communicate with other components and peripheral devices of the device 50a, such as various user interfaces for receiving input or providing output.
[0089] The memory storage unit 60a may also include a synthetic training database 350a for storing training data for training the neural network engine 70a. It should be understood that while this embodiment stores the training data locally, other embodiments may store the training data externally, such as in a file server or in the cloud, where it can be accessed during training of the neural network via the communication interface 55a.
[0090] 18, a flow chart of an exemplary method for generating a three-dimensional mesh based on a single two-dimensional image is generally shown at 400. To aid in explaining the method 400, it is assumed that the method 400 may be performed by the apparatus 50. Indeed, the method 400 may be one way in which the apparatus 50 may be configured. Furthermore, the following discussion of the method 400 may lead to a further understanding of the apparatus 50 and its components. In addition, it is emphasized that the method 400 may not be performed in the exact sequence as shown, and various blocks may be performed in parallel, rather than sequentially, or in an entirely different sequence.
[0091] Beginning at block 410, device 50 receives raw data from an external source via communication interface 55. In this embodiment, the raw data includes a representation of a person. In particular, the raw data is a two-dimensional image of a person. The manner in which the person is represented and the exact format of the two-dimensional image are not particularly limited. In this embodiment, the two-dimensional image is received in RGB format. In other embodiments, the two-dimensional image may be in a different format, such as a raster graphics file or a compressed image file, captured and processed by a camera. Once received at device 50, the raw data will be stored in memory storage unit 60 at block 420.
[0092] Block 430 involves generating pre-processed data with the pre-processing engine 65. In this example, the pre-processed data includes a coarse segmentation map and a joint heat map. The coarse segmentation map is generally to provide an outline of the person so that pixels that fall out of the segmentation can be ignored for analysis purposes. The joint heat map is generally to provide a representation of the locations of points on the person. In this example, the points of interest on the person are joints, which may correspond to where the person has relative movement between body parts, such as the shoulders, where the arms may move relative to the torso.
[0093] Block 440 then involves the neural network engine 70 applying a neural network to the raw data, the coarse segmentation map, and the joint heat map to generate a number of two-dimensional maps, such as those described in detail above. The two-dimensional maps generated by the neural network engine 70 may then be used to generate a three-dimensional mesh in block 450.
[0094] In this embodiment, block 450 generates three-dimensional front and back mesh points from the distance and thickness maps. The X and Y coordinates of each point in each mesh may be defined by the coordinates of each pixel of the map. The Z coordinate of each point of the front mesh may be defined by the value of each pixel of the distance map. The Z coordinate of each point of the back mesh may be defined by the value of each pixel of the distance map added to the value of each corresponding pixel in the thickness map. It should be understood that the above mesh generation methods are purely exemplary, and it will be apparent to one skilled in the art that other methods of generating three-dimensional meshes from maps describing depth and thickness may be conceived.
[0095] Various advantages will not remain apparent to those skilled in the art. In particular, apparatus 50 or apparatus 50a can be used to generate a three-dimensional mesh from a two-dimensional image of an object in a single, simple process. The three-dimensional mesh can then be used for computer animation. As another example, the three-dimensional mesh generated by apparatus 50 or apparatus 50a can also be used as input for a more sophisticated neural network to obtain more refined surface features.
[0096] It will be appreciated that features and aspects of the various embodiments provided above may be combined into additional embodiments that are also within the scope of the present disclosure.
Claims
1. An apparatus comprising: a communications interface for receiving raw data from an external source, the raw data including a representation of an object; a memory storage unit for storing said raw data; a pre-processing engine for generating a coarse segmentation map and a joint heat map from the raw data, the coarse segmentation map for outlining the object and the joint heat map for representing points on the object; a neural network engine for receiving the raw data, the coarse segmentation map, and the joint heat map, the neural network engine for generating a plurality of two-dimensional maps, the plurality of two-dimensional maps including a fine segmentation map, the fine segmentation map including, for each pixel in the raw data, a binary value to indicate whether the pixel is part of the object; a mesh generator engine for generating a three-dimensional mesh based on the plurality of two-dimensional maps; Equipped with The mesh generator engine generates the three-dimensional mesh within a segmentation area defined by the fine segmentation map and discards pixels outside the segmentation area.
2. The apparatus of claim 1 , wherein the raw data is a two-dimensional image.
3. The apparatus of claim 1 , wherein the object is a person.
4. 4. The apparatus of claim 3, wherein the pre-processing engine is for generating a plurality of joint heatmaps, and the neural network engine is for using the plurality of joint heatmaps and generating the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap.
5. 5. The apparatus of claim 4, wherein the multiple joint heat maps include a separate heat map for each of a left eye, a right eye, a left shoulder, a right shoulder, a left elbow, a right elbow, a left wrist, a right wrist, a left hip, a right hip, a left knee, a right knee, a left ankle, a right ankle, a left toes, and a right toes.
6. 2. The apparatus of claim 1, wherein the neural network engine is for using a fully convolutional network, the fully convolutional network comprising a semi-supervised two-stage stacked U-net.
7. An apparatus comprising: a communications interface for receiving raw data from an external source, the raw data including a representation of an object; a memory storage unit for storing said raw data; a pre-processing engine for generating a coarse segmentation map and a joint heat map from the raw data, the coarse segmentation map for outlining the object and the joint heat map for representing points on the object; a neural network engine for receiving the raw data, the coarse segmentation map, and the joint heat map, the neural network engine for generating a plurality of two-dimensional maps; a mesh generator engine for generating a three-dimensional mesh based on the plurality of two-dimensional maps; Equipped with The apparatus, wherein the plurality of two-dimensional maps include a thin segmentation map, a distance map, a thickness map, a front red map, a front green map, a front blue map, a back red map, a back green map, and a back blue map.
8. 8. The apparatus of claim 7, wherein the plurality of two-dimensional maps further comprises a first front normal map, a second front normal map, a first back normal map, and a second back normal map to improve a training process of the neural network engine.
9. The apparatus according to claim 7 or 8, wherein the distance map comprises a distance between a reference plane and a front surface, the reference plane being between a camera plane and the object.
10. The apparatus of claim 1 , wherein the neural network engine is for removing lighting and shadow data from the raw data.
11. 1. A method comprising: receiving raw data from an external source via a communications interface, the raw data including a representation of a person; storing the raw data in a memory storage unit; generating a coarse segmentation map and a joint heat map from the raw data via a pre-processing engine, the coarse segmentation map for outlining the person and the joint heat map for representing joints on the person; establishing a reference plane between a camera plane and the person; applying a neural network to the raw data, the coarse segmentation map, and the joint heatmap to generate a plurality of two-dimensional maps, the plurality of two-dimensional maps including a distance map indicative of a distance between the reference plane and a front of the person; generating a three-dimensional mesh based on the plurality of two-dimensional maps; A method comprising:
12. 12. The method of claim 11, further comprising generating a plurality of joint heatmaps, the plurality of joint heatmaps being used by the neural network to generate the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap.
13. The method of claim 11 , further comprising removing illumination and shadow data from the raw data using the neural network.
14. A non-transitory computer readable medium encoded with code, the code causing a processor to: receiving raw data from an external source via a communications interface, the raw data including a representation of a person; storing the raw data in a memory storage unit; generating a coarse segmentation map and a joint heat map from the raw data via a pre-processing engine, the coarse segmentation map for outlining the person and the joint heat map for representing joints on the person; applying a neural network to the raw data, the coarse segmentation map, and the joint heatmap to generate a plurality of two-dimensional maps, the plurality of two-dimensional maps including a distance map indicative of a distance between a reference plane and a front of the person; generating a three-dimensional mesh based on the plurality of two-dimensional maps; A non-transitory computer readable medium for instructing a user to:
15. 15. The non-transitory computer readable medium of claim 14, wherein the code is for instructing the processor to generate a plurality of joint heatmaps, the plurality of joint heatmaps being used by the neural network to generate the plurality of two-dimensional maps, the plurality of joint heatmaps including the joint heatmap.
16. 15. The non-transitory computer readable medium of claim 14, wherein the code is for instructing the processor to establish the reference plane using the neural network, the reference plane being to be established between a camera plane and the person.
17. 15. The non-transitory computer readable medium of claim 14, wherein the code is for instructing the processor to remove lighting and shadow data from the raw data using the neural network.
Citation Information
Patent Citations
Generating maps without shadows
US20190295318A1