목록개발 (101)
Joonas' Note

먼저 Quick, Draw! 는 구글에서 위와 같은 낙서 데이터 셋을 학습하여 345개의 주제 중 하나를 그리면 머신 러닝 모델을 통해 정답을 맞추는 게임이다. 그리고 이 데이터셋을 오픈소스로 공유했다.목표 설정시계열 데이터를 Online 으로 처리하는 RNN 모델을 다루고 싶었고 최종적으로는 브라우저에서 돌아가도록 포팅하는 것이 목표였으나, 아래 서술될 이유로 개발 방향을 잠시 수정하였다.345개의 클래스로 적지 않은 클래스를 분류하는 모델이지만 각 클래스당 최소 1만개 이상의 Dataset이 있으므로 학습에는 어려움이 없을 것이라고 판단하였다.목표 수정간단한 RNN 모델을 만들었는데 학습이 잘 되지 않았었고, 이를 해결하는 과정에서 RNN 구조의 문제인지 데이터 전처리의 문제인지 파악하기가 어려워, ..
문제 git push 를 하다보면 아래와 같이 RPC failed 를 이유로 실패하는 경우가 있다. $ git push origin Enumerating objects: 23, done. Counting objects: 100% (23/23), done. Delta compression using up to 10 threads Compressing objects: 100% (20/20), done. error: RPC failed; HTTP 400 curl 18 HTTP/2 stream 7 was reset send-pack: unexpected disconnect while reading sideband packet Writing objects: 100% (20/20), 342.08 MiB | 21.3..

배경 미디엄 블로그를 보다보면 아래와 같이 예상 읽기 시간이 나온다. 예전에 사람이 글을 읽는 데 걸리는 평균 시간을 알아본 적이 있다. WPM(Words per minute) 라고 부르는 단위도 있어서 이미 연구가 있었던 듯 하다. 아래와 같이 여러 나라에 대해서 WPM을 계산한 연구도 있지만 한글은 빠져있다. 한글을 제외하면 평균적으로 190~200 WPM 정도의 속도이다. TimeToRead | Wolfram Function Repository Function Repository Resource: TimeToRead resources.wolframcloud.com 그래서 한글에 대한 WPM을 찾아보다가 120 정도라는 글을 찾았고 한글과 영문의 분포에 따라 적절히 계산하기로 했다. 영어의 경우에는 ..

배경 노래를 꽤 다양하게 듣는 편인데 최근 한국 노래들에 이지리스닝류가 많아지기도 했고, 한국어 가사의 비중이 점점 줄어들고 있는 등 한국 노래 가사의 트렌드가 궁금해져서 한번 데이터를 분석해보기로 했다. 데이터는 멜론 연대별 TOP 100 차트로부터 제목/가수/가사 정도만 수집했고, 기억이 맞다면 약 8시간정도 걸렸다. 정말 영어가 많아졌는가? 마침 1964년부터 2023년까지 60년의 데이터가 쌓였고, 결론부터 말하자면 영어 비중은 많아졌다. 2023년에 들어서는 영어 가사의 비중이 25% 를 넘을 정도로 많아졌고, 최근에 사람들이 이런 사실을 체감하는 이유는 2011년 이후로 10년만에 영어 비율이 더 커지고 있기 때문으로 보인다. 영어 비중은 2008~2012년 사이에 잠시 상승하고 그 뒤로는 ..

눈코입 맞추기 게임 만들기 2편 눈코입 맞추기 게임 만들기 1편 예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코 blog.joonas.io 문제점 2편에서는 얼굴을 제대로 찾지 못하는 이슈를 고치면서, 사진에 있는 모든 얼굴을 인식해서 퍼즐을 만들도록 변경했다. 하지만 아래와 같이 고개를 갸울인 얼굴 사진은 결과가 원하는 대로 나오지 않았다. 따라서 아래의 빨간 네모처럼 얼굴이 회전한 각도를 새로 구하고, 그에 맞게 다시 face landmark를 찾아야한다. 얼굴 회전시키기 정확한 출처는 모르겠으나 주로 face landmark를 추출할 때 68개의 점을 찾는다. 지금까지의 결과 역시 위 68 fac..

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

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

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