Skip to content

rlarlgnszx/skin-treatement-diffusion

Repository files navigation

skin-treatement-diffusion

피부시술 AI 생성 프로젝트

피부시술시에 내 모습은 어떨까?

6955343

STACK

  • python3.10

    • opencv :
      • 이미지 편집 및 가공등의 전처리 수행
    • matplotlib :
      • 다양한 이미지 시각화 기능으로써 활용
    • wandb :
      • 훈련모델의 loss와 output값 시각화 및 저장
    • transformer :
      • transfer learning을 위한 모델 weight load
    • dlib :
      • 데이터 전처리시 face recognition을 위한 모델 load로써 활용
    • ultralytics : yolo
      • 데이터 전처리시 image slice를 위해 face region dection에 활용
    • torch+cuda 11.8 , RTX 3090
      • 모델 훈련
    • streamlit :
      • demo 모델 배포 및 사용자 적을 경우의 서버로써 활용
    • flask :
      • 모델훈련결과를 받기위해 backend 팀과의 모델 endpoint의 방식을 HTTP로 사용하기 위해 활용
  • MediaPipe : Face Landmark

    • 이미지의 Mask를 생성해 내기위해 opencv와 결합해 이미지 landmark로부터 mask추출
  • huggingface

    • 다양한 pretrained 모델 search와 모델 storage와 개발한 모델을 API로써 활용하기 위해 사용
  • AI model

    • Swin Transformer
      • Noisy data에서 적절한 feaure를 가진 image를 추출하기 위한 binary classifcation 모델로써 활용
    • Yolo v8
      • 1차적 분류를 통한 data를 Face Region Detection을 통해 모델 개발에 필요한 데이터셋으로 변경해주기 위해 활용
    • Stable Diffusion InstructPix2Pix
      • 처음 선택한 모델로써 피부타입의 변화를 생성하기 위한 모델로써 사용
        • 아래 모델로 변경
    • Stable Diffusion Inpainting
      • Mediapipe를 통해 생성한 mask로부터 masking된 부분의 부분생성을 위한 모델로써 활용

OverView

image

Demo 1. NO Inpainting

File Structure

┖ 1.Data Downloader : Image Downloader
┖ 2.Data2right_image : Can't Use Image Classification 
┖ 3.image_to_slice_with_yolo : Image to Split with AI Algorithm
┖ 4.Making_dataset : Image to Dataset
┖ 5.skin_treatment_model : AI Model Training
┖ 6.Face Landmark : For AI Dataset( Use it after 3 )
┖ Wrinkle Detector : AI for Wrinkle Detection (Adding)

Key Features

  • 사용된 모델 : [Huggingface InpaintingDiffusion]
  • 이미지 분할을 위한 Yolov8
    • Noisy data의 사용화

How To Use


1.Clone this repository

# Clone this repository
$ git clone  https://github.com/rlarlgnszx/skin-treatment-diffusion.git

2.Run for your data search

$ python 1.Data Downloader/bing_search.py

3. Select Using data to put True,other to put False => SemiSupervised

image

$ jupyternotebook
# open data2right.ipynb and train

4. If image has more than two face, use

image

$ jupyternotebook
# finetuning_yolo8.ipynb
# split_with_yolov8.ipynb
  • 방법 1. opencv의 선검출을 통한 이미지 붙여진 선 검출을 통해 자르는 모델
    • 분류 효과가 좋지 않았고 선검출을 잘 못하는 경우가 많아 확실하게 잘리지 않음
      • 실패
  • 방법 2. dlib의 face recognitino을 통한 얼굴 검출을 통한 얼굴 분리
    • 얼굴 전체가 나타나지 않는 경우가 많아 확실하게 잘리지 않음
      • 실패
  • 방법 3. yolo v8을 통한 얼굴부위 별 검출을 통해 얼굴 부위펼 평균값을 통해 각 얼굴부위의 중앙값을 판별하고 중앙값들의 차이를 통해 가로선과 세로선으로 구분해 반으로 slice image image

5. Making Face Landmark Mask

$ face_landmakr.ipynb => key index setting
# from meta facelandmrk_keypoints

6. Training And run demo

$ jupyternotebook Stable_diffusiion_with_skin_treatment.ipynb
$ streamlit run app.py

Result

image


Demo

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published