분류 전체보기 367

[Docker] 도커의 기본 이해

도커란 한 마디로 정의하긴 어렵지만 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고, 배포하고, 실행할 수 있도록 설계된 도구. 즉, 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계 핵심은 도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 가지고 있으며, 도커 이미지를 이용해서 컨테이너를 생성하며, 도커 컨테이너를 이용하여 프로그램을 실행한다. 도커 사용의 흐름 도커 Client(CLI)에서 명령어를 입력하면 -> 도커 Server로 명령 요청이 가고, 처리된다. 예를 들어 docker run hello-world 명령어가 도커 Client에 입력이 되면 => 도커 Server는 이미지 Cache 보관 저장소에 해당 이미지가 있는지 찾아본다. 만약 캐시 보관 장소에 hello-world 이..

Dev/DevOps, Infra 2021.01.27

[Milestone 그 이후] Tensorflow Model Serving

1. SavedModel로 내보내기 학습시킨 모델을 tf.saved_model.save()함수로 SavedModel 포맷으로 내보낼 수 있다. 모델과 이름, 버전을 포함한 경로를 전달하면 이 함수는 이 경로에 모델의 계산 그래프와 학습결과 가중치를 저장한다. model_version = "0001" model_name = "medisharp_pill_image_model" model_path = os.path.join(model_name, model_version) tf.saved_model.save(model, model_path) 그러면 - saved_model.pb: 계산 그래프를 정의 - variables: 변수값을 담고있는 폴더로, 많은 개수의 가중치를 담은 모델의 경우 변수값이 여러개의 파일로..

[Milestone 그 이후] Docker 개념 잡기 및 Quick Start

학습시킨 딥러닝 모델을 docker를 활용한 tf서빙으로 배포하기 위해 docker에 대해 알아본 것을 정리하고자 한다. 1. Docker란 애플리케이션은 하드웨어, OS, 미들웨어 등 인프라 환경에 민감하게 반응할 때가 많다. 특히 개발 환경과 테스트 환경에서는 동작을 잘 하다가 제품 환경에서는 동작하지 않는 경우도 있다. (실제 첫번째 프로젝트때 배포때문에 너무 많은 고생을 했다. 로컬환경에서는 되는데 왜 배포환경에서는 이런 저런 에러가 발생하지?! 싶은 일들..) 도커는 이미지를 이용해, 어느 환경에서든 '이미지'안에 적힌 내용을 그대로 실행시킬 수 있다.이미지' 안에 서버 세팅에 대한 모든것을 적어놓고, 그 이미지를 실행시키면 어딜 가던 '이미지' 안에 적힌 서버셋팅 환경을 도커가 만들어준다. 이..

💊 약올림 모바일 앱 서비스 README ⏰

1. Intro 팀 명 : Medi#(Medisharp) 프로젝트 명 : Yag-Olim 배포 링크 : 배포 후 추가 예정 2. Project 💊 프로젝트 소개 🗓 약 복용 관리 서비스 '약올림'. 건강도, 편리함도 한 단계 올려보세요. 이게 무슨 약이었더라? 😅 이 약 어떻게 먹는 거였지? 😰 내가 아침에 약을 먹었던가? 😱 이제 헷갈리고 깜빡하더라도 당황하지 마세요. 100여 개의 약 정보, 내가 지정한 시간에 울리는 복용 알람, 나의 복용 현황까지 한 번에! 누구나 쉽게 이용할 수 있는 내 손 안의 약 복용 관리 서비스, 약올림 하나면 충분합니다. 오늘도 잘 챙겨먹고 있나요? 📷 쉽고 빠른 복약 정보 제공 및 관리 촬영 한 번으로 약의 정보를 찾음 공공데이터를 활용하여 복약정보를 쉽고..

[Milestone Week 4(마지막 마무리)] Push Notification/개인정보 관리/로그아웃

push notification을 구현하면서 지금까지 프로젝틀를 하면서 키운 내공들+가치들이 한꺼번에 발휘되었던 것 같다. 모든 팀원들의 책임감있는 태도에 힘이 났으며, 혼자 할 때는 막막했던 것이 HJ님과 협력하니 내가 몰랐던 부분이 채워지고, 필요한 기능이 무엇인지 정확하게 파악하고, 그 기능을 구현하기 위해 정확하고 효율적인 질문/검색을 하고, 찾은 해답을 어떻게 내 상황에 맞게 적용할 수 있었다. 그리고 추가로, 언제나 답은 '공식 문서'와 '원리 파악'에 있다는 값진 깨달음도 얻었다. 🙂 이제 앞서 [프로젝트 기획 및 준비작업] 마일스톤 정하기, UX/UI 디자인, 컴포넌트 리스트업의 에서 계획한 모든 기능구현은 마무리 되었고, 내가 한 일에 대한 회고 글도 끝이 났다. 자면서도 코딩하는 꿈을 ..

[Milestone Week 3] 복약 정보 제공 및 관리 기능

3주차 때는 2주차의 복용 일정 등록 및 관리 기능에 이어서 약올림의 또다른 핵심 서비스인 복약 정보 제공 및 관리 기능을 구현했다. 이 기능은 구현 이전부터 '약 상세 정보를 제공해주는 곳이 있나, 있으면 어디인가?' , '이 데이터를 우리 DB에 저장 할 것이냐 아니면 매번 OpenAPI로 요청할 것이냐', '어떤 정보를 제공해 줄 것인가?', 'OpenAPI를 요청하는 곳을 Client에서 할 것인가 Server에서 할 것인가?' 등에 대한 팀원간 논의가 활발하게 이루어진 부분이기도 하다. 이번에 구현했던 기능들은 기술적인 이슈나 원리를 아는 것 보다 '사례와 사용법'을 아는 것이 핵심이다. 그만큼 공식문서보다는 나보다 먼저 공공데이터, OpenAPI, xml정보의 json화를 고민했던 사람들이 기..

[Milestone Week 2] 알람 일정 CRUD 기능 구현

1. 알람 일정 등록 기능 2주차의 알람 일정, 특히 등록에 관한 기능은 약올림 서비스의 핵심 서비스 중 하나로, 카메라 촬영 또는 직접 입력으로 촬영한 이미지와 함께 알약을 등록하며 캘린더와 시간, 주기 계산 등이 모두 복합적으로 이루어져야한다. 그래서 온 팀원이 마치 한 몸인 것처럼 기능구현의 티키타카가 이루어져야했고, 실제로 그렇게 하였다! 그래서 아래와 같은 아름다운 기능이 구현 될 수 있었던 것이다. 특히 약 등록의 과정이 매우 복잡했다. 스크린 이동이 많았고, 그 스크린마다 정보(state)를 항상 가지고 이동시켜야했기 때문이다. 이 과정에서 나는 camera에 접근하여서 전방/후방카메라 선택/이미지 촬영/선택 또는 재촬영 기능과 알약 이미지를 통한 종류 예측 기능에 대해 집중하였고, HJ님이..

[Milestone Week 2] 알약 등록 기능을 위한 알약 이미지 인식 준비~배포

2주차 때는 모든 팀원이 본격적으로 알람을 등록하는 주 기능을 구현하는데 집중했다. 알람 등록시에는 버튼을 통해 위 사진과 같은 순서로 약 등록이 진행되며, 여기에 약 이미지 인식 및 분류를 위한 딥러닝 모델이 탑재된다. 앞으로 보완해야 할 점이 참 많지만, 전체 프로세스를 모두 경험해보고 실제 모바일 앱 서비스에 탑재했다는 것 자체만으로 전반적인 개념과 더 필요한 것들은 무엇인지 정리할 수 있었던 귀중한 시간이었다. 데이터가 젤 중요!!!!!!!!!!!!!!!! 이 기능을 구현하기 위해 어떤 과정을 진행했는지에 대해 적어보고자 한다. 1. Data Download & Sampling 먼저 데이터 다운로드 및 샘플링 과정이다. 우선 알약 데이터가 필요하다. 이러한 데이터를 얻을 수 있을 것 같은 여러 공..

[DeepLearning] 스마트폰으로 촬영된 알약 이미지 인식 알고리즘 개발을 위한 Reference 정리

※ 모든 내용은 reference 옆에 첨부한 원본에 있습니다. reference1. 알약 자동 인식을 위한 딥러닝 모델간 비교 및 검증 1. 필요성 약사는 이렇게 회수된 수백 종류의 알약을 재분류하는 작업을 하고 있다. 재분류 작업은 약사가 육안으로 직접 확인하여 수작 업으로 이루어진다. 이는 약사들의 노동 손실뿐만 아 니라, 분류 과정에서 실수가 발생할 가능성도 높다. 최근에는 이와 같은 문제점을 해결하기 위해 영상 처리 기술을 통해 알약 분류를 자동화하기 위한 연구 들이 다수 보고되고 있다. 2. 접근 방법 본 논문에서는 별도의 영상처리 기술을 거치 지 않고, 검출과 분류를 동시에 수행하는데 특화된 딥러닝 모델을 사용하여 알약을 자동으로 검출 및 분류하고자 하였다. 또한 YOLO, Faster R-..

[Milestone Week 1] Home, Calendar관련 API & CountTimer 구현

이번에 Full Stack 포지션을 맡게 되면서 Server와 Client의 작업을 동시 진행하였다. 프로젝트를 진행하면서 개발적인 역량을 키울 수 있었던 것도 정말 큰 성장이지만 무엇보다1. 필요한 기능이 무엇인지 정확하게 파악하고(문제 정의 능력),2. 그 기능을 구현하기 위해 정확하고 효율적인 질문/검색을 하고,3. 찾은 해답을 어떻게 내 상황에 맞게 적용하는 능력을 기를 수 있어서 정말 값진 시간이었다는 것이다. Milestone 기준 본격적인 기능구현 1주차에 Server와 Client side에서 한 일을 적어보고자 한다. 1. Server side로그인 완료 후 처음 앱에 들어가자마자 보이는 Home 페이지와 약올림 서비스의 핵심 페이지라 할 수 있는 Calendar 페이지에 필요한 API를..