목록전체 글 (255)
Joonas' Note

눈코입 맞추기 게임 만들기 1편 예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코입을 보고 누구인지 맞추는 게임 blog.joonas.io 문제점 1편에서는, 사진에서 얼굴 부분의 비율이 작으면 얼굴을 제대로 찾지 못한다는 문제가 있었다. 1편의 마지막에 얼굴 부분만 잘라낸 이미지에서 face landmark를 찾도록 했더니 결과가 개선되는 것을 확인했으니, 이 작업을 그대로 코드로 작성했다. 해결 먼저 이미지에서 얼굴을 찾는 API로 faceapi.detectAllFaces 를 사용할 수 있다. 한 번의 호출로 이미지에서 찾은 모든 얼굴들의 bounding box 배열을 반환한다. const optio..

예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코입을 보고 누구인지 맞추는 게임을 쉽게 만들 수 있지 않을까했다. 얼굴에서 특징점을 추출하는 솔루션은 꽤 오래 전부터 있었기때문에, 어렵지 않게 찾을수 있을거라 생각했고 실제로도 그랬다. 우선은 이미지를 업로드하고 결과를 바로 보기에 웹이 편할 것 같고, 문제를 만드는 것을 포함해서 게임 UI 까지 구현하는 것도 고려해서 javascript 라이브러리로 찾아보았다. 처음에는 OpenCV-javascript 를 사용해보려고 했는데, 생각만큼 얼굴 사진에서 face landmark 를 잘 찾아내지 못했었다. 얼추 찾기는 하는데 만족스럽지는 못했다. 그래서 ML..

평소처럼 인터넷을 유영하다 세상에서 가장 작은 나라(micronation)라고 주장하는 시랜드(Sealand)라는 걸 발견했다. 어쩌다 이런 일을 벌였는지는 기억나지 않지만 분명 맨정신이었고 3월 어느 새벽에 재밌어보여서 시작했다. 결론부터 말하자면 시랜드 공국(Principality of Sealand)에 기사 작위를 신청했고 5월 쯤 되어서 소포가 도착했다. 일단 작위가 생긴다는 일 자체가 뭔가 재밌을 것 같아서 벌였는데, 시랜드는 매관매직으로 작위를 구매할 수 있으니 이런 매지컬한 일을 지나칠 수 없었다. 물론 시랜드 자체가 나라로 인정되지 않기 때문에..... 진짜로 책임이 없는 유희 그 자체다. 이해는 잘 안가지만 남작(Baron)보다 기사(Knight)가 더 비싸다. 흠... 우선 칭호에 있어..

git에 대한 기본적이면서 핵심이 되는 컨셉은 아래 글에서 정리했다. 원격 저장소에 대한 간단한 설명도 있으니 먼저 읽어보는 것을 권한다. All about git - 핵심 개념 정리 소스코드를 저장할 개념으로 학생때부터 git과 github을 꾸준히 사용했는데, 어느덧 거의 10년차가 되었다. 그렇다보니 주변에 git 에 대한 내용을 설명하는 경우가 많았는데, 사람들이 항상 혼란스 blog.joonas.io 함께 작업하기 여러 사람들과 하나의 레포지토리(repository)로 공동 작업하는 것은 여러 방법이 있다. 문제는 이 하나인 레포지토리의 코드가 가만히 있지 않다는 것이다. push 현재 내 로컬의 브랜치 상태를 원격 레포지토리(예를 들면 GitHub)에 업로드하고 싶은 경우, push 커맨드를 ..

git에 대한 기본적인 컨셉과 용어는 아래의 글에서 정리했다. All about git - 핵심 개념 정리 소스코드를 저장할 개념으로 학생때부터 git과 github을 꾸준히 사용했는데, 어느덧 거의 10년차가 되었다. 그렇다보니 주변에 git 에 대한 내용을 설명하는 경우가 많았는데, 사람들이 항상 혼란스 blog.joonas.io 그리고 commit 을 쌓기 위해 stage 컨셉에 대한 이해는 아래의 글에서 정리했다. All about git - 상태(status) 관리하기 git에 대한 개념과 용어가 헷갈리시는 분들은 아래 글을 참고해주세요. All about git - 핵심 개념 정리 소스코드를 저장할 개념으로 학생때부터 git과 github을 꾸준히 사용했는데, 어느덧 거의 10년차 blog.j..

git에 대한 개념과 용어가 헷갈리시는 분들은 아래 글을 참고하면 좋다. All about git - 핵심 개념 정리 소스코드를 저장할 개념으로 학생때부터 git과 github을 꾸준히 사용했는데, 어느덧 거의 10년차가 되었다. 그렇다보니 주변에 git 에 대한 내용을 설명하는 경우가 많았는데, 사람들이 항상 혼란스 blog.joonas.io 상태(status) git에는 파일의 상태(status)라는 개념이 있다. 아래의 명령어를 한번이라도 본 적이 있지만 자세히 생각해본적이 없다면, 이번 글은 무척 도움이 될 것이다. $ git status 이전 글에서 설명했듯이, git은 "파일이 변경된 기록"을 관리한다. 그리고 그 기록을 저장하는 단위이자 행위가 바로 커밋(commit)이다. commit은 실..

소스코드를 저장할 개념으로 학생때부터 git과 github을 꾸준히 사용했는데, 어느덧 거의 10년차가 되었다. 그렇다보니 주변에 git 에 대한 내용을 설명하는 경우가 많았는데, 사람들이 항상 혼란스러워 하는 부분을 이번 포스트 (어쩌면 시리즈)로 정리하고자 한다. Git vs. GitHub 가장 중요한 것은 git 과 github 의 차이부터 아는 것이다. 특히 수많은 IDE가 git의 기능을 지원하면서 github(또는 다른 서버)와의 연동 역시 당연하게 지원하다보니, 둘을 구분하지 못한 채 개발하는 경우가 많이 있었다. git 먼저, git은 온전히 "버전 관리 시스템(VCS; Version Control System)"이고 하나의 프로그램이다. 파일들의 변경 히스토리들을 기록하고 관리하는 것이 ..

Logit logit 함수를 이해하려면 odds 를 알아야한다. logit 함수는 logit(p)=log(odds) 이기 때문이다. Odds odds 는 어떤 사건이 발생할 확률과 발생하지 않을 확률을 비교한 값이다. 일반적으로는 성공 확률을 실패 확률로 나누어서 계산한다고 한다. odds=p1−p 여기에 로그를 씌운 함수를 logit function 이라고 부른다. logit(p)=log(odds)=log(p1−p) 이 logit function 을 x=[0, 1] 에 대해서 그래프를 그려보면 아래와 같이 생겼다. Sigmoid sigmoid 함수는 logit function의 역함수이다. 즉, x와 y를 뒤집은 그래프라는 ..