Help for 1st ML project

Hello everyone !

I’m trying to build an app for my girlfriend so she could try on tattoos.

My initial idea was to have a 3D model where she could put the tattoo with the location, size and orientation she wants (like on https://trytattoo3d.com) and then retrieve these parameters and have a image generation model that returns a picture of her she inputted with the tattoo to see how it looks like on her.

Would you have any advice on the feasibility and how to start such a project ? What should I look into ?

Thanks a lot !

1 Like

Is that a Unity avatar being used at https://trytattoo3d.com/? I used a free online service to generate my avatar clone. Then you can choose material and swing the camera round. There is a steep learning curve which has more to do with games development than machine learning. Much easier for me was using DepthScene which is free on HuggingFace. You can approximate the depth from a photo of your girlfriend and apply it to the tattoo?

“”"

(c) CC BY-SA 4.0, Tremeschin

Simple example of programmatically batch rendering multiple inputs

“”"

from pathlib import Path

from depthflow.scene import DepthScene, DepthState

def main():

\# Change to your own paths!

INPUTS  = Path(r"C:\\Users\\eazy8\\Downloads\\backup chatgbt\\images")

OUTPUTS = Path(r"C:\\Users\\eazy8\\Downloads\\backup chatgbt\\output")

OUTPUTS.mkdir(exist_ok=True)  # Make sure output folder exists



scene = DepthScene(backend="headless")

scene.ffmpeg.h264(preset="veryfast")



for ext in ("jpg", "jpeg", "png"):

    for file in Path(INPUTS).glob(f"\*.{ext}"):

        scene.input(image=file)



        \# Animation variation one

        scene.config.animation.clear()

        scene.state = DepthState() # Fixme: Always reset?

        scene.circle(intensity=0.8)

        scene.main(

            output=(OUTPUTS/f"{file.stem}-circle.mp4"),

            time=7, ssaa=1.5, turbo=False,

        )



        \# Animation variation two

        scene.config.animation.clear()

        scene.state = DepthState()

        scene.zoom(intensity=0.3, isometric=0, loop=True)

        scene.main(

            output=(OUTPUTS/f"{file.stem}-zoom.mp4"),

            time=10, ssaa=1.5, turbo=False,

        )

if _name_ == “_main_”:

main()
1 Like

I thought the closest existing project might be the VTON family. However, Diffusion models alone aren’t really suited for tasks requiring high output accuracy. I think details like size, angle, and other specifics are likely to become ambiguous…

1 Like