vton-002 / vton.py
noumanjavaid's picture
Upload 7 files
2792168 verified
raw
history blame
2.39 kB
import replicate
import requests
import os
def virtual_try_on(garm_img_url, human_img_url, garment_des):
"""
Perform virtual try-on using the IDM-VTON model on Replicate.
Args:
garm_img_url (str): Path or URL of the garment image
human_img_url (str): Path or URL of the human image
garment_des (str): Description of the garment
Returns:
str: Path to the saved output image
"""
# Convert local files to data URLs if needed
def file_to_data_url(file_path):
if file_path.startswith('http'):
response = requests.get(file_path)
img_data = response.content
else:
with open(file_path, 'rb') as f:
img_data = f.read()
import base64
encoded = base64.b64encode(img_data).decode('utf-8')
return f"data:image/png;base64,{encoded}"
# Prepare input for the model
input_data = {
"garm_img": file_to_data_url(garm_img_url),
"human_img": file_to_data_url(human_img_url),
"garment_des": garment_des
}
print("Sending request to IDM-VTON model...")
# Run the model on Replicate
output = replicate.run(
"cuuupid/idm-vton:c871bb9b046607b680449ecbae55fd8c6d945e0a1948644bf2361b3d021d3ff4",
input=input_data
)
# Save the output image
output_path = "output.jpg"
with open(output_path, "wb") as file:
file.write(output.read())
print(f"Virtual try-on complete! Output saved to {output_path}")
return output_path
# Example usage
if __name__ == "__main__":
# Example inputs
garm_img = "https://replicate.delivery/pbxt/KgwTlZyFx5aUU3gc5gMiKuD5nNPTgliMlLUWx160G4z99YjO/sweater.webp"
human_img = "https://replicate.delivery/pbxt/KgwTlhCMvDagRrcVzZJbuozNJ8esPqiNAIJS3eMgHrYuHmW4/KakaoTalk_Photo_2024-04-04-21-44-45.png"
garment_des = "cute pink top"
# Check if REPLICATE_API_TOKEN is set
if "REPLICATE_API_TOKEN" not in os.environ:
print("Warning: REPLICATE_API_TOKEN environment variable is not set.")
print("Please set it using: export REPLICATE_API_TOKEN='your_token_here'")
try:
output_path = virtual_try_on(garm_img, human_img, garment_des)
print(f"Success! Try-on image saved to {output_path}")
except Exception as e:
print(f"Error occurred: {e}")