2021-10-20
오전
점심때까지 ai 사전강의를 다들었다.
무슨말인지 진짜 모르겠다.
살려주세요. ㅜㅜ...
오후
styleGANv2 를 사용해야해서 먼저 돌려보려고한다.
현재 github에 있는 코드를 클론해서 돌리고 있다.
개같은 윈도우 에러 너무많이 뜬다. 저녁시간에 개발 노트북 리눅스로 바꿔버려야지
인공지능은 리눅스로 해야하나보다
일단 에러 몇개 고쳐서 윈도우 환경으로 돌리고 있다. 힘을내 1060!
이거 만드는거 보니까 비디오로 만들어서 한꺼번에 보여주는거 같다. 비디오는 필요없고 한 사진에대한 결과만 나오면 되는데...?
증명사진만을 위한 데이터셋을 만들어야할거같은데 적당한 학습이 되려면 10000장이 있어야한다고 한다. https://comlini8-8.tistory.com/49
어쩔수 없이 크롤링해야하나?
학습데이터와 다른, 헤어 스타일을 적용할 사진 몇개도 구해야한다.
남녀 각각 서너개의 헤어스타일아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ
GAN 말고 style transfer도 한번 찾아보라던데 우선 gan부터 봐야지
RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:79] data. DefaultCPUAllocator: not enough memory: you tried to allocate 16448225280 bytes.
잘가라 노트북. 개발 서버 받으면 거기서 한다.
서버는 받았는데 접속을 못하고있다. VPN
오늘은 그만돌리고 책 보러감... (만들면서 배우는 파이토치 딥러닝)
2021-10-21
오전
오전 책 진행중(만들면서 배우는 파이토치 딥러닝)
구글 코랩 사용해서 stargan v2 한번 돌려보았다.
결과 꽤 괜찮은데? 이 모델 가지고 스타일이랑 인풋사진만 바꿔서 진행해봐야겠다.오후5시 30분 모의 코테 보러감
오후
오후도 책 진행중 - ch 5
2021-10-22
오전
개발 서버 받고 환경설정하느라 시간이 다갔다.
윈도우 접속은 쉽게 했으나 맥에서 오래걸렸다.
citrix 클라이언트는 윈도우에서만 되고 맥에선 Citrix sso를 따로 설치해서 접속하면된다.
개발 서버에 접속해서 개발환경을 구축함
개발용 서버 개발환경 구축
- 개발용 서버 접속후 python3.6 버전 가상환경 생성
conda create -n python36 python=3.6
- 가상환경으로 변경
source activate python36
- jupyter, pytorch 설치
conda install pytorch-cpu torchvision-cpu -c pytorch
conda install jupyter
터널링을 사용해서 크롬으로 접속
- 주피터 노트북 백그라운드로 실행(한번만 실행하면 되고 터미널 꺼도 유지됨)
jupyter notebook --port 9999 &
- 터미널 하나 더 켜서 터널링 실행)
ssh <ip> -p 22 -L 9999:localhost:9999
- 컴퓨터(크롬)에서
localhost:9999
접속 - 토큰 입력하라고 나오면 gpu 서버에 접속된 터미널에서
jupyter notebook list
실행http://localhost:9999/?token={여기있는토큰} :: /home/주소
오후
ch 5 - GAN 진행중꽤 많은 사람들이 겪는 호환성 문제인가보다
- GAN을 따라가는 도중에 gpu를 사용하지 않고 학습하는걸 찾았다
- 2시 30 분전까지 발표와 팀 평가 진행함
- 호환성 문제시도 1. 파이토치 버전이 너무 낮아서 삭제하고 재설치
pip install --pre torch torchvision -f [https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html](https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html)
- 블록 하나 설정해서 확인
import torch print(torch.cuda.is_available()) print(torch.__version__) # True # 1.10.0+cu102
- 성공?
Tesla V100
에CUDA Version: 11.2
였고 파이토치 버전은 1.1.0 이다.
2021-10-25
목표 ch 6 들어가기
오전
만들면서 배우는 파이토치 딥러닝
11시 쯤부터 한시간정도 인터넷 연결이 안됨
- 서버 연결도 안되긴했지만 책 읽어서 큰 타격이 없었음ch 5끝냄
오후
- 개발서버에서 stargan-v2 실행 및 결과 탐구
- git clone
- 종속성 설치
- 이미 설치된 패키지들 종속성이 들쭉날쭉이라 최신버전으로 설치
conda install x264=='1!152.20180717' ffmpeg=4.0.2 -c conda-forge pip install opencv-python ffmpeg-python scikit-image
- 미리 학습된 네트워크와 데이터셋 사용
! bash download.sh celeba-hq-dataset ! bash download.sh pretrained-network-celeba-hq ! bash download.sh wing
- 커스텀 이미지 사용을 위한 준비
assets/representative/custom/test/
- 위에 적은 위치에 변환하고 싶은 이미지 업로드
- 로컬에서 gpu 서버로 이미지 전송하려면 bash 에서 다음과 같은 명령어를 입력한다.
scp -r <dir_path> <name>@<ip_address>:<move_path>
- 혹은 jupyter notebook을 사용해서 업로드
- 업로드한 커스텀 이미지는 stargan을 사용해서 이미지 크기를 변환한다.
- ref 변환(적용시킬 이미지)
python main.py --mode align \ --inp_dir assets/representative/custom/test/ref/male \ --out_dir assets/representative/custom/test/ref/male python main.py --mode align \ --inp_dir assets/representative/custom/test/ref/female \ --out_dir assets/representative/custom/test/ref/female
- src 변환(스타일)
python main.py --mode align \ --inp_dir assets/representative/custom/test/src/male \ --out_dir assets/representative/custom/test/src/male python main.py --mode align \ --inp_dir assets/representative/custom/test/src/female \ --out_dir assets/representative/custom/test/src/female
- 실행네트워크는 미리 학습된 것을 사용하고 result_dir, src_dir, ref_dir는 바꿔준다.
- 에러
- male, female 폴더 안에 이미지가 모두 있어야한다.
RuntimeError: Error(s) in loading state_dict for Generator:
core/checkpoint.py
에서 48번째 줄을 수정한다.- 전: module.module.load_state_dict(module_dict[name])
- 후: module.module.load_state_dict(module_dict[name], False)
Missing key(s) in state_dict: "hpf.filter
- 에러
python main.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 \ --checkpoint_dir expr/checkpoints/celeba_hq \ --result_dir assets/representative/custom/test/results/ \ --src_dir assets/representative/custom/test/src \ --ref_dir assets/representative/custom/test/ref
- 결과v100의 속도는 꽤 빠르다
- 헤어스타일을 고르기 어려울거같다.
- 여성 모델들은 대부분 앞머리가 있는 상태로 나오고 남성 모델들은 대부분 머리를 올린 상태로 나온다. 학습데이터가 그런가봄
- 헤어 스타일도 뭔가 고정되어있는 느낌인데
- 결과 2
- 증명사진에 맞는 모델을 만들어야할거같은데...
- 학습 데이터는 증명사진으로 1만 장 정도 필요한데 어디서 가져와야할지 모르겠다.
- 그리고 또 확인해보니 얼굴말고 옷이 섞이면 결과가 좋지 않게 나온다.
- starGAN에 align모드를 사용해서 해야만 잘나오는거같다.
- 헤어스타일이랑 옷만 가져올건데 여성, 남성 모두 일정한 이미지가 나온다
- src랑 ref랑 바뀐거 같다
2021-10-26
목표:
starGAN 말고 다른 모델 찾아보기
오전
MichiGAN: Multi-Input-Conditioned Hair Image GAN
hairstyle-transfer-semantic-editing-gan-latent-code
PGGAN
StyleGAN
faceswap, face synthesis, face reenactment
FSGAN
오후
SSAFY meetup 있음
틀어놓고 프로젝트 할 예정
책 - ch6은 원하는 내용이 아니어서 끝
2021-10-27
목표:
증명사진 데이터 모으기
새로운 모델 공부하기
오전
새로운 모델 관련 링크 작성
10시 30분 교육프로님과 개인 면담
오후
2021-10-28
목표:
새로운 모델 공부하기
오전
SEAN, Face parsing
오후
Face Parsing 하고 SEAN 했을때 뭔가 나오긴나오는데 모델이 달라서 그런가 제대로 복구시키진 않는다.
뭐가 문제지?
2021-10-29
목표:
새로운 모델 찾고 공부하기
데이터 찾기...
오전
DeepFaceLab → 개발서버에 설치중
- conda init 해도 바뀌는게 없는데 자꾸 conda init하래
- restart해도 되는건지 모르겠네
- Face swap
- 진행중
- 얼굴 추출: A에는 내얼굴 B에는 바꿀 얼굴
python faceswap.py extract -i ./fs_test/photoB -o ./fs_test/faceB
python faceswap.py extract -i ./fs_test/photoA -o ./fs_test/faceA
- Training
- python faceswap.py train -A ./fs_test/face_A -B ./fs_test/face_B -s 10
- 얼굴 추출: A에는 내얼굴 B에는 바꿀 얼굴
- 설치 오류 및 패키지 버전 에러 너무 많이 뜬다
- opencv, dlib을 사용한거
- 성능이 많이 좋지 않음
- 눈이 작으면 그런거같은데...오후
- django server 만드는중
- PaddleGAN
2021-11-01
목표:
Django 서버 데이터 에러 고치기
django 끝내기
vue 페이지 연결하기
오전
Django 서버도 얼추 만들었다.
- rest api 형식으로 만들어서 frontend와 backend 분리해야한다.
- 현재는 직접 렌더하는 방식이다.
- opencv로 사용하는 faceswap 성능이 상당히 좋지 않다
- ㅠㅠ
- 얼굴형이 다르거나 조명위치가 다르면 부자연스럽다.
- 나중에 고쳐야할듯
- starGAN사용해서 비슷한 사진을 만든다음 face swap을 한다든지오후장고 에서 변환되는지 확인함
- 프론트페이지 작성해서 장고랑 연결되는지 확인할 예정
- 2시 30분 개인 면담
- Face Swap using OpenCV ( C++ / Python )
2021-11-02
목표:
django 끝내기
vue 페이지 연결하기
에디터 시작하기
오전
vue 페이지 만들고 빠르게 django랑 연결해야지
페이지는 다 만들었는데 cors 문제가 또 터진다.
망할 CORS 에러 몇시간째인지...
점심먹고와서 해야지
오후
??
밥먹고 왔는데 왜 됨?
바꾼거 하나도 없는데?
이럴거면 밥 일찍 먹고 올걸
vue 페이지 스타일링도 대충 끝냈고
머지했음
이제 에디터 시작
2021-11-03
목표:
에디터 개발
오전
vue-draggable
이라는 라이브러리가 있어서 뜯어보고 비슷한 기능 구현해볼 생각임
vue-draggable을 사용해서 컴포넌트 위에 감싸주면 쉽게 구현되었다.
바꾸고 싶은 아이템은 이걸로 감싸는걸로 해결
반응형으로 옆에 놓았을때 분리되게 만드는건 우선 넘어감
오후에 해야할것
옮길때 디자인적으로 옮겨지고 있는건지 확인
컴포넌트별 삭제 버튼 추가
오후
vue-draggable 안되나? import를 안했네 ㅎ
vuex 를 사용해서 삭제 기능은 쉽게 만들었다.
소스코드 vuex (src/store/index.js )근데 잘못 삭제한 경우에 다시 추가하는 기능이 있어야할듯
<template>
<div class="projects">
<draggable style="display:flex">
<div v-for="(pro) in resume.project" :key="pro.id" class="project-card">
<button @click="remove(pro)">remove</button>
<!-- 중간 생략-->
</div>
</draggable>
</div>
</template>
<script>
// 생략 export default
{
// 중략
methods: {
remove(pro) {
this.$store.dispatch('portfolioProjectDelete', pro);
},
},
};
</script>
추가할수 있는 프로젝트를 보여주는 팝업 띄우기
아이템 추가하는 함수는 따로 만들던지 같이 쓰던지
플로우
- 추가 버튼 클릭
- 팝업창 보여짐
- Dialog component
- (저장되어있는 / 서버에 요청해서) 리스트 보여줌
- 저장되어있는 리스트속도는 이게 훨씬 빠를거같은데
- 저장소를 이력서랑 포트폴리오 나눠서 사용해야 할 듯
- 서버에 요청
- 유저의 모든 프로젝트 조회:
resume/project/{userid}
- 아이템 추가
- 팝업창 종료
편집 버튼을 누르면 추가, 삭제 버튼이 나오도록
추가 버튼은 편집 버튼이랑 바꿔서 보여줌 isEdit = true, false
편집 버튼은 컴포넌트(ex. 언어, 프로젝트)에 마우스를 올려놓았을때만 보이도록
삭제버튼은 최소 컴포넌트 단위(ex. 프로젝트 하나) 옆에
버그라고 해야하나... 원하지 않는 기능을 찾았는데 브라우저에서 축소나 확대를 사용하면 pdf 변환할때 그 크기가 같이 저장됨
screen zoom 막는 방법Disable Pinch Zoom on Mobile Web
2021-11-04
목표:
에디터 개발
오전
팀원분이랑 어떤 기능을 만들어야하는 지 논의
에디터 개발 중
오후
에디터 개발중
아이템 추가 수정하는거 만듦
store에 state랑 함수 새로 만듦
2021-11-05
목표:
에디터 개발
오전
팀원분과 어떻게 합쳐야할지 논의
오전중엔 테마 1~3에 각자 코드 확장하기로 하고 오후에 합치기로 함
각자 저장소를 merge해서 진행
테마 1~3으로 넘어갔는데 내 코드가 resume 기반이 아니라 portfolio 기반이어서 함수는 제대로 동작해도 화면상에 보이지 않음.
→ 일단 portfolio로 고치고 오후에 이야기 해야겠음
오후
에디터 개발중
템플릿 편집 기능 추가
템플릿 디자인 수정
2021-11-08
목표:
전체 플로우 확인
오전
팀 회의
API 수정하기로 함
오후
오후 세시 반 면담
뭔가 이해하기 어려워서 새로 만들기로 함
2021-11-09
목표:
api 수정중
오전
수정
오후
수정해서 보냈는데 되는지 확인 못함
2021-11-10
공가
2021-11-11
목표:
api 수정
오전
문제점 확인
- vuex에 portfolio_copy_resume(해결)
state.resume
의 특정 키가 없는경우 undefined가 떠서 에러발생- 제일 처음 생성할땐 아무값도 없어서 발생함
state.portfolio
의 초기 값은 그대로 두고 deep copy한 값들을 일일이 복사하는 방식
- 저장을 하고 난이후 id 값을 제대로 못 읽는 문제
- 값이 아무것도 저장되지 않는 경우 undefined로 바뀜
store/index.js
에서 resume_copy_resume 고치기
oldID~
변수들이 없는 상태일때 에러- 기존값이 무조건 있다고 생각해서 에러 발생
- 없는경우 null 값이나 undefined로 되어있으면 foreach를 사용하지 못함
- 1번 문제와 같이 resume_copy_resume에서 일일이 복사해주는 방식으로 하면 좋을듯
- → 아니었음. store/index.js/actions에서 socialLogin값이 계속 null로 바뀜
- socialLogin에서 받아온 값이 null인 경우 []이나 {}로 처리
- 오늘 해야할건 다 끝냈다.
- 오전에 찾은 문제점 해결중
2021-11-12
목표:
고쳐야할 점 파악 후 수정
오전
오후
null 처리
- input value에서 처리
- vuex store에 저장되어있는 값을 파악 해서 처리
- how?
- 자동저장할 때 처리
- 새로 추가되거나 변경된 것 중에 null 값이 있는 경우 다른 페이지로 못넘어 가게 만들어야함
- computed나 watch를 사용해서 아예 클릭을 못하게 만들어야할듯
2021-11-15
목표:
고쳐야할 점 파악 후 수정(진짜마지막!)
오전
팀 회의하면서 고쳐야할점 파악
수정
오후
수정
발표자 선정 → 아 제발....
2021-11-16
목표:
발표준비
오전
팀 전체 회의
팀원분과 어떻게 나눠서 할지 논의
나 - 기획배경, 시간되면 시연 부분 화면녹화
팀원 - 주요기능
오후
팀장님과 어떻게 나눌건지 논의
팀장님 - 기술 및 설계, 팀원소개
2021-11-17
목표:
발표준비
오전
팀 회의
라이브시연 준비
오후
화면 녹화 하면서 전체적인 플로우 확인
2021-11-18
목표:
발표준비
오전, 오후
발표회 준비
'OTHERS > 내 생각' 카테고리의 다른 글
백준 골드1 (0) | 2022.01.04 |
---|---|
2021년 회고 (1) | 2022.01.02 |
이번 주를 돌아보며(1101 ~ 1107) (0) | 2021.11.08 |
이번 주를 돌아보며(1025 ~ 1031) (0) | 2021.10.31 |
이번 주를 돌아보며(1018 ~ 1024) (2) | 2021.10.27 |