🔆 이번 글에서 다룰 논문은 2019년 ICCV에서 발표된 RelGAN: Multi-Domain Image-to-Image Translation via Relative Attributes입니다. 세세한 특징을 가지고 있는 얼굴 부위에서 원하는 영역만 바꿀 수 있고 얼굴 정체성은 그대로 보존하는 것이 본 모델의 특징입니다. ⭐️ Summary RelGAN은 relative target attribute를 이용해 얼굴 영역 중 변화하고 싶은 다중 속성(눈, 머리카락, 입모양 등)만을 변환할 수 있게 한다. generator에게 relative attributes를 학습하기 위해, 원본 이미지와 생성된 이미지의 relative attributes이 일치되는지 결정하는 match-aware discriminat..
베이즈 정리란? 사전 확률(prior)이란 사건 A, B가 있을 때 사건 A를 기준으로 보면 사건 B가 발생하기 전에 가지고 있던 사건 A의 확률입니다. 만약 사건 B가 발생하면 이 정보를 반영하여 사건 A의 확률은 P(A|B)로 변하게 되고 이게 사후확률(posterior)입니다. 예를 들어보자면, 사건 B를 철수가 영희를 좋아한다로 정의하고 사건 A는 철수가 영희에게 초콜릿을 준다라고 할게요. 철수가 영희를 좋아할 확률을 0.5라고 하고 철수가 영희에게 초콜릿을 줄 확률은 0.4, 철수가 영희를 좋아할 때 초콜릿을 줄 확률을 확률은 0.2라고 정의해볼게요. 그러면 사전 확률은 P(B) = 0.5가 되고 사후 확률 P(A|B) = 0.2가 됩니다. 또 한가지 더 사전 확률 P(A)=0.4이 되죠. 철수..
사람들과 협업하다 보면 배포되는 코드가 꼬이거나 더러워지지 않게 각자 자신만의 repository를 만들고 fork하여 작업 후 중심 repository에 PR을 보내 merge할 때가 있다. 다른 사람의 PR이 merge된 후 충돌되지 않기 위해선 나의 repostiory에 최신 버전의 중심 repostiory를 업데이트해야한다. 자동으로 업데이트하는 방식도 있지만 이 글에선 수동으로 업데이트하는 방법에 대해 얘기하려 한다. upstream(fork한 branch)을 remote로 등록한다. git remote add upstream "upstream git 주소" upstream 내용을 fetch (최신 버전으로 업데이트한다는 뜻) git fetch upstream 내 브랜치와 upstream 브랜치..
한명의 머신러닝 엔지니어이자 데이터 분석을 하는 사람으로써 데이터가 중요하다는 건 이미 알고 있던 사실이다. 광대한 데이터를 보유하고 있는 구글을 통해 알 수 있는 정보가 무엇이 있을지, 제목 그대로 우리가 평상시 사실이라고 믿고 있는 것들 중 어떤 것들이 거짓일지 구글이 알고 있는 것들을 알고 싶었다. 현재 회사가 개발하고 있는 커뮤니티 공간에서 내가 어떤 것들을 분석하고 알아낼 수 있을지 힌트도 얻고 싶었다. 데이터는 우리에게 근거있는 자료를 주면서도 과신에 대한 주의를 주기도 한다. 이 책에선 데이터의 차원의 저주도 이야기하고 있다. 우리는 이를 주의깊게 살펴야한다. 역 인과관계일수도 있다는 걸 늘 생각해둬야 한다. 이 책은 마지막 장이 정말 재밌다. 저자다운 끝맺음을 한다. 궁금하다면 읽어보는 것..

체대생 개발자 한정수님의 회고 글들을 보고 나도 꼭 회고글을 작성해야지하고 마음 먹었는데 드디어 나도 회고 글을 쓸 수 있게 되었다. 정말 의미 있었던, 내 삶이 많이 바뀌었던 한해였다. 2019년 대학원을 졸업하고 2년 동안 좋은 인연을 만나 중간중간 프리랜서로 일했지만, 대부분은 갓 태어난 아이들을 뱃속과 집에서 돌보는 시간을 가졌었고 올해 처음으로 제대로 된 구직활동과 회사 일을 시작했다. 올해를 보내면서 어떤 경험을 했는지 회고하고자 한다. 1월 본격적인 취업 준비 둘째 아이가 돌이 지나고 어린이집을 보내게 되면서 이력서를 준비하고 중간중간 책 읽는 시간을 보냈다. 혼자만의 프로젝트도 하고 공부하는 시간도 많이 가졌다. 자존감이 낮아져 있었지만 그동안 했던 경험들을 정리하면서 어떤 프로젝트를 했는..
나에게 브랜드란 기업이 해야하는 아주 먼 개념이라 느껴졌다. 개인 하나의 브랜드가 중요할까? 결국 내가 속해있는 회사의 브랜드가 중요한 것이 아닐까하는 생각이 주였다. 회사를 퇴사하고 이것저것 나에 대해 고민해보는 시간을 가지는 중 드로우앤드류 채널을 알게 되었다. 행복하게 일하자!란 마인드의 앤드류님이 이것저것 재밌는 팁들을 알려주는 채널인데 그 채널에서 셀프 브랜딩을 알게 되었다. 결국 한사람 한사람 모두가 자기만의 브랜드를 만들어야된다는 것이다. 굉장히 신선하게 느껴졌다. 그래서 드로우앤드류님의 책을 읽게 되었고 개발 공부만 하던 내가 브랜드에 대해 공부하고 싶다는 생각이 들었다. 예전에 픽사의 스토리텔링 책을 읽은 적이 있다. 난 애니메이션을 정말 좋아하는데 그 중에서도 디즈니도 아닌 픽사를 좋아..
git으로 작업하다보면 merge되지 않은 소스들을 함께 작업하는 경우가 있습니다. 팀원과 같이 일할 경우, 코드를 받아 테스트를 하거나 수정할 수도 있죠. 또는 아직 merge되지 않은 소스들을 다른 환경에서 이어 작업하고 싶을 때도 있어요. 그럴때 branch를 pull 해야하는데 방법은 아주 간단합니다! 먼저, 원격 브랜치를 갱신해야합니다. 아래의 명령어를 적어주시면 됩니다. 로컬에 원격 브랜치들이 생길거에요! git remote update git branch -a로 원격 브랜치들이 pull 됐는지 확인해주고 git checkout -t로 원격 브랜치와 동일한 이름의 브랜치를 생성하며 checkout하게 됩니다. git branch -a git checkout -t origin/[branch이름]
jupyter에서 로컬로 작업한 모듈을 직접 불러오기 위해선 pythonpath 설정이 필요합니다. pycharm의 경우 자동으로 현재 폴더 path를 python path로 설정해주지만 vscode는 따로 설정이 필요합니다. 방법은 매우 간단합니다! jupyter setting에 아래를 추가해주면 끝이에요. code-preferences-settings-jupyter 검색-edit in setting.json 클릭 아래의 코드를 적어주면 됩니다. 이미지에서 맨 아랫줄에 적혀있는 코드예요. "jupyter.notebookFileRoot": "${workspaceFolder}" 아래처럼 tree 구조를 가지고 있을 때 notebook에서 문제없이 불러올 수 있는 것을 확인하실 수 있습니다! 이 문제를 못 ..
이 내용은 팡요랩의 가장 쉬운 KL Divergence 완전정복!을 참고해서 작성했다. 엄청 친절하게 설명해주시니 더 자세하게 알고 싶다면 참고할 것! KL divergence를 공부하기 전에 알아야 할 통계이론 KL divergence에 대해 알아 보기 전에 미리 알아둬야 할 통계이론들을 살펴보자! x와 y가 독립일 때, 아래 식이 성립한다. $$p(x, y) = p(x) * p(y)$$ 기댓값: 전체 사건에 대해 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 합한 값이다. 이것은 어떤 확률적 사건에 대한 평균의 의미로 생각할 수 있다. 개념으로만 보면 이해하기 어렵지만 우리가 고등학생 때 이미 배웠던 개념이다. 주사위로 예로 들자면, 사건이 벌어졌을 때의 이득: 주사위의 값, 1, ..
현재 다니고 있는 회사에서는 멘토가 없다. 기술적인 멘토로는 stackoverflow가 있겠지만 사실 그것만으로는 만족할 수 없다. 경험에서 우러나오는 통찰력과 선택 등을 배우고 싶었다. 현재 나에게 멘토가 없다해서 이대로 가만히 있을 수는 없다. 스스로 움직여야 결국 기회도 찾아오는 것이다. 그래서 이 책을 선택했고 이 책을 통해 내가 멀리 나아갈 수 있는 방법에 대해 배우고 싶었다. 다 읽고나서는 정말 좋은 선택이었다. 하나의 거대한 멘토가 내 옆에 있는 것 같았고 책에서 다시 읽고 싶은 부분이나 실천해야하는 부분은 접어두는데 이 책을 하도 많이 접어서 접힌 부분만 튀어나와있다. 잠시 길을 잃은 것 같은 나에게 여러가지 길을 제시해주는 책이다. Review 실제로 소프트웨어 개발자는 사업 분야를 이해..
파이썬을 사용하다보면 불편해질때가 있다. 스크립트 코드를 바꾸고 주피터 노트북에서 반영된 코드를 불러오기 위해선 restart 버튼을 눌러야하고 기존에 할당된 변수들이 다 사라지는 경험.. 이럴 때 autoreload 설정을 해주면 restart를 해주지 않아도 주피터 노트북에서 반영된 코드를 바로 사용할 수 있다. 먼저 profile을 생성한다. 생성해줌과 동시에 파일 위치도 알려준다. ipython profile create # 결과 [ProfileCreate] Generating default config file: PosixPath('/Users/username/.ipython/profile_default/ipython_config.py') [ProfileCreate] Generating defa..
어딘가에서 추천하여 구매하게 된 책이다. 4시간만 일한다기에 다른 자기계발서처럼 새로운 사업을 해서 부수입을 만들고 짧게 일하고 돈을 버는 방법을 알려주는 책일거라 생각했다. 하지만 그건 이 책의 작은 부분이었다. 직장인들도 회사를 다니면서 어떻게 4시간만 일할 수 있는지 방법을 구체적으로 사례를 들며 알려준다. 이 책을 내 것으로 만들기 위해서 하나하나 나의 삶에 적용해보려한다. 우선 가장 먼저할 것은 회사에서 일하면서 노래 듣지 말기😭 내가 생각하기에 이 책의 특별한 점은 효율화이다. 현재 주어진 일이든 자기 관리든 어떻게 효율화시킬지 어떻게하면 시간을 효율적으로 관리할지 알게 해주는 책이다. 책을 읽고 변화한 점 나는 4시간만 일한다 책이 주는 힘은 엄청났다. 시간의 소중함을 알게 됐고 시간을 어떻..