일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- selinux port 등록
- python popen
- 정규식 문자열 출력
- python os
- InfluxDB
- c++ 정규식
- python subprocess
- regex_search
- c3 second
- snmp
- gcc 업데이트
- centos pyhon 설치
- c3 축 가리기
- subporcess path
- 1697
- semanage
- c3 초
- snmp test
- CentOS7
- influxdb 설치
- 백준
- 정규식 컴파일
- linux시간으로 변경
- grafana dashboard
- c3 축 없애기
- g++ 업데이트
- 정규식 활용
- telegraf
- c3 step graph
- gcc regex
- Today
- Total
리셋 되지 말자
tensorflow 사용해보기 - deprecated 본문
https://github.com/anish9/Fashion-AI-segmentation - 이분의 소스코드와 CNN 모델을 사용했다
https://mylifemystudy.tistory.com/67 - 이분의 블로그를 통해 윗분의 Github를 알게되었다. 감사합니다.
위 블로그 및 주소에서 다운로드 가능한 모델이 더이상 다운로드가 불가능하여, 대체해서 다시 포스팅할 예정입니다.
(포스팅 링크 : https://not-to-be-reset.tistory.com/614)
Dockerfile 작성
- Dockerfile
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /home/ubuntu
WORKDIR /home/ubuntu
RUN apt-get update && apt-get install -y libgl1-mesa-dev
RUN pip install Tensorflow==2.2
RUN pip install opencv-python==4.5.1.48
GitHub 설명에 나와있는대로 Tensorflow와 opencv를 설치한다.
Tensorflow와 opencv만 설치하여 테스트를 했을 때, LibGl1이 없다고 오류가 떠서 libgl1도 설치해준다.
opencv를 docker 환경에서 설치했을 때 나타나는 문제라고 한다.(오류해결 링크)
이미지 빌드
docker build -t python/tensorflow:1.0.0 .
작성한 Dockerfile이 있는 디렉토리 위치에서 이미지 빌드를 시작한다. 적상한 이름과 적당한 태그를 붙여준다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python/tensorflow 1.0.0 ea7f3928b6fd 13 minutes ago 3.5GB
이미지가 생성되었다. SIZE가 매우 크다. (ㅋ)
필요한 파일 준비
- model
- man.PNG
- run.py
- model은 다운로드링크에서 다운받을 수 있다.
- man.PNG는 테스트에 이용할 사진이다. 적당히 옷을 입고 있는 사람의 사진을 준비해도 된다.
- run.py
import cv2
import numpy as np
from tensorflow.keras.models import load_model
import tensorflow as tf
import sys
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
f = sys.argv[1]
saved = load_model("./model/save_ckp_frozen.h5")
class fashion_tools(object):
def __init__(self,imageid,model,version=1.1):
self.imageid = imageid
self.model = model
self.version = version
def get_dress(self,stack=False):
"""limited to top wear and full body dresses (wild and studio working)"""
"""takes input rgb----> return PNG"""
name = self.imageid
file = cv2.imread(name)
file = tf.image.resize_with_pad(file,target_height=512,target_width=512)
rgb = file.numpy()
file = np.expand_dims(file,axis=0)/ 255.
seq = self.model.predict(file)
seq = seq[3][0,:,:,0]
seq = np.expand_dims(seq,axis=-1)
c1x = rgb*seq
c2x = rgb*(1-seq)
cfx = c1x+c2x
dummy = np.ones((rgb.shape[0],rgb.shape[1],1))
rgbx = np.concatenate((rgb,dummy*255),axis=-1)
rgbs = np.concatenate((cfx,seq*255.),axis=-1)
if stack:
stacked = np.hstack((rgbx,rgbs))
return stacked
else:
return rgbs
def get_patch(self):
return None
# running code
api = fashion_tools(f, saved)
image_ = api.get_dress(True)
cv2.imwrite("out.png", image_)
맨 위에 있는 깃허브에서 확인할 수 있는 run.py 파일의 소스 코드이다.
모델의 위치가 현재 model 디렉토리 아래에 존재하므로 saved = load_model("./model/save_ckp_frozen.h5")
의 모델 경로만 변경하였다.
디렉토리에 있는 파일 목록
$ ls
Dockerfile man.PNG model requirements.txt run.py
$ ls model/
save_ckp_frozen.h5
requirements.txt 파일은 없어도 된다. 설치한 패키지가 뭔지 기록하려고 작성해 놓았다.
다운로드 받은 모델 파일은 model 디렉토리 안에 위치한다.
컨테이너 실행
$ docker run -it -v $(pwd):/home/ubuntu python/tensorflow:1.0.0 bash
/home/ubuntu# ls
Dockerfile man.PNG model requirements.txt run.py
파일들이 존재하는 디렉토리를 컨테이너의 /home/ubuntu 디렉토리에 마운트시켜 컨테이너를 실행한다.
run.py 실행
root@2842b94389fb:/home/ubuntu# python run.py man.PNG
2021-03-03 06:50:57.682791: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-03 06:50:57.698430: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency: 1991995000 Hz
2021-03-03 06:50:57.700975: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f2bc8000b20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-03 06:50:57.701020: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
2021-03-03 06:50:57.705101: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-03-03 06:50:57.705173: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2021-03-03 06:50:57.705634: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (2842b94389fb): /proc/driver/nvidia/version does not exist
root@2842b94389fb:/home/ubuntu# ls
Dockerfile man.PNG model out.png requirements.txt run.py
run.py를 man.PNG로 실행시킨다. 작업이 끝나면 out.png 파일이 생성된 것을 확인할 수 있다.
결과 확인
- out.png
현재 원본 이미지와 옷이 분리된 이미지를 붙여서 결과가 나온다.
'Docker' 카테고리의 다른 글
[docker] 컨테이너 목록 필터링 (0) | 2021.03.24 |
---|---|
[docker-compose] Spring boot + Nginx + MySQL (0) | 2021.03.17 |
[docker compose] docker-compose.yml에 volumes 사용하기 (0) | 2021.03.03 |
[docker] docker-compose 설치 on Ubuntu (0) | 2021.02.23 |
[centos7] docker 설치 (0) | 2021.02.22 |