kok202
Dluid 개발 후기

2020. 1. 29. 04:18[개발] 개인 프로젝트/Dluid

 

 

Iris 데모

 

Dluid (Deep Learning User Interface Design)

개발 기간 : 2019.03 ~ 2020.02

개인 프로젝트를 마무리하여 개발 관련 일지를 작성해둡니다. 개발 동기 및 소개는 Github README 로 작성해두었으니 해당 포스팅에 추가 작성하진 않겠습니다.

 

깃허브 [링크]

프로그램 [다운로드]

 

 

프로젝트를 마무리하면서

사실 초기 프로젝트 기획 당시에는 이것보다 더 많은 내용을 담고 싶었었습니다. 초기 목표가 'GUI를 사용해서 MNIST  GAN 모델을 만들어 볼 수 있고 테스트까지 할 수 있는 환경을 만들어보자' 였기 때문에 지금 만들어진 프로젝트와 비교해보면 마무리 되지 못한 부분이 많이 보여 너무 아쉽습니다. 그리고 프로젝트 이외에 딥러닝 강의를 찍어 본다던지 책을 집필해본다던지 와 같이 다른 부수적인 일들도 해보고 싶었는데, 현재 단계에서 마무리하고 이렇게 배포하게 됬네요.

 

수많은 하고 싶은 일들을 남겨두고 v1.0.0이 아닌 v0.1.0 단계에서 1차 배포를 한 이유는 다음과 같습니다.

  1. 개발 기간이 1년을 넘어가기 시작했다.
  2. 오픈 소스 프로젝트이기 때문에 혹시 PR 이 들어와서 완성해주지 못한 부분을 누군가 대신 완성해주지 않을까? 하는 기대. (사실 오픈 소스 한다고 해도 반응이 없을거 라는 점. 알고 있습니다.)
  3. 이것 말고도 만들고 싶은 아이템이 너무 많다.
  4. 개발 하느라고 공부해보고 싶은 내용을 공부하지 못하고 있다.

여러모로 아쉬움이 많네요. 하지만 v0.1.0 에서도 딥러닝에 필요한 기초 지식을 학습하는데 괜찮은 프로그램을 만들었다 생각합니다. 진짜 그냥 이런거 있으면 너무 좋겠다라는 생각으로 개발을 시작했었습니다. 딥러닝을 공부해보고 싶은데 프로그래밍 지식이 없는 분들이라면 아래 추천드리는 동영상과 함께 해당 프로그램을 이용해서 공부해보시면 좋을 것 같습니다.

추천 강의 시리즈 : https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm

* RNN 모델 테스트 관련해서는 아직 제가 dl4j 라이브러리 이해도가 낮아서 제대로 된 것인지 확인하기 어렵습니다.

 

 

 

공유 해보고 싶은 내용.

이번 개인 프로젝트를 하면서 칸반 보드를 적용해봤습니다. 일반적으로 칸반보드를 아날로그로 구현하면 화이트 보드 + 포스트잇을 많이 사용하는 것으로 아는데, 그냥 적당히 옷장을 이용해서 제 나름대로 구역을 나누고 진행해봤습니다.

모든 백로그. 한꺼번에 정리하다보니 어떤 태스크는 생성했을 때의 에픽과 일치하지 않을 수 있습니다.

제일 아래는 1차 배포를 마치고 백로그들을 모아놓은 사진입니다.  개인 프로젝트를 이렇게 해본 것은 처음인데 상당히 좋은 경험이였고 이 방식은 앞으로도 계속 활용할 것 같습니다. 개인적으론 해당 업무 프로세스 덕분에 업무 속도가 많이 올라갔다 생각합니다. '이 Task 쉬워보이는데 오늘은 힘드니까 이것만 하고 자야겠다' 로 시작해서 '조금만 더...'가 되어 3시간 4시간 작업하다 잠든 경우도 많았습니다. 그날 그날 일 처리하는 재미도 있었고요.

 

그리고 개인적인 경험을 두서없이 몇자 남기자면 

  • 기술 리서치가 부족해서 간단한줄 알았는데 애를 먹은 경우가 굉장히 많았었습니다. javafx 의 canvas 3D 와 dl4j 관련 자료가 많이 부족한 듯 싶습니다. 
  • 필요할 때마다 백로그를 만들어서 사용하고 완료하고 하는 방식은 개발 속도는 높여주는 것 같은데, 개발 일정을 산정할 수 없다는 점이 가장 치명적인 단점 같았습니다.
  • 오늘 백로그를 정리하면서 깨달은 것인데 유독 '기타', '추가기능 구현' 에픽에 태스크가 많이 모인 것이 보입니다. 에픽 이름이 모호했기 때문에 이런 현상이 생겼다고 생각됩니다. 분리가 필요하다는 걸 느꼈습니다. 
  • 더불어 다음에 개발할 때는 에픽 중에 리팩토링이라는 에픽도 있으면 괜찮을 것 같습니다.
  • 백로그를 작성 하지않고 처리한 것들도 굉장히 많습니다. 코드 5~6줄로 처리되는 일이 있을 때 이를 별도의 태스크로 분리하는게 맞는 건지, 아니면 이런 사소한 것은 그냥 겸사겸사 처리하는게 맞는건지, 또 아니면 사소한 태스크들을 모으고 모아서 하나의 태스크로 만들고 한꺼번에 처리하는 게 맞는건지, 참 애매한 것 같습니다. 이 부분은 융통성있게 해야 할 듯 보입니다.
  • 마무리된 백로그를 롤백한 것도 존재합니다.
  • 처음엔 GAN 을 GUI로 구현하는 레벨을 목표로 잡았었기 때문에 그런 백로그도 보입니다. 이걸 다시 보니 마무리 못한게 계속 아쉽네요. 
  • 주변 지인을 만날 때 이렇게 혼자하고 있다 말하니 Trello 라는 좋은 무료 툴이 있다는 사실을 들었었습니다. 다만 뭔가 백로그를 남길 때는 직접 손으로 작성하는 것이 생각 정리가 잘되서 저는 포스트잇으로 하였습니다.

 

 

 

추가

  • java 관련 GUI 프로그램은 Swing 만 있는 줄 알았는데 javafx 를 접해본 것은 좋은 경험이였습니다.
  • 만들면서 후반부에는 javascript 에도 tensorflow 가 있다는 사실을 발견하고 javascript + tensorflow + electron 으로 개발할 걸하고 매일 같이 후회했습니다.
  • 오픈소스 프로젝트이지만 Test 케이스는 만들 기회조차 없었습니다. 프론트엔드 개발자 분들 존경합니다. 프론트 엔드에 테스트 케이스를 만드는 방법조차 감이 안오는데 실제 만들고 계시는 분이 계시다면 배워보고 싶네요.
  • 개발 전에는 몰랐으나, 개발 도중 유사한 프로젝트들을 몇 개 발견 할 수 있었습니다.
    fabrik : https://github.com/Cloud-CV/Fabrik
    Deep cognition : https://deepcognition.ai/
    솔직한 이야기로 위 프로젝트들을 보고 굉장한 현타가 왔지만, 그럼에도 이 프로젝트가 경쟁력있다 생각한 이유는 다음과 같습니다. 

    1. 두 프로젝트 모두 학습을 목적으로 둔 프로젝트가 아니다.
    2. 두 프로젝트 모두 단일 방향의 멀티 레이어 모델만 만들 수 있다.
    3. 두 프로젝트는 레이어 쌓는 과정을 2D 로 묘사하는 반면 Dluid 는 3D 이기 때문에 시각적으로 보여줄 수 있는 인사이트 요소가 더 많다.

    1번 3번은 Dluid 가 훨씬 더 강점이 있다 생각했고, 실제로 결과물도 의도한대로 나왔다 생각합니다. 2번의 경우는 좀 할 이야기가 많은데, 저의 첫 기획 목표는 GUI 로 GAN 모델을 만들 수 있게 하자 였기 때문에, GAN 모델을 만들 수 없는 fabrik 과 Deep cognition 은 경쟁력이 떨어진다 생각했었습니다. 하지만 개발하면서 그 생각이 바뀌었는데, 왜냐하면 fabrik 과 Deep cognition 이 저렇게까지 밖에 만들지 못했던 이유를 저 또한 그대로 답습했기 때문입니다. ㅠ

 

 

 

 

 

'[개발] 개인 프로젝트 > Dluid' 카테고리의 다른 글

Dluid  (1) 2020.01.29