나만의 Docker Image를 만들어보자 도커 허브에서 우리가 필요로 하는 이미지를 docker pull 명령어를 통해 마음껏 가져올 수 있습니다. 하지만, 도커 허브에 존재하지 않는, 우리만의 프로젝트를 이미지로 만들어 공유해야 할 순간이 있습니다. 이러한 순간을 대비해, 직접 커스텀 이미지를 만드는 방법을 알아보고자 합니다. 나만의 커스텀 이미지를 만들기 위해선 크게 Dockerfile을 이용하는 방법과, Commit 명령어를 이용하는 방법 2가지로 나눠볼 수 있습니다. 해당 포스팅에서 얻어갈 수 있는 정보는 아래와 같습니다. Commit을 통해 이미지 생성하기 Dockerfile을 통해 이미지 생성하기 Commit을 통해 이미지 생성하기 commit 명령어는 현재 작업중인 컨테이너를 이미지로 변환..
도커의 필요성 도커를 처음 공부했을 때는 “어렵기만 하다”생각했습니다. 내가 왜 이 어려운 내용을 배우고 있는 건지, 그 어떤 목적성과 필요성이 없었기 때문이죠. 이처럼, 무작정 도커를 공부하려 하면 이해 안 가는 게 투성이 일 것입니다. 어렵기도 하고요. 하지만, 도커가 필요한 순간을 몇 번 마주치고 그 맥락을 인지하게 되면, 도커만큼 재밌고 또 잘 다루고 싶은 툴은 없을 거라 생각합니다. (깃도 비슷한 맥락이겠네요) 그러한 관점에서, 개인적으로 도커의 필요성을 느낀 순간을 공유하고자 합니다. 작년, 딥러닝 관련 외주 프로젝트를 진행할 당시였습니다. 마감 기한을 2일 남겨놓고 필요한 모든 코드와 테스트를 완료해 놓았습니다. 최종 데모를 위해 다른 컴퓨터에 실행만 시키면 되는 상황이었기에 매우 여유로웠습..
생성 모델의 한 축을 담당하는 Variational Autoencoder를 이해하기 위해서는, Autoencoder를 그냥 지나칠 수 없습니다. 이번 글에서는 Autoencoder에 대해 이해해 보는 시간을 가져보겠습니다. Autoencoder Autoencoder는 위의 그림과 같은 구조를 가지고 있으며 Encoder, Latent Vector, Decoder 이 3가지의 구성으로 이루어져 있습니다. 해당 모델의 가장 큰 목표는 데이터를 잘 압축하고자 하는 것입니다. 이 3가지의 구성 요소들이 어떻게 데이터를 잘 압축할 수 있도록 해주는지 하나하나씩 살펴보도록 하겠습니다. Autoencoder의 목표는 데이터를 잘 압축하는데에 있다. Encoder Autoencoder에서 Encoder의 역할은 입력된..
Variational AutoEncoder를 이해하기 위해서는 기존의 머신러닝 관점을 확률론적 관점으로 바라볼 수 있어야 합니다. 해당 글은 이활석님의 오토인코더의 모든것이라는 강연을 보고 정리한 느낌이 되겠습니다. 이번 포스팅에서는 아래의 문구를 이해하는데 초점을 맞추며 내용을 이어갈 계획입니다. 딥러닝 모델을 학습시킨 다는 것은 Maximum Likelihood Estimation 하는 것과 같은 말이다. 기존의 머신러닝 학습 과정 우리가 일반적으로 머신러닝을 처음 공부할 때, 아래와 같은 메커니즘으로 모델이 동작한다는것을 배웁니다. 학습데이터 x를 모델에 입력한다. 입력값 x가 모델 내의 파라미터(Weight and Bias)를 거쳐가며 예측값인 y_pred를 출력해 낸다. 이렇게 얻은 예측값 y_..
이전 포스팅 1.Task : 해당 프로젝트에서 문제정의에 대한 내용을 다룹니다. 2. DataCentric : 주어진 데이터를 살펴보며, 데이터가 가지는 문제점을 찾아내고 인사이트를 얻는 과정입니다. 3. Classification & CAM : 부품 불량을 위해 분류 모델을 학습하고, 신뢰성을 확보하기 위해 CAM기법을 적용해 보는 과정입니다. 4. CAM 대시보드 개발 : 최적의 CAM 시각화를 얻기 위한 실험과 함께 대시보드를 개발하는 과정입니다. [널링 외의 요소] Anomaly Detection 앞서 DataCentric 편에서 압입과 미압입인 데이터에 대해서 살펴보고 그 결과, 정상 데이터만을 활용하는 이상치 탐지 방법론으로 해결하고자 했습니다. 이상치 탐지는 처음 접해보는 task였기에, 서..
이전 포스팅 1.Task : 해당 프로젝트에서 문제정의에 대한 내용을 다룹니다. 2. DataCentric : 주어진 데이터를 살펴보며, 데이터가 가지는 문제점을 찾아내고 인사이트를 얻는 과정입니다. 3. Classification & CAM : 부품 불량을 위해 분류 모델을 학습하고, 신뢰성을 확보하기 위해 CAM기법을 적용해 보는 과정입니다. 최고의 CAM 시각화를 얻어내자 앞선 포스팅에서 분류 모델의 신뢰성을 위해 GradCAM을 적용해 봤습니다. 그 결과, 높은 성능에 대한 신뢰성을 어느 정도 확보할 수 있었죠. 단순히 신뢰성 확보를 위해 CAM을 적용해 본 거지만, 이 시각화 정보를 공장 측에도 제공해 주면 좋겠다는 생각이 문득 들었습니다. 단순히 어떤 불량인지 분류하는 걸 넘어, 불량의 위치정..
이전 포스팅 Task : 해당 프로젝트에서 문제정의에 대한 내용을 다룹니다. DataCentric : 주어진 데이터를 살펴보며, 데이터가 가지는 문제점을 찾아내고 해결방안을 도출하는 과정입니다. 모델의 흐름 불량 검출을 위해 사용한 모델 아키텍처는 위와 같습니다. DataCetric 편에서 말했듯, 널링 내의 요소(찍힘, 밀림, 이중선)와 널링 외의 요소(미압입)로 불량의 기준을 나누었고, 그에 따라 모델의 로직도 2가지로 나뉘게 되었습니다. 이번 포스팅에서는 널링 내의 요소로 찍힘과 밀림, 이중선, 정상을 분류해 내는 내용이 될 것이며, 이 과정에서 GradCAM기법을 사용하여 모델의 신뢰성을 확보하는 내용이 될 것입니다. [널링 내의 요소] Classification 부품 이미지에서 널링 내의 영역을..
Data Centric AI 최근 들어 딥러닝 계에서 Data-Centric AI라는 말을 자주 듣게 됩니다. 실제로 매년 기술의 성숙도를 표현해 주는 가트너의 하이프사이클(Hype Cycle)을 보면, Data-Centric AI는 많은 관심과 기대를 받고 있는 분야임을 확실히 알 수 있습니다. 그렇다면, 이렇게 떠들썩한 Data-Centric AI가 뜻하는 메시지는 뭘까요? 이름에서 알 수 있듯이 데이터의 관점으로 AI를 바라본다는 것입니다. 기존에는 모델 관점으로 AI가 많은 발전을 이뤄 왔었죠. 이를 Model-Centric AI라고도 합니다. 하지만 최근 들어 Model 보다는 Data의 관점에서 더 많은 연구와 작업이 필요하다고 대두되고 있습니다. 실제로 “머신러닝 성능을 향상시키기 위해선 모..