D-15

“나는 누구인가, 여기는 또 어디인가.”

신기하게도 그 난이도라든지 중요성이 어떠했던지 간에, 1년에 꼭 시험을 두세개씩은 보고 있다. 그리고 또 하나의 장벽이 앞에 서있다. 그래도 항상 깨닫는 것은, 그것이 참 쓸모없더라도, 그 안에 건지는 것이 적어도 하나 있다라는 점이다.

이번에는 비교적 그 교훈이 명백했다.  앞으로 어떠한 방법으로 공부해야 하는지. 또한 이것은 다른 것에도 적용할 수 있을 것 같은 확신. 단지 몇 년동안 그저 불안감에 그냥 쓸데없이 시간만 채우며 반복하던 방식이  능동적인 활동이라는 것에 대한 깨달음.

그렇게 2014년의 겨울에 단지 도망치고 싶다는 마음에서 시작된 하나의 작은 불씨가 몇년째 나를 괴롭하고 있지만 그리고 그 불씨는 여러가지 요소들, 주변환경-무엇보다도 ‘가족’이라는 이름-에 의해 커지지 못했지만, 여전히 마음 한구석에서 다른 방향으로 내가 가야할 길을 비추기 위해 타오르고 있는 것 같다.

일주일전만해도 좌절과 패배의식에 움츠러들어있었다면, 지금은 또 약간 될데로 되라는 느낌. 또 떨어지면 다시 도전하면 되니까.

간절하지 않다는 것은 한편으로는 얄팍한 자기방어 수단에 불과하고 또 가끔은 간절하지 않은 스스로에 한심함을 느끼기도 하지만, 다르게 생각하면 간절하지 않으면서도 지금까지 치우치지 않고 잘 해나가고 있는 내 모습에 만족하는 것도 좋은 자세인 것 같다.

 

nVidia Deep Learning Institute 참가 후기

외부 진료 자문 일정에 잠깐 여유 시간이 되어 참가해본 nVidia Deep Learning Institue (http://www.nvidia.com/content/apac/event/kr/nvidia-deep-learning-institute-march/)

(사진 출처 : http://biztribune.co.kr/n_news/news/view.html?no=17005)

구글링을 했는데 마땅한 후기들이 없어 참여할지 말지 고민했는데, 3월 세션의 주제가 Medical image segmentation 이었기에(이런 최근 핫한 이슈를 놓칠 수는 없지) 잘 모르는 상태에서 그냥 등록.

당일에 듣기로는 일주일만에 등록이 마감되었다고 한다.

교육 방식은 어떠한 이론의 강의도 아니고, 스스로 코딩을 해보는 방식도 아니고, 이미 jupyter로 만들어진 소스들을 하나하나 실행해가면서 그 결과를 확인해보는 것이다. 첫번째 session은 DIGITS이라는 nVidia의 프레임웍을 이용하고, 두번째 session은 Python(Tensorflow), 세번째는 R을 이용한다. DIGITS은 사전 준비 튜토리얼을 보고 대충 익혔고, 나머지 두 언어는 알고 있어서 이해에는 크게 무리가 없었다.

결과적으로 얘기하자면, 나한테는 정말 좋은 시간이었지만 조금은 애매한  level의 교육이라고 할 수 있는데, 왜냐면 이 세션을 통과하는 큰 줄기가 바로 convolution neural network 이기 때문에, 이 부분에 대한 기본적인 이해가 없느면 이미 만들어진 소스를 그냥 따라 가는 것에 불과하기 때문이다. 그리고 (개인적인 생각으로는) neural network은 각 node의 변화를 하나하나 직관적으로 이해할 수 없어서 결국 cross_entropy의 감소 및 우리가 측정하고자 하는 value의 증가, 감소로만 그 efficacy를 증명할 수 가 있기 때문에, 초보자들한테는 이걸 들어도 무슨 이야기인지 알기 어려운 느낌이었다.  김성훈 교수님의 강의(http://hunkim.github.io/ml/)가 정말 어마어마하게 쉽게 설명하고 있는 것이구나 하고 다시 느낄 수 있었다. 다행히 강좌를 RNN까지 들어놨기에 비교적 쉽게 이해할 수 있었다. 게다가 deconvulotion에 대한 개념적인 이해도 같이 해볼 수 있었다.

반면에 CNN, RNN(보니까 4월 세션은 이쪽이 주 일듯 하다)을 능수능란하게 구현할 수 있는 고급자한테는 더욱 필요가 없는 시간일 듯 하다. 다만 한가지 그래도 얻을 수 있다면 바로 이 인증서,

이름은 삭제해두었다.

이렇게 대충, 나는 Medical Image Segmentation에 대한 Deep learning 인증서(? – 정확히 말하자면 교육 참가 인증서)를 하나 갖게 되었다.

연좌셨던 nVidia 과장님께 다행히 쉬는 시간에 질문을 통해 많은 의문을 해소했으나, 여전히 잘 이해가 안가서 나중에 찾아볼 내용들.

#1. 표본이 적은 dataset에서 학습이 충분히 이루어지지 않는 단점을 해결하기 위해 fine tuning된 pre-trained model을 이용하여 학습을 시행하는데, 분명 이미 수차례의 epoch을 돌려서 구성된 각 노드의 값들이 추가되는 학습에 의해 크게 변화하는지?

– 이것에 대해 연좌분은 그래서 너무 layer들이 너무 많아질(deep?) 경우 overfitting이 발생하므로 ‘적절히’ 구성되어야 한다고…이 적절함을 어떻게 찾을 수 있을지가 하나의 삽질 같이 느껴진다. (마치 이건 생물학자들이 약간의 변수를 조절하고 Western blot을 돌리고, 바꾸고  다시 돌려보고 좌절하는 것과 같은 것이 아닐까?…)

#2. FCN(fully connected network) 이라는 것을 사용하는데, 원래 이미지같은 자료는 그 노드의 갯수가 너무 많이지기 때문에 FCN이 좋지 않다고 알고있다.(사실 이 말도 내가 잘못 알는 것인지도 모른다) 그런데 예제는 다 FCN으로 구성된 내용이었다. GPU를 믿고 그렇게 한것인지..

 

[C#/Kinect SDK2] 중간상황(2017.3.20)

  1. 향후 진행을 위해 Depth Window로 이용.
  2. 예제를 백분 이용하여 매번 frame이 올때마다 배경은 reload되는 방식으로, 좌표나 점들의 표시는 객체를 미리 생성해두고, 그 객체의 좌표를 그때그때 옮기는 방식으로 했다.
  3. HDFace의 좌표를 정확히 얻고자 센서에 가까이 가면 손 좌표가 잘 인식되지 않는 느낌이다. 좌측손의 빨간점이 자꾸 튄다.
  4. 얼굴을 기준으로 상자 3개를 이용해 버튼을 만들고, 좌측 손이 다가가면 파랗게 변하게 했다. 다음번엔 저 상태에서 주먹을 쥐면 녹색으로 변하면서 Click과 같은 event를 발생시키고자 한다.

 

[C#/Kinect SDK 2] 진행상황 정리

얼굴은 자진 모자이크.

참고사이트

  1. http://kinect.github.io/tutorial/lab01/index.html
  2. http://pterneas.com/2015/06/06/kinect-hd-face/
  3. https://writeablebitmapex.codeplex.com/

#1. HDFace 그리기(2)는 Depth window를 사용하기 때문에 발생한 좌표의 괴리. 이것을 해결하기위해 CoordinateMapper를 이용한다.

#2. 문제였던 것이 전송된 frame을 바로  WPF에서 image 객체에 쏴주면서 rectangle을 그리다 보면 지속적인 깜박임이 발생.

이를 해결하기 위해 전송된 frame을 Bitmap으로 변환하는 방식으로(1) Bitmap에 직접 도형을 그려줌. 이를 위해 사용한 것이 WriteableBitmapEx Library(3).

#3. 신기하게도 배경화면을 image의 source를 Bitmap으로 하고, HDFace는 canvas에서 그려주는 방식으로 하고 있다. 그래서 그런것인지 HDFace 그림이 전혀 끊기지 않고 부드럽게 움직인다. 배경만 Bitmap으로 해줘도 이런 문제를 해결할 수 있는 것인지 궁금하다. 테스트는 추후에.

 

 

[Tensorflow] 텐서보드(tensorboard) 이용

소스코드에 몇줄을 추가함으로써 아주 쉽게 결과를 확인해볼 수 있다. 6000번 시행시킨 결과 cost는 점차 감소하고 accuracy는 점차 증가한다. 생각보다 training 횟수가 꽤 많다.(그래봤자 몇ms차이지만)

텐서플로우를 몇일간 사용해본 결과, 중요한 것은 -항상 그렇지만- 데이터 라고 다시한번 느끼게된다. 이전에 데이터를 계산하는 flow를 구성하는데 뛰어난 머리가 필요했다면, 이러한 부분이 이미 다 구현되어버린 상태인것. 잠깐 사족을 더하자면, 내가 우리나라 의료에 관련된 데이터들을 이용한 모든것 (=왓슨?은 미국데이터려나)에 신뢰성에 의문이 있는 부분도 바로 이 부분이다. 데이터..논문이 하나 만들어짐에 있어서 사용되는 데이터가 어떻게 수집되는지를 보면 정교하게 하는 경우가 그리 많지 않은 듯 하다.

이제 다음은 실제 device에서 좌표 수집을 시작해볼 예정, Tensorflow자체도 더 공부해야할 부분이 많지만 일단 이 정도로도 충분히 기본적인 부분은 해결될 것 같다.

 

이비인후과 의사, 프로그래머, 여행, 음악과 미술