지난주 즈음부터 나에게 주어진 업무. "TensorRT가 뭔지, native model, cuda engine model을 각각 돌려보고, cuda engine으로 변환이 안 되는 레이어는 어떻게 하는지 알아보고 발표하세요"
윈도우에 Vim을 설치했다. 문제가 2가지 있다. 기본 설치파일은 앞으로 절대 열어보지 않을 파일들을 함께 설치한다. 설치 후에도 cmd나 PowerShell에서 vim명령어를 못 알아 듣는다.
두 달만의 포스팅이다. 채용전형 때문에 바빴다. 결국 원하는 일을 할 수 있게 되어서 기쁘고 또 뽑아주셔서 감사하다는 마음이 크다.
edgde device에는 gpu가 없는 경우가 많다. cpu는 int8을 활용하는데 cpu에 모델을 실으려면 모델이 가진 자료형을 조작해야 한다. 이 과정을 quantization이라고 한다. 세상에 없던 기술은 아니고 이미지를 압축하는 원리를 활용했다.
tf.keras와 tf.nn에 같은 기능을 하는 layer를 구현해놨다. low level에서는 tf.nn이 돌아갈 거라고 생각은 했지만 그러려니 하면서 넘겨왔다. 그러다 소스코드를 봤는데 있어야 되나 싶은 조건문들이 많이 붙어있었고 이걸 걷어내고 싶었다.
모델이 발전할수록 모델이 요구하는 메모리와 용량이 커진다. 실시간으로 응답해야 하거나 개인정보처럼 민감한 정보를 처리하는 경우라면 반드시 온디바이스에서 처리해야 한다. 문제는 온디바이스의 메모리와 용량은 서버만큼 넉넉하지 않다.
수능문제를 풀 때 과목을 넘나들면서 묻는 문제유형이 있다. "글쓴이(화자)의 의도로 올바른 것은?" 다른 사람의 의도를 알고 싶어하는 건 인간의 본능인 것 같다. 요즘은 사람속 뿐만 아니라 흔히들 블랙박스라고 부르는 머신러닝 model의 속도 알고 싶어한다.
"L2 regularization과 weight decay는 같다." 많은 자료에서 이렇게 소개한다. tensorflow와 pytorch에서도 두 가지를 혼용해서 구현하고 있다. 여기에 그렇지 않다고 주장한 연구자들이 나왔다.
모델을 generalize하는데 많은 시간이 들어간다. 좀 다른 말로 overfitting을 막는 일이다. 특히 optimizer로 해결하는 방법에는 L2 regularization, weight decay가 있다고 알려져 있지만 잘 쓰기란 쉽지 않다.
ResNet에서는 degradation을 identity mapping으로 해결하면서 gradient flow를 원활하게 하면 layer를 더 쌓으면서 성능향상도 기대할 수 있다는 점을 밝혔다. 그러면 극단적으로 모든 layer를 mapping하면 어떻게 될까?
그동안 분류과제에서 loss function은 주로 softmax를 기반으로 한 cross entorpy를 썼다. 현실에서는 원하는 만큼의 data를 확보하는 게 어려울 수도 있고 같은 category안에 있는 data를 분류해야 할 때도 있다.
Sorting을 공부하다보면 어떤 상황에서는 뭘써야 하는지 알게되면서 더 큰 알고리즘을 만들 때 도움이 될 거라고 기대하면서 몇가지를 정리하려고 한다. 그래서 우리가 알아야 하는 것은 크게 3가지다. 알고리즘, 구현, best and worst case
Sorting을 공부하다보면 어떤 상황에서는 뭘 써야 하는지 알게되면서 더 큰 알고리즘을 만들 때 도움이 될 거라고 기대하면서 몇가지를 정리하려고 한다. 그래서 우리가 알아야 하는 것은 크게 3가지다. 알고리즘, 구현, best and worst case
대표적인 1 stage detector의 SOTA model이다. bbox와 object classfication을 한 방에 예측하고 있어서 2 stage detector보다 간단한 구조를 가진다. 그래서 비교적으로 빠르다.
Backbone과 RPN으로부터 넘어오는 data를 받아서 최종적으로 bbox를 그리고 bbox 안에 있는 object의 class를 예측하는 모듈이다. 2 stage detector, 1 stage detector 모두에 두루 쓰인다.
Detector 관련 논문을 읽다가 보면 가끔 만날 수 있다. 내가 알고 있는 단어들을 합쳐도 "변화가 없다" 정도로 파악할 수 있을 뿐 구체적으로 어떤 변화를 말하는 건지 모르겠다. 앞뒤로 문맥을 좀 파악해보려고 해도 오리무중이다.
classifier를 detector로 만들어주는 핵심구조다. Faster R-CNN의 연구자들은 기존에 쓰던 selective search대신 region proposal network를 제안했다. 이후의 detector들은 `RPN`을 조금씩 변형해서 쓰고 있다.
Since almost all the programming language doesn't have these structures user has to implement it when needed. So we call it abstract data structure.
각 픽셀의 밝기나 색깔이 얼마나 강한지 히스토그램으로 분석해서 너무 강한 픽셀은 0-255 사이의 값으로 평준화 해주는 거다. gray scale 이미지에서는 어느 정도로 밝은지, rgb이미지에서는 어떤 색이 강한지 알아볼 때도 쓸 수 있을 것 같다.