생성형 AI 활용하기

생성형 AI를 활용한 가상 피팅 개발하기 (4)

Pro.Dev 2024. 12. 12. 17:55
반응형

4. 가상 피팅 이미지 생성

이 단계에서는 변형된 의류 이미지를 사람의 전신 이미지와 합성하여 가상 피팅 효과를 구현합니다. 이를 위해 간단한 합성 방법을 사용하여 두 이미지를 결합합니다.

1. 이미지 합성 함수 정의

사람 이미지와 변형된 의류 이미지를 합성하는 함수를 작성합니다. 이 과정에서 세그멘테이션 마스크를 사용하여 의류가 사람의 신체에 자연스럽게 결합되도록 합니다.

def composite_images(person_image, warped_clothing, segmentation_mask):
    # 세그멘테이션 마스크를 사용하여 사람의 신체 부분을 추출
    body_mask = (segmentation_mask > 0).astype(np.uint8)  # 사람 부분을 1로 설정

    # 의류 이미지 크기 조정
    clothing_height, clothing_width, _ = warped_clothing.shape

    # 합성할 위치 계산 (예: 어깨 위치)
    shoulder_y = int(body_mask.shape[0] * 0.3)  # 어깨 위치 (상대적 비율로 설정)
    shoulder_x = int((body_mask.shape[1] - clothing_width) / 2)  # 중앙 정렬

    # 의류를 사람 이미지에 올리기 위한 위치 설정
    for y in range(clothing_height):
        for x in range(clothing_width):
            if y + shoulder_y < body_mask.shape[0] and x + shoulder_x < body_mask.shape[1]:
                if warped_clothing[y, x, :3].any():  # 의류가 있는 경우
                    person_image[shoulder_y + y, shoulder_x + x] = warped_clothing[y, x]

    return person_image

2. 메인 함수 수정

메인 함수를 수정하여 합성 과정을 포함하도록 합니다.

def main():
    person_image_path = 'input/person.jpg'
    clothing_image_path = 'input/clothing.jpg'

    # Load images
    person_image = load_image(person_image_path)
    clothing_image = load_clothing_image(clothing_image_path)

    # Preprocess images
    person_image_processed = preprocess_image(person_image)
    clothing_image_processed = preprocess_clothing_image(clothing_image)

    # Load segmentation model
    model = load_segmentation_model()

    # Segment person from the image
    segmentation_mask = segment_person(person_image_processed, model)

    # Estimate body pose
    body_landmarks = estimate_body_pose(person_image_processed)

    # Calculate body measurements
    measurements = calculate_body_measurements(body_landmarks)

    # Warp clothing to fit the body measurements
    warped_clothing = warp_clothing_to_body(clothing_image_processed, measurements)

    # Composite images to create the final fitting image
    fitting_image = composite_images(person_image.copy(), warped_clothing, segmentation_mask)

    # Display results
    display_image(fitting_image, title="Fitting Image")

if __name__ == "__main__":
    main()

3. 코드 실행

위 코드를 작성한 후, 터미널에서 다음 명령어로 실행합니다:

python main.py

이 코드는 변형된 의류 이미지를 사람 전신 이미지에 합성하여 가상 피팅 이미지를 생성합니다. composite_images 함수는 세그멘테이션 마스크를 사용하여 의류가 자연스럽게 사람의 신체에 결합되도록 합니다.

반응형