Project/[약올림] Final Project 19

[Milestone 그 이후] Hosting the Docker container on Heroku for TFserving

we built deep learning model classifies pills images, and then deploy the model using TFserving with Docker. ([Milestone 그 이후] Tensorflow Model Serving) In this post, Our main focus will be on model deployment on Heroku using TFserving with Docker. Why Docker ? Because Docker containers encapsulate everything an application needs to run (and only those things), they allow applications to be shut..

[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를..