코딩일지/TIL: Today I Learned

20221122 TIL

야언 2022. 11. 22. 20:41

오늘의 한 일

  • 유화 제작 프로젝트 발제, 시작
  • 프로젝트 뼈대, 추론 모델 적용

 

유화 제작 프로젝트

 

A7-Lucky🍀 油畵(유화)

 

사용자의 이미지를 유화로 만들어 티셔츠, 휴대폰 케이스 등 사물을 커스텀 할 수 있도록 도와주는 서비스

 

S.A - https://www.notion.so/A7-Lucky-07b15bbf5fed4c05a7d3528ec6165a06

 

A7-Lucky🍀 油畵(유화)

발제 내용 : [221122] 내배캠 AI 3회차 - 유화제작 프로젝트 발제 (notion.site)

www.notion.so

 

프로젝트 뼈대, 추론 모델 적용

 

추론 모델 적용

 

articles/utils.py

from datetime import datetime
import cv2 
import numpy as np


def inference(filestr, style):
    # 이미지 불러오기
    npimg = np.fromstring(filestr, np.uint8)
    input_img = cv2.imdecode(npimg, cv2.IMREAD_COLOR)
    style = cv2.dnn.readNetFromTorch(f"articles/models/{style}")
    
    # 전처리 코드
    h, w, c = input_img.shape
    input_img = cv2.resize(input_img, dsize=(500, int(h / w * 500)))
    MEAN_VALUE = [103.939, 116.779, 123.680]
    blob = cv2.dnn.blobFromImage(input_img, mean=MEAN_VALUE)
    
    # 결과 추론하기
    style.setInput(blob)
    output = style.forward()
    # 전처리한 이미지(blob)를 모델에 넣고 추론, output 변수에 추론한 결과 저장(forward)
    
    # 결과 후처리
    output = output.squeeze().transpose((1, 2, 0)) 
    output += MEAN_VALUE 
    output = np.clip(output, 0, 255) 
    output = output.astype("uint8")
    
    # 생성시간을 이름으로 저장
    time = datetime.now().strftime("%y%m%d%H%M%S")
    cv2.imwrite(f"media/{time}.jpeg", output) 
    result = f"media/{time}.jpeg"

    return result

 

생성 시간을 기준으로 추론모델을 돌려서 생성된 이미지를 media 폴더 내에 저장하기 완료!

 

 

근데 media 폴더가 없을시에는 파일 이름만 나오고 폴더생성 및 파일 저장이 실행되지는 않는다.. 이건 방법을 모르겠네

 

 

 

 

** 프론트엔드 고민해봐야할 부분

 

스타일 선택 방식 - radio vs dropdown

radio가 더 좋아보이긴 하는데 모델이 11개나 되다보니 샘플이미지까지 모두 넣어서 적용시키려면 가로 스크롤이라도 집어넣어야하려나?

 

참조 : checkbox와 radio -  https://blog.naver.com/heartflow89/221164211964

 

[HTML] checkbox radio 체크박스 라디오 <label>

HTML checkbox(체크박스) radio(라디오) 이전 포스팅에서는 input type 종류와 입력 필드와 버튼...

blog.naver.com

 

 

 

🎯 TroubleShooting

 

생성시간 기준 이름짓기 - datetime.now().strftime() 에러

 

strftime 함수 사용중 invalid 에러가 계속 떠서 도대체 뭐가 문제인가 구글링을 해봤더니 윈도우 환경에서 strftime을 사용할때 여러 에러가 난다는 것을 알았다..

 

https://hcid-courses.github.io/TA/QnA/issues_with_windows_korean_strftime.html

 

issues_with_windows_korean_strftime

3. 시스템 locale을 변경한다¶ 전체 python 프로그램의 다른 부분에 영향을 줄 수 있다는 단점이 있지만 locale을 변경하면 strftime 함수에서도 한글 문자열을 해석할 수 있습니다

hcid-courses.github.io

 

근데 타이핑 새로해보니까 그냥 되기 시작함; 오타는 아니였는데 도저히 원인을 모르겠다 ㅠㅠ

 

그리고 %M 색깔이 너무 거슬린다