본문 바로가기
개발

파이썬 플라스크(python flask) 아바타 변환기 설치하기

by developer's warehouse 2024. 1. 20.

이 글에서는 파이썬 flask 아바타 변환기 설치하는 방법에 대해서 설명합니다. 

  • 이미지에서 아바타를 만드는 웹 서비스 빠르게 제공하기
  • keras_segmentation 패키지 호환 문제 
  • 모델 다운 및 처리

파이썬 플라스크(python flask) 아바타 변환기 설치하기 썸네일

아바타 서비스 예시

 

 

이미지에서 아바타를 만드는 웹서비스 빠르게 제공하기


이미지에서 아바타를 만드는 웹 서비스를 만들려고 합니다. 물론, 처음부터 코드를 작성할 생각이 없습니다. 저는 ai나 이미지 처리 쪽으로 해본 적이 없으므로 최대한 빠르게 결과를 보려고 합니다. github에서 이것저것 찾다가 아래의 링크에서 감사하게도 좋은 소스를 찾았습니다. 

아바타 생성기 바로가기

이제 이 소스를 clone해서 기존에 동작 중인 flask 앱에 추가하려고 합니다. 

원본의 requirement는 ubuntu 20.04에 들어있는 python 3.8에서 정상 동작하지 않는다. 

또, 현재 설치된 버전의 패키지와 호환되지 않는 문제가 있다. 그러므로, 현재 상황에서 호환 가능한 패키지를 설치하려면 requirement.txt에서 버전 번호를 모두 제거하고 설치한다. 

Flask
numpy
matplotlib
keras
keras-segmentation
wandb
helper
cycler
pandas
scikit_learn
seaborn
MulticoreTSNE

 

이렇게 설치를 하고 python app.py를 했더니, keras_segmentation관련 에러가 발생합니다.

 

keras_segmentation 패키지 호환 문제 


keras_segmentation 패키지가 다른 버전들의 최신 패키지들과 호환이 되지 않는 문제가 발생하였습니다. 해당 문제는 이것저것 해보았지만 결국 keras_segmentation의 코드를 한줄 수정하여 해결되었습니다. 

keras_segmentation 패키지의 일부 코드를 임시로 수정할 수 있습니다. 아래의 단계를 수행하여 예기치 않은 모듈 임포트 문제를 해결하세요.

 

  1. 가상 환경의 keras_segmentation 패키지 디렉토리로 이동하세요. 경로는 ~/imgTestEnv/lib/python3.8/site-packages/keras_segmentation에 있어야 합니다.
bash
cd ~/imgTestEnv/lib/python3.8/site-packages/keras_segmentation
  1. 코드에서 오류가 발생한 모듈인 _pspnet_2.py를 수정하기 위해 텍스트 편집기를 엽니다.
bash
nano models/_pspnet_2.py
  1. 해당 파일에서 from keras.layers.merge import Concatenate, Add를 다음과 같이 수정합니다:
python
from tensorflow.keras.layers import Concatenate, Add
  1. 파일을 저장하고 편집기를 닫습니다.

이제 프로젝트가 문제없이 실행되어야 합니다. 하지만 이 과정은 임시 해결책이므로, 발생한 문제를 keras_segmentation 저장소의 이슈로 제출하여 향후 버전에서 공식적으로 해결될 수 있도록 предлож게에게 알리는 것이 좋습니다. 이는 프로젝트의 유지 관리에 도움이 됩니다.

 

 

데이터 다운 및 모델 학습하기


이번에 알게 된 것인데, ai를 위해 학습된 모델 파일들은 대부분 github에 넣지 못합니다. 사이즈가 100M가 넘어가는 파일은 github에 저장할 수 없기 때문입니다. 그래서, google drive를 많이 사용하는데, google drive는 링크를 통해서 바로 wget을 할 수 없습니다. 

이 문제를 해결하기 위해서 python에서는 gdown이란 패키지를 사용할 수 있습니다. 

pip install gdown

 
이렇게 설치한 후에 구글 드라이브 링크로 다운을 받을 수 있습니다. 
gdown https://drive.google.com/uc?id=1tfMW5vZ0aUFnl-fSYpWexoGRKGSQsStL
 
(imgTestEnv) lswhh@DESKTOP-HQPQNKV:~/imgFilterApp/avatar-image-generator$ gdown https://drive.google.com/uc?id=1tfMW5vZ0aUFnl-fSYpWexoGRKGSQsStL
Downloading...
From (uriginal): https://drive.google.com/uc?id=1tfMW5vZ0aUFnl-fSYpWexoGRKGSQsStL
From (redirected): https://drive.google.com/uc?id=1tfMW5vZ0aUFnl-fSYpWexoGRKGSQsStL&confirm=t&uuid=15697fff-a74f-4e92-81c2-49fef72fa7e0
To: /home/lswhh/imgFilterApp/avatar-image-generator/datasets.zip
 16%|█████████████████████▋                                                                                                               | 379M/2.32G [00:49<04:21, 7.

실제로 다운을 받으면서 확인해보니 2.3G 입니다. 

unzip으로 압축을 해제하면  datasets 디렉토리에 데이터들이 압축 해제됩니다 .

 

이제 train.py를 통해서 학습 시켜야 합니다. 

학습은 아래와 같이 설명하고 있지만, 2번은 skip하고 --no-wandb 옵션으로 train.py를 실행합니다. 실행하기 전에 config.json에서 root_path만 내가 clone 받은 디렉토리 경로로 수정해 줍니다.

  1. Change root_path in config json. It specifies where is datasets which contains the datasets.
  2. Run wandb login 17d2772d85cbda79162bd975e45fdfbf3bb18911 to use wandb to get the report
  3. Run python3 train.py --wandb --run_name <RUN_NAME> --run_notes <RUN_NOTES> or python3 train.py --no-wandb
  4. To launch an agent with a sweep configuration of wandb in bg from ssh nohup wandb agent --count <RUN_NUMBERS> stevramos/avatar_image_generator/<SWEEP_ID> &
python3 train.py --no-wandb를 실행합니다. 
 
 
시간이 오래 걸릴 것 같으니 한숨 자고 일어나서 다시 하겠습니다. 
facebook twitter kakaoTalk kakaostory naver band shareLink