조금 더 어려운 것을 탐구하고자 합니다.
조금 더 어려운 것을 탐구하고자 합니다.(yoon seojin)
늘 새로운 것을 갈구하는 탐구자입니다. 알파고를 비롯한 여러 AI 기술에 충격을 받았으며 이로 인해 머신러닝, 딥러닝에 대한 관심과 흥미가 생겨 통계학과 머신러닝을 공부하였습니다.
4월 24일 07시18분

Language 수준 초급 ~ 고급 

<주력언어>

· Swift 

· Python 

· Objective-C 

· SQL 


<개발가능언어>

· C, C++, C# 

· JAVA 

· R 

· PLSQL

좋아요 0
    댓글 0
    4월 23일 07시26분

    [학습 Background] 

    1. 모바일 환경 개발 경험: iOS 개발 경험(2년) 

    2. Machine Learning 학습 경험: Coursera Machine Learning - Andrew ng 

    3. Computer Vision 학습 경험: Standford Univ - CS231n 

    4. 통계적 지식: 통계학 원론, 수리통계학(진행중) 

    5. 수학적 지식: 선형 대수 - Khan Academy, 미적분학, 해석학(진행중) 

    6. 컴퓨터 지식: 대학 교육 및 SICP(Structure and Interpretation of Computer Program) 학습


    좋아요 0
      댓글 0

      개요

      롯데 정보통신에서 제공한 외주 프로젝트 입니다. Github에 올라와있는 오픈소스의 Geofence library를 참고하여 지오펜스 개발 업무를 진행하였습니다. 현재 위치와 서버에 등록되어 있는 좌표와 반경을 계산하여 현 위치가 특정한 Circle 안에 들어오는지 나가는지를 체크했습니다.

      스크린샷 20200211 오후 4.58.04.png

      어려웠던 점

      내부 SDK 사용 불가

      IOS 내부에서 제공하는 Geofence 시스템이 존재했으나 등록할수 있는 Circle의 개수가 20개에 불과하여 많은 양의 Circle을 등록해야 하는 시스템에는 부적합했습니다. 따라서 위치 정보를 적용하는 것으로 방향을 잡았습니다.

      배터리 이슈

      그런데 위치정보를 사용하는 시스템이다 보니 배터리 이슈가 존재했습니다. GPS는 많은 양의 배터리를 사용하는 시스템입니다. 따라서 최대한 배터리 사용을 줄이기 위해 노력해야 했습니다.

      배터리 이슈를 위한 해결책

      이를 위해 Timer를 두어 특정한 간격마다 위치정보를 받는 작업을 진행했었습니다. 그러나 포어그라운드에서는 타이머가 작동하는 반면 백그라운드에서는 타이머가 작동하지 않는 이슈가 있었고, 이는 IOS 내부의 이슈였습니다. 그래서 백그라운드에서 계속 좌표를 모니터링 할수 밖에 없었는데 이 때문에 배터리 소모가 심해졌습니다.

      테스트

      아이폰 각 모델별로 배터리 양이 달랐기 때문에 모델마다 테스트를 해야 했습니다. 백그라운드에서 아이폰 8에서는 1시간에 4%정도 소모되었지만 아이폰 5s에서는 23%가 소모되었습니다.

      결론

      결국 이 이슈 때문에 지오펜스 SDK는 배포되지 못하였습니다.

      좋아요 0
        댓글 0

        휴대폰과 아두이노 유니티를 연동하였으며, 아두이노 버튼을 통해 총을 발사해 적을 공격하여, 집을 지키는 간단한 디펜스 게임입니다.

        프로젝트 인원 구성

        5인 참여하였으며 팀원으로 참가하였습니다.

        연동

        저는 arduino를 sketch로 코딩하고 arduino와 android와 unity를 연동시켰습니다. 즉, arduino와 android , unity를 함께 연동시키는 작업이 필요했고 이를 위해 android 플러그인을 만드는 작업이 필요했습니다. 수많은 실패 끝에 결국 안드로이드 플로그인을 만들어서 환호했던 기억이 납니다.

        좋아요 0
          댓글 0

          스크린샷 20200210 오후 2.26.20.png

          상용화된 앱인 Comico의 iOS 분야 UI 유지보수 및 개발을 맡았습니다. 제가 했던 주요 개발업무는 장르시스템입니다.

          첫 상용프로젝트

          이 프로젝트는 저의 첫 상용 프로젝트였습니다. 아직 코더로서는 미숙한 단계에서 진행한 프로젝트였기 때문에 개인적으로는 부침이 많았습니다. 하지만 그만큼 열정이 있던 시기였기 때문에 밤새 코딩을 해도 재미있었던 기억이 납니다.

          사용언어

          Objective C를 사용하였습니다.

          어려웠던 Task

          이 프로젝트에서 가장 어려웠던 작업은 팝업 작업이었습니다. 팝업작업은 사용자에게 경고 및 알림을 주는 작업입니다. 그런데, 이러한 팝업이 사용자의 조건에 따라(ex: 로그인여부) 서비스의 조건에 따라(ex: 이벤트) 여러개 나타났어야 했으며, 팝업이 서비스의 기획대로 순차적으로 나타났어야 했습니다. 또한 팝업이 서버에서 전달되는 이미지를 동반해야했기 때문에 통신이 이루어져야 했습니다. 그리고 팝업이 한번에 파바박! 띄워졌어야 했기 때문에, 통신은 비동기적으로 진행되어야 했습니다.

          제가 사용했던 방법은 pop-up을 관리하는 queue를 만들고 이를 통해 관리하는 방식이었습니다.

          일단 통신을 모두 비동기적으로 해야했기때문에, 팝업을 수행하기 위한 조건(ex: 로그인, 이벤트)들에 대한 통신을 수행하고, 해당 조건에 맞는 이미지를 다운로드 받는 통신을 "모두" 비동기적으로 수행합니다. 그리고 통신의 내용을 popup queue에 저장해놓습니다.

          그리고 popup queue에 "순서"를 두어 먼저 띄워야할 순서의 팝업 정보가 통신을 통해 들어오면 해당 팝업을 띄우고, 그리도 다음 팝업을 띄우게 했습니다. 만약 해당 순서의 통신을 통한 정보가 들어오지 않으면 해당 통신을 기다리되 서버에러나 timeout이 나면, 다음 팝업을 띄우도록 했습니다.

          인원 구성

          2인이 참여했으며 팀원으로 참가했습니다.

          좋아요 0
            댓글 0

            라인에서 가계부 어플리케이션 개발을 맡았습니다. 해당 어플리케이션은 일본에 출시되었습니다. 제가 맡은 주요 개발로는 passcode 시스템, 그룹 시스템, 설정 화면입니다.

            개발도구

            swift와 reactive-swift를 가지고 개발에 참여했습니다. reactive-swift는 함수형 프로그래밍 패러다임과 reactive programming 패러다임을 구현한 라이브러리입니다. reactive-swift에 대한 경험은 저에게 함수형 프로그래밍 패러다임에 대한 구체적인 이해를 넓혀주었습니다.

            함수형 프로그래밍

            저는 일명 마법사책이라고 불리는 컴퓨터 프로그램의 구조와 해석이라는 책을 본적이 있었습니다. 그 때문에 라인에서 적용한 새로운 개발환경인 reactive-swift를 조금 더 쉽게 받아들일수있었습니다.

            스크린샷 20200210 오후 2.17.12.png

            좋아요 0
              댓글 0

              "지니"에 있는 Top 200의 노래의 가사를 추출하여 어떤 가사를 써야 순위안에 들수 있을지를 명사, 형용사, 어미 별로 구분해서 분석하였습니다.

              첫 분석 프로젝트

              저의 첫 데이터 분석 프로젝트입니다. 저는 노래를 들을때 가사를 굉장히 중시합니다.(가사가 좋지 않으면 그 노래를 듣지 않을 정도입니다.) 그래서 가사 분석 프로젝트를 진행했습니다.

              IDEA

              "높은 순위에 드는 가사가 인기 많은 가사이다." 라는 가정을 하고 순위에 따라 가중치를 매겨 어떤 가사를 써야 순위권안에 들을수 있을지 파악했습니다.

              인사이트

              가중치가 큰 값을 갖는 가사를 wordcloud를 통해 띄워놓고 분석을 진행했습니다. 명사에 관련해서는, 사랑에 관련된 단어가 인기가 많았습니다. 선어말 어미에 관련해서는, 과거에 대한 회상에 관련된 단어가 인기가 많았습니다. 형용사에서는, 없-이라는 형용사가 인기가 많았는데 비어있는 상태를 나타내는 가사가 인기가 많다고 생각했습니다.

              스크린샷 20200210 오후 2.44.11.png

              스크린샷 20200210 오후 2.44.48.png

              스크린샷 20200210 오후 2.44.52.png

              소스

              https://github.com/SeojinYoon/music_iyrics_analysis

              좋아요 0
                댓글 0

                캡처.PNG

                교육기관인 아이티윌에서 6인과 함께 진행한 프로젝트입니다.

                SNS상의 노출도와 매출과의 상관관계를 보고자 했습니다.

                구체적으로는 일본 불매운동을 전후로 일본 맥주의 매출이 큰폭으로 감소했기 때문에, 일본 불매운동을 전후로의 페이스북의 이미지를 가져와서 맥주 브랜드별 노출도를 파악하였습니다.

                검색 키워드

                적절한 데이터 구성 및 제한을 위해 검색 키워드 선정이 중요했습니다. 저희는 맥주와 편맥을 키워드로 사용해서 약 4000장의 데이터를 페이스북으로부터 추출했습니다. 검색 키워드 - #편맥 #맥주

                인사이트

                다음 그림은 이 프로젝트의 결과입니다. 일본맥주가 일본 불매운동 전후로 SNS상의 노출도가 줄어든것을 확인할수 있었습니다. 그리고 반면 국내맥주와 수입 맥주의 노출도가 증가했습니다. 저희는 일본 맥주의 감소폭 만큼 다른 맥주의 매출이 늘어났기 때문에 이런 결과가 얻어졌다고 추측하였으며, SNS상의 노출도와 매출이 연관이 있다고 판단했습니다.

                스크린샷 20200210 오후 2.04.03.png

                Computer Vision 알고리즘

                Object Detection 모델로는 YOLO와 MASK RCNN을 이용하였습니다. 두가지 모델을 모두 사용한 이유는 YOLO는 1-stage detection 모델이고 MASK RCNN은 RCNN 계열로써 2-stage detection 모델이었기 때문에 두 모델을 비교해보고 싶었기 때문입니다. 그리고 더 나아가 저희가 자체로 앙상블 모델을 만들어서 두 모델을 합치고자 했습니다.

                모델 비교

                모델을 비교하기 위한 척도로 recall과 precision을 사용하였으며, 테스트를 위해 인스타그램에서 데이터를 200장 뽑았습니다.(하나의 브랜드당 20장씩 -> 10개 브랜드 200장) 결과는 다음과 같습니다. precision이나 recall 모두 Yolo가 우수한것으로 나타났습니다. 스크린샷 20200210 오후 1.57.48.png

                앙상블

                시간상 앙상블 모델은 작성하지 못하였지만 저희가 기획한 모델은 다음과 같습니다. 간략하게 설명하자면, MASK RCNN과 YOLO가 비슷한 영역을 Detectiong 했다면, 두 모델의 bounding box에 해당하는 probability를 추출하여 더 큰 probability를 가진 class를 선택하는 것입니다. 스크린샷 20200210 오후 2.09.01.png

                인원구성

                총 6인 참여했으며 저는 팀장으로 참여했습니다.

                소스

                https://github.com/SeojinYoon/Logo_Recognition

                좋아요 0
                  댓글 0
                  1월 2일 06시46분 ·  오목 AI

                  오목.PNG

                  알파고에게 영감을 받아 제작하였으며 총 5인이 참여하였습니다. 가중치 알고리즘을 통하여 구현하였으며, 3수 앞까지 내다보게 설계하였으며, 33 체크 기능도 넣었습니다. 당해년도의 학교 대표 프로젝트로 선정되기도 하였습니다.

                  가중치 알고리즘

                  오목 바둑판을 배열 형태로 생각하고 해당 배열에 가중치를 주어 가중치가 가장 큰 값을 가지는 위치에 오목알을 두는 방식입니다. 가중치를 매기는 방식은 예를 들어, 내 돌이 2개가 나란히 있을때 +2를 주고 내 돌이 3개가 나란히 있을때 +10을 줍니다. 이러한 방식으로 상대의 수와 내 수에 대해 모든 가중치를 계산한 다음 합산합니다.

                  3수앞

                  AI의 수가 놓였을때 상대의 수를 예측하고 AI의 수를 두는 방식입니다.

                  인원 구성

                  5인 참여 팀장으로 참가

                  소스

                  좋아요 0
                    댓글 0