안경잡이개발자

728x90
반응형

※ 스마트 폰의 다양한 웹 브라우저 ※

 

  안드로이드 스마트 폰을 구매하면, 기본적으로 [삼성 인터넷]이 설치되어 있다. 또한 처음 스마트 폰을 실행했을 때는 삼성 인터넷이 기본 앱(브라우저)으로 설정되어 있는데, 특정한 웹 사이트에서는 [삼성 인터넷]이 정상적으로 동작하지 않을 수 있다. 그래서 구글 크롬(Chrome) 브라우저를 이용하고 싶은 경우가 있다. 참고로 다른 앱에서 브라우저를 실행할 때는, 우리가 기본 브라우저로 설정한 앱이 자동으로 실행된다. 따라서 이러한 기본 브라우저를 변경하고 싶다면 어떻게 해야 할까?

 

 

  기본 브라우저를 변경하기 위해서는 [설정] - [애플리케이션] - [기본 앱 선택] - [브라우저 앱]에 들어가면 된다.

 

 

  그러면 다음과 같이 설치된 [웹 브라우저] 중에서 자신이 [기본 앱]으로 사용할 브라우저를 선택할 수 있게 된다. 필자는 이미 크롬(Chrome)을 기본 브라우저 앱으로 사용하고 있다.

 

728x90
반응형

Comment +0

728x90
반응형

※ 본 게시글은 필자의 경험을 기반으로 작성된 글로, 잘못된 정보가 포함되어 있을 수 있습니다. ※

 

  필자에게는 예전부터 개인적으로 도움을 주었던 형이 있다. 그 형이 여자친구가 생겼는데, 수원 지역으로 놀러 간다고 해서 두 명(커플)을 위해 선물로 호텔을 예약해주었던 기억이 있다. (참고로 필자는 여자친구가 없다.) 이번 글에서는 그 후기를 정리해 보았다. 네이버에서 제공하는 [네이버 호텔] 예약 기능이 있다. 네이버에 접속한 뒤에 "네이버 호텔"을 검색한다. 원하는 지역을 선택하여 [호텔검색]을 누르면 된다. 혹은 네이버 호텔 페이지에 직접적으로 접속하자.

 

  ▶ 네이버 호텔: https://hotel.naver.com/hotels/main

 

 

  다음과 같이 호텔에 묵고자 하는 지역과 날짜를 입력한 뒤에 [호텔 검색] 버튼을 누른다. 다음과 같이 수원 지역으로 호텔을 검색할 수 있다.

 

 

  이후에 원하는 호텔을 선택한다. [코드야드 메리어트 수원] 호텔을 선택했다. 사실 유명한 호텔이 아니라면, 호텔을 고를 때 많은 조건을 볼 필요는 없는 것 같다. 일반적으로 4성급 이상이기만 하면 되고, 조식 및 주차가 가능한 곳이면 괜찮은 편인 것 같다. 별점도 8.0점 이상이기 때문에, 여기를 선택했다. 그래서 [가격 더보기] 버튼을 클릭했다.

 

 

  이제 구체적인 [유형]을 선택할 수 있는데, 아침을 포함한다면 [조식포함]을 선택하면 된다. 이후에 [프리미어 킹 룸]으로 가장 저렴한 가격으로 [예약]을 진행했다. 참고로 프리미어 킹 룸이란, 큰 크기의 침대 하나만 있는 것을 의미한다. 이때 [여행사]에서 [전체]를 선택하여 가장 저렴한 곳에서 결제하는 것을 추천한다.

 

  호텔스컴바인의 경우 [호텔직접결제] 형식을 제공하는데, 이것은 "후불 결제"를 의미한다. 만약에 미리 결제하는 것이 아니라, 호텔에 직접 방문하여 결제하고 싶다면 후불 결제를 선택하면 된다. 필자처럼 선물로 호텔을 예약해준다고 하더라도 가능하면 [후불 결제]로 해주고, 계좌로 돈을 보내주는 게 가장 좋다.

 

 

※ 객실 선택 ※

 

  이제 네이버 호텔에서 자신이 선택한 [여행사]로 넘어간다. 필자는 호텔스컴바인을 선택했기 때문에, 호텔스컴바인 웹 사이트로 넘어갔는데, 여기에서 [예약하기]를 눌러 예약했다. 필자는 2인 투숙으로 [프리미어 킹 룸]을 선택했다. 말 그대로 킹 사이즈 침대 하나가 존재하는 것을 의미한다. 보통 연인끼리 호텔에 왔을 때 많이 선택하는 옵션이다. (필자는 눈물을 흘렸다.)

 

 

※ 예약자 정보 입력 ※

 

  다음과 같이 예약자 정보를 입력하고, [다음]을 누른다. 이때 [예약 상세 정보]를 정확히 확인한다. 필자는 2인 조식, 주차장이 포함되어 있는지 다시 한번 확인했다. 또한 한국에 있는 호텔이지만 예약자 정보를 기입할 때는 "영문 이름"을 넣었다. 참고로 이름, 핸드폰 번호, 이메일 주소는 실제로 "호텔에 묵는 사람"의 정보를 기입해야 한다. 호텔 예약 선물을 해준다고 하면, 선물을 받는 사람의 정보를 넣어주도록 하자.

 

 

  아래와 같이 [선결제 예약 아님]이라는 메시지가 나오는 것을 확인할 수 있었다. 일부 호텔 예약의 경우 가격이 매우 저렴하지만, 예약 취소가 아예 불가능한 경우가 있다. 하지만 선결제를 하지 않는 경우에는 상대적으로 그런 문제가 없기 때문에 편하게 예약을 취소할 수 있다.

 

 

※ 결제 정보 입력 ※

 

  예약 상세 내용을 확인했으면, 이제 결제를 진행한다. 가장 먼저 결제 세부 사항을 확인한다.

 

 

  이어서 신용카드 정보를 입력해야 하는데, [선결제 예약 아님]이라고 해도 [예약 보장용]을 목적으로 신용카드 정보를 요구하는 경우가 있다. 아무튼 필자는 BC 카드로 결제를 진행했다.

 

 

※ 예약 완료 ※

 

  결과적으로 결제를 완료하면, 다음과 같이 호텔스컴바인에서 [예약 완료] 페이지가 나온다. 또한 자신이 예약할 때 입력했던 이메일 주소로 예약 세부내역이 도착한다.

 

 

  아래와 같이 다시 한번 요약된 예약 정보가 화면에 출력된다. 이때 [예약취소 규정]을 잘 확인하는 것이 좋다. 필자가 예약한 곳의 경우에는 체크인 하루 전 오후 11시 30분까지 예약을 취소하면 수수료가 부과되지 않지만, 그 이후에 취소하는 경우 100%의 비용을 지불해야 했다.

 

 

※ 메일로 전달 ※

 

  결제가 완료되면 이메일로는 다음과 같은 [예약 확인] 메일이 도착한다고 한다.

 

 

※ 네이버 앱 확인 ※

 

  네이버 앱을 실행하면 다음과 같이 [예약 완료] 알림이 도착한다.

 

 

※ 호텔 방문 당일 ※

 

  예약이 정상적으로 완료된 이후에 호텔에 방문할 때는, 단순히 예약자 성명(이름)만 말하면 된다. 그러면 방 번호를 알려주고, 2개의 방 출입 카드(card)를 준다. 해당 카드를 가지고 방에 들어가서 투숙하면 된다. 호텔은 기본적으로 물건이 사라지거나 했을 때 변상하는 시스템이 존재하기 때문에, 체크인을 진행할 때 삼성페이(Samsung Pay)로는 결제가 안 될 수도 있다. 그래서 별도로 체크카드 혹은 신용카드로만 결제를 요구하는 경우도 있다. 특히나 위 예약에서는 선결제를 진행하지 않았기 때문에 더욱이 그렇다. 또한 [조식 포함]으로 예약을 진행한 경우, 조식은 언제 어디에서 먹으면 되는지 미리 확인해 두면 된다.

728x90
반응형

Comment +0

728x90
반응형

※ 소개 ※

 

  최근에 다양한 딥러닝 모델의 데이터 손상(data corruption)에 대한 강건성(robustness)을 평가하는 논문이 많다. 그러한 평가를 위해서는 평가 목적의 데이터 세트(데이터 손상 데이터 세트)가 필요하다. 예를 들어 아래의 논문은 손상된(corrupted) 데이터 세트 벤치마크(benchmark)를 만드는 방법에 대해서 다루고 있다. 구체적으로 본 논문에서는 다양한 데이터 세트의 평가 데이터 세트에 손상(corruption)을 가하는 방법을 서술한다.

 

  손상된 평가 데이터 세트를 만든 뒤에는 어떻게 하면 될까? 이러한 손상된 데이터 세트에 대하여, 특정한 딥러닝 모델이 강건한지 평가하는 것이다. 즉, 이 연구 분야는 corruption에 대하여 강건한 모델을 만드는 연구 분야로 이해할 수 있다. 다시 말해, 이러한 corrupted 데이터 세트에 대해서 정확도가 높게 나오는 딥러닝 모델 학습 방법을 많은 사람들이 연구하고 있다.

 

  ▶ Benchmarking Neural Network Robustness to Common Corruptions and Perturbations (ICLR 2019)

 

Benchmarking Neural Network Robustness to Common Corruptions and Perturbations

In this paper we establish rigorous benchmarks for image classifier robustness. Our first benchmark, ImageNet-C, standardizes and expands the corruption robustness topic, while showing which classifiers are preferable in safety-critical applications. Then

arxiv.org

 

  예를 들어 본 논문에서 제안한 ImageNet-C 데이터 세트를 시각화하면 다음과 같다. 이 데이터 세트는 ImageNet의 검증(validation) 이미지에 대하여 15개의 다양한 corruption을 적용하여 만들어졌다.

 

  ▶ 노이즈(noise): Gaussian Noise, Shot Noise, Impulse Noise → 총 3개

  ▶ 흐림(blur): Defocus Blur, Frosted Glass Blur, Motion Blur, Zoom Blur → 총 4개

  ▶ 날씨(weather): Snow, Frost, Fog, Brightness → 총 4개

  ▶ 디지털(digital): Contrast, Elastic, Pixelate, JPEG → 총 4개

 

  이때 각 corruption마다 심각도(severity)를 5단계로 나누어 전체 데이터 세트를 만든다. 결과적으로 75개의 corruption 데이터 세트가 생성된다. 여기에서 중요한 점은 ImageNet-C가 아닌, 일반적인 ImageNet 데이터 세트에 대해서 학습한 모델을 ImageNet-C로 평가해야 한다. 그리고 일반적으로 그러한 모델은 이러한 corruption에 대해서 직접적으로 학습하지 않은 모델이 되어야 한다. (ImageNet-C로 학습을 하고, ImageNet-C로 평가를 하면 답지를 보고 결과를 도출하는 꼴이 되므로, 적합하지 않은 것이다.)

 

 

※ 소스코드 살펴보기 ※

 

  이러한 corruption 데이터 세트를 만드는 방법은 원본 논문의 저자가 직접 공개한 깃허브(GitHub) 저장소(repository)에서 확인할 수 있다.

 

  ▶ Common Corruptions 벤치마크 공식 깃허브: https://github.com/hendrycks/robustness

 

GitHub - hendrycks/robustness: Corruption and Perturbation Robustness (ICLR 2019)

Corruption and Perturbation Robustness (ICLR 2019) - GitHub - hendrycks/robustness: Corruption and Perturbation Robustness (ICLR 2019)

github.com

 

  해당 깃허브 저장소로 이동한 뒤에 create_c 폴더로 이동하면 다음과 같이 각 데이터 세트에 대하여 corruption 데이터 세트를 만드는 코드를 공개하고 있다.

 

 

※ ImageNet Corrupted 데이터 세트 만드는 방법 설명 ※

 

  여기에서 make_imagenet_c.py 파일을 확인해 보면 ImageNet 데이터 세트에 대하여 corrupted images를 만드는 방법이 자세히 나타난다. 전체 소스 코드를 복사하여 실행하면 되는데, 여기에서 자신의 컴퓨터 환경에 맞게 바꾸어야 하는 부분은 크게 두 가지다. 먼저 save_distorted() 함수를 확인한다. 여기에서는 ImageFolder를 이용해 원본 데이터 세트를 원하는 경로에서 불러오기한다. 아래 빨간색 박스 부분을 확인한 뒤에 변경할 필요가 있다.

 

 

  이후에 아래 사진에서 DistortImageFolder 클래스의 __getitem__() 메서드 부분을 확인하자. 본 구현에서는 단순히 데이터 로더의 데이터를 하나씩 확인하는 것만으로 corrupted image 생성 및 저장이 완료된다. 왜냐하면 __getitem__() 메서드 안에서 하나의 이미지를 불러온 뒤에 corruption method를 적용해서 save() 하는 내용을 포함하고 있기 때문이다. 따라서 이 부분에서도 자신이 원하는 경로(save_path)가 들어갈 수 있도록 수정할 필요가 있다.

 

 

※ 참고 사항 ※

 

  필자는 make_imagenet_c.py 소스 코드를 일부 수정하여, 현재 필자가 가지고 있는 특정한 이미지 데이터 세트에 적용해 보았다. 쉽게 말해, 나만의 데이터 세트가 존재하는 상황에서 custom corrupted dataset을 생성하기 위한 목적으로 해당 코드를 사용한 것이다. 이러한 과정에서 다음과 같은 것들을 알게 되었다.

 

  1) 일부 메서드는 이미지가 해상도 224 X 224 크기로 고정된다. → 필자가 가지고 있는 이미지 데이터는 224 X 224 크기가 아니라는 점에서, 이러한 메서드에 의하여 오류가 발생했다.

  2) 날씨와 관련한 일부 메서드는 오류가 발생하며 정상적으로 동작하지 않을 수 있다. → 구체적인 이유를 확인해 볼 필요가 있을 것 같다.

728x90
반응형

Comment +1

728x90
반응형

  필자는 AI 허브(AI Hub)에서 이것저것 다양한 데이터 세트를 둘러보고 있다. 참고로 AI 허브(AI Hub)는 AI 기술 및 서비스를 개발하기 위해 필요한 AI 데이터를 제공하는 사이트로 유명하다. 특히 한국 제품에 최적화된 다양한 데이터가 존재한다는 장점이 있다. 

 

  ▶ 웹 사이트 링크https://www.aihub.or.kr/

 

AI-Hub

AI 허브 데이터 검색 추천검색어

www.aihub.or.kr

 

※ 페르소나 기반의 가상 인물 몽타주 데이터 세트 다운로드 방법 ※

 

  필자는 AI 허브(AI Hub)의 다양한 데이터 세트를 둘러보다가, 재미있는 데이터 세트가 보여서 확인해 보았다. 바로 "페르소나 기반의 가상 인물 몽타주" 데이터 세트인데, 이것을 확인하고 [다운로드]를 진행했다.

 

 

  다음과 같이 원하는 데이터를 선택하여 [선택 다운로드]를 진행하면 된다.

 

 

  다운로드가 진행되는 모습은 다음과 같다. 필자의 경우 다운로드가 굉장히 빠르게 이루어졌다.

 

 

  다운로드가 완료되면, 다음과 같이 약 4GB 정도의 레이블링이 존재하는 데이터 세트가 존재하는 것을 확인할 수 있다.

 

 

※ 페르소나 기반의 가상 인물 몽타주 데이터 세트 소개 ※

 

  가상 인물 몽타주 데이터 세트에 포함된 이미지 데이터를 요약하면 다음과 같다.

 

  - 한국인 가상인물 얼굴 이미지 약 10,000장
  - 가상인물 육안 관찰 인물 스케치 약 10,000장
  - 설명문을 보고 그린 몽타주 스케치(상) 약 10,000장
  - 설명문을 보고 그린 몽타주 스케치(중) 약 10,000장
  - 설명문을 보고 그린 몽타주 스케치(하) 약 10,000장

  특히 "설명문"이 포함되어 있으므로, 데이터가 (텍스트, 이미지) 형태로 구성된다는 점이 강력한 장점이다. 따라서 다양한 딥러닝 모델을 만들 수 있다. 그 예시는 다음과 같다.

  1. 시각장애인을 위해 이미지를 주었을 때, 이것을 텍스트로 표현하는 모델 (Show an Tell 논문 등)
  2. 몽타주 작업을 위해 텍스트를 주었을 때, 이것을 이미지로 표현하는 모델 (DALL-E와 같은 text-to-image generation 기법 등)

 

  참고로 본 학습 데이터를 설명해주는 교육 동영상을 유튜브에서 확인할 수 있다.

 

  ▶ 학습 데이터 설명 영상: https://www.youtube.com/watch?v=x7x14unFOTY 

 

  실제로 학습 데이터를 확인해 보면 다음과 같다. 학습 데이터에는 약 8,000명의 사람 얼굴에 대해서 사진이 1장씩 있는 것으로 이해하면 된다. 데이터 세트의 전체 폴더 구성은 다음과 같다.

 

  ▶ montage: 가상 얼굴 이미지

  ▶ org_sketch: 가상 얼굴을 육안으로 보고 그린 이미지 (일종의 ground-truth 정답 스케치 이미지로 볼 수 있다.)

  ▶ sketch: 설명문만 보고 그린 스케치 이미지 (얼굴을 모르기 때문에, ground-truth와 거리가 있다.)

    /H: 상(제일 디테일하게 열심히 그린 그림)

    /M: 중

    /L: 하(제일 간단히 그린 그림)

 

728x90
반응형

Comment +0

728x90
반응형

※ 개요 ※

 

  최근에 필자는 남는 시간에 캐글(Kaggle)에서 열린 하나의 대회에 참가했다. 본 대회의 제목은 UW-Madison GI Tract Segmentation (UW-Madison 소화계 분할) 대회다. 참고로 "위스콘신 대학교 매디슨"은 미국의 명문 주립대학교 중 하나인데, 분할(segmentation) 분야의 대회를 하나 개최한 것으로 보인다.

 

  ▶ 대회 링크: https://www.kaggle.com/competitions/uw-madison-gi-tract-image-segmentation

 

 

  문제 설명: MRI 스캔 데이터가 주어졌을 때, "위"와 "내장"을 자동으로 분할(segmentation)하는 문제다.

  목표: 예를 들어 방사선 치료를 할 때, 우리가 종양의 위치를 정확하게 알 수 있다면 방사선(radiation)이 위를 피하고 종양만을 제거하도록 할 수 있다.

 

  참고로 시맨틱 분할(semantic segmentation) 분야는 한 장의 이미지 내에 있는 각 물체(object)를 의미 있는(semantic) 단위로 분할(segmentation)하는 작업을 의미한다. 분할(segmentation) 문제에서는 각 픽셀마다 하나의 클래스로 분류한다.

 

https://www.jeremyjordan.me/semantic-segmentation/

 

※ 참고 사항 ※

 

  - 한 팀의 최대 팀원 수는 5명이다.

  - 하루에 5개까지 예측 결과를 제출(submission)할 수 있다.
  - 최대 2개의 최종 제출물을 선택할 수 있다.
  - 부정행위 금지: 다른 팀으로부터 코드를 전달 받아 제출할 수 없다.
  - 포럼(forum)의 모든 참가자가 사용할 수 있다면, 자신의 코드를 공유해도 된다.

 

※ 코드 요구사항 ※

 

  코드 요구사항을 살펴 보면 다음과 같은 내용이 있는 것을 확인할 수 있다.

 

  1. 커밋(Commit) 이후에 [Submit] 버튼을 눌러서 실질적으로 제출물(submission)을 제출할 수 있다.

  2. GPU 노트북(notebook)은 실행 시간(run-time)이 9시간 이내여야 한다. 

  3. 사전 학습된(pre-trained) 모델을 포함하여 무료 외부 데이터를 사용할 수 있다.

  4. 제출물 파일의 이름은 "submission.csv"다.

 

 

※ 대회 시작하기 ※

 

  - 캐글(Kaggle)에서는 13GB RAM을 갖는 GPU를 무료로 지원하며, 1주일에 30시간을 사용할 수 있다. → 따라서 일반적인 경우, 대회 데이터 세트의 크기가 크기 때문에, 본인의 개인적인 GPU 개발 환경에서 학습을 진행하는 경우가 많다.
  - 캐글(Kaggle) 대회에서는 다른 사람들이 다양한 소스 코드를 제공하곤 한다. 필자는 개인적으로 [Code] 탭에서 높은 투표(voting)를 받은 노트북(notebook) 파일 위주로 실행하여 공부하는 방식을 추천한다. 간단하게 [Most Votes]를 선택하여 가장 많은 추천을 받은 코드를 확인할 수 있다.

  - 예를 들어 본 대회에서는 아래와 같이 “UWMGI: 2.5D [Train] [PyTorch]”를 가장 기본적인 코드로 참고할 수 있다.

 

 

※ 데이터 살펴보기 ※

 

  - 본 대회에서 제공하는 이미지는 16-bit 회색(grayscale) PNG 파일이다.

  - 기본적으로 본 대회는 multi-label segmentation 문제에 해당한다. 왜냐하면 인간의 몸은 3D 사물이므로, 2D 이미지상에서는 이론적으로 각 장기가 서로 겹칠 수 있기 때문이다.

  - 케이스(case): 한 명의 환자를 촬영한 것을 말한다. 말 그대로 환자 한 명의 사례(case)를 추적한 것이다. (날짜마다 스캔 촬영을 진행할 수 있다.)

  - 스캔(scan) slices의 집합은 날짜별로 구분되며, 한 번의 스캔(scan)을 진행할 때는 여러 이미지가 결과로 나온다.

  - train.csv는 세 가지 정보로 구성된다.

    1) id: 이미지 파일이다. “276_276_1.63_1.63.png” → (276 X 276) 해상도, 픽셀별 물리적 크기: (63 X 63)

    2) class: 대장(large bowel), 소장(small bowel), 위(stomach) 중 하나에 해당한다.

    3) segmentation: 사진 내에서 위치를 기록한다. 참고로 이러한 정보는 텍스트로 기록되어 있으므로, 이를 토대로 정답 마스크(mask) 이미지를 생성하여 정답 데이터로 사용하는 경우가 많다.

 

※ 대회 데이터 세트 다운로드 ※

 

  일단 대회에 참여하기 위해서는 데이터 세트를 다운로드할 필요가 있다. 기본적으로 캐글(Kaggle)에 업로드되어 있는 데이터를 다운로드할 때는 PIP를 이용하여 캐글(Kaggle) 패키지를 설치할 필요가 있다.

 

pip install kaggle --upgrade

 

  이후에 캐글(Kaggle)에 접속한 상태에서 [Account] 페이지로 접속하여 [Create New API Token] 버튼을 눌러 토큰을 생성하자. 그러면 kaggle.json 파일이 다운로드 완료된다. 이것을 리눅스 /home/{username}/.kaggle 폴더 안에 kaggle.json 파일을 넣으면 된다.

 

 

  이제 대회의 공식 데이터 세트를 다운로드하기 위하여 다음과 같은 명령어를 입력한다. 필자는 별도의 디스크에 다운로드를 받았고, uw-madison-gi-tract-image-segmentation.zip라는 이름으로 다운로드가 완료되었다.

 

kaggle competitions download -c uw-madison-gi-tract-image-segmentation

 

  이후에 간단히 다음의 명령어를 이용해 "uw-madison-gi-tract-image-segmentation"이라는 폴더 안에 압축을 해제했다.

 

unzip uw-madison-gi-tract-image-segmentation.zip -d ./uw-madison-gi-tract-image-segmentation

 

결과적으로 다음과 같이 폴더가 구성된 것을 확인할 수 있다.

 

/uw-madison-gi-tract-image-segmentation
  /train
  train.csv
  sample_submission.csv

 

※ 코드 예시 살펴보기 ※

 

  앞서 설명했듯이 처음에 대회를 시작할 때는 다른 사람이 미리 작성해 놓은 코드를 참고하면 좋다. 필자는 "UWMGI: 2.5D [Train] [PyTorch]" 코드를 참고했다. 이 코드는 해당 코드의 저자가 미리 생성해 놓은 별도의 두 가지 데이터 세트가 있어야 사용이 가능하다. 따라서 다음과 같이 두 개의 데이터 세트를 먼저 다운로드 할 필요가 있다.

 

  1) uwmgi-mask-dataset 데이터 세트

 

  ▶ 소스 코드 예시https://www.kaggle.com/code/awsaf49/uwmgi-mask-data

 

  이 데이터 세트는 마스크(mask) 이미지를 담고 있는 데이터 세트다. U-Net과 네트워크와 같이 일반적으로 segmentation 목적으로 설계된 딥러닝 모델을 학습할 때는 출력(정답) 데이터는 마스크(mask) 이미지 형태가 되어야 한다.   데이터 세트는 다음의 명령어를 이용해 다운로드할 수 있다.

 

kaggle datasets download -d awsaf49/uwmgi-mask-dataset

 

  2) uwmgi-25d-stride2-dataset 데이터 세트

 

  ▶ 소스 코드 예시https://www.kaggle.com/code/awsaf49/uwmgi-2-5d-stride-2-data

 

  기본적으로 환자를 한 번 스캔(scan)할 때는 여러 개의 얇은 슬라이스(slice) 단위로 촬영이 이루어진다. 이때, 이러한 슬라이스 여러 개를 하나로 묶어서 RGB 채널(channel)을 형성하는 것처럼 입력 데이터를 구성할 수 있다. 이는 일종의 특정한 두께의 공간적인 정보를 반영하는 것으로 이해할 수 있기 때문에 2.5D 데이터 세트라고도 부른다.

 

  정리하자면 다음과 같다.

 

  ▶ 2.5D 이미지란? 흑백 의료 이미지를 segmentation할 때 자주 사용하는 입력 형식
  ▶ 기본적으로 2.5D 데이터 구축을 위해 3 channels 및 2 strides를 사용
  ▶ 만약 3 channel이 안 나오는 데이터가 있다면, padding을 사용하여 channel을 늘려서 적용

 

  만약에 스트라이드(stride)를 2로 설정하면 slice를 한 칸씩 생략하면서 합친다. 예를 들어 {slice 0, slice 1, slice 2, slice 3, slice 4, slice 5, slice 6, slice 7, ...} 형태로 여러 조각의 이미지가 있다면, 간단하게 slice 0, slice 2, slice 4 형태로 세 개씩 합쳐서 3채널(channel)의 입력 데이터로 만드는 방식이다.

 

  데이터 세트는 다음의 명령어를 이용해 다운로드할 수 있다.

 

kaggle datasets download -d awsaf49/uwmgi-25d-stride2-dataset

 

  현재 코드 예시에서 네트워크는 U-Net에 기반하는 구조를 기본적으로 사용한다. 2022년을 기준으로 보았을 때 현재까지 분할(segmentation) 분야의 대표적인 네트워크 아키텍처는 여전히 U-Net (MICCAI 2015)에 기반하고 있다.

 

 

※ 학습 코드 바꾸어 보기 ※

 

  우리가 기본적인 코드를 이용해 학습을 진행할 때는 가장 먼저 "네트워크 아키텍처"부터 변경해 보는 게 좋다. 기본적인 코드에서 제공되고 있는 설정(configuration) 데이터는 다음과 같다.

 

class CFG:
    seed          = 101
    debug         = False # set debug=False for Full Training
    exp_name      = '2.5D'
    comment       = 'unet-efficientnet_b0-160x192-ep=5'
    model_name    = 'Unet'
    backbone      = 'efficientnet-b0'
    train_bs      = 64
    valid_bs      = train_bs*2
    img_size      = [160, 192]
    epochs        = 5
    lr            = 2e-3
    scheduler     = 'CosineAnnealingLR'
    min_lr        = 1e-6
    T_max         = int(30000 / train_bs * epochs) + 50
    T_0           = 25
    warmup_epochs = 0
    wd            = 1e-6
    n_accumulate  = max(1, 32 // train_bs)
    n_fold        = 5
    folds         = [0]
    num_classes   = 3
    device        = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

 

  기본적인 코드는 EfficientNet_b0으로 제공되고 있으므로, 이를 EfficientNet_b3 등으로 변경하여 사용할 수 있다. 필자는 ① 간단히 기존 코드에서 epoch 수를 증가시킨 뒤에, ② 인코더 네트워크 아키텍처로 {EfficientNet_b0, EfficientNet_b3, EfficientNet_b5, resnext50_32x4d} 등을 사용해 보는 방식을 사용해 보았다.

 

  이를 위해서 캐글(Kaggle) 노트북으로 작성된 코드를 자신의 서버로 전부 옮겨서 reproducing하면 된다.

 

※ 논의(Discussion) 탭 확인하기 ※

 

  캐글(Kaggle) 대회에 참여할 때는 다른 사람들이 작성해 놓은 [논의(discussion)] 탭의 글들을 확인하여 읽어 보는 것을 추천한다.

 

 

  ▶ 링크: https://www.kaggle.com/competitions/uw-madison-gi-tract-image-segmentation/discussion

 

  본 링크에서는 대회에 참여하고 있는 사람들의 다양한 의견을 확인할 수 있다. 간단하게 확인해 볼 수 있는 내용으로는 다음과 같은 것들이 있다.

 

  1) 앙상블(ensemble)을 쓰거나 큰 크기의 모델을 사용하는 경우 시간 초과(time limit) 문제가 발생할 수 있다.

  2) 기본적으로 epoch, optimizer, learning rate, loss를 다양하게 변경해 보며 하이퍼 파라미터 튜닝을 해보는 것이 첫 번째다.

  3) EfficientNet 말고도 다양한 인코더 네트워크를 사용해 볼 수 있다.

  4) 다른 seed를 사용해 학습할 때마다 모델의 가중치(weight)가 다양하게 형성될 수 있다. 즉, 모델 및 학습 방법이 거의 동일하다고 해도 

  5) 데이터의 채널(channel)을 키울수록 Hausdorff는 올라가고, Dice는 떨어진다는 관찰이 나온다고 한다. 반면에 일반적인 2.5D 접근(3채널)에서는 Dice score가 높게 형성된다고 한다.

  6) 검증(validation) 과정에서 Dice score가 0.97 정도가 나와야 실제 테스트(test)에서 0.86 정도의 점수가 간신히 나온다고 한다.

  7) 생각보다 인코더는 EfficientNet B0으로도 충분히 좋은 성능이 나오는 것을 확인할 수 있다. B1~B7을 사용할 수는 있지만 크게 이점이 없는 편이다.

 

※ 제출(Submission) 방법 ※

 

  코드를 제출할 때는 추론(inference) 전용 코드를 제출하면 된다. 이때는 마찬가지로 동일한 코드 작성자가 올려 놓은 [UWMGI: 2.5D [Infer] [PyTorch] 코드를 참고할 수 있다. 기본적으로 본 대회에서는 ① Hausdorff distance 및 ② Dice score를 기준으로 평가한다.

 

  해당 파일은 단순히 캐글 노트북(Kaggle notebook) 파일이다. 본 대회는 [코드 제출 방식]이라서 커밋(commit)을 통해 자신이 작성한 코드가 제출되고, 캐글 서버에서 실행된다. 구체적으로 노트북 파일의 오른쪽 위에 있는 [Save Version] 버튼을 누른 뒤에 [Save]를 누르면 실제로 코드가 돌아간 뒤에 submission.csv 파일이 생성된다.

 

 

  다만, 실제로는 우리가 직접 학습한 모델을 이용하여 추론 코드를 돌려야 한다. 따라서 [Add data] 버튼을 눌러서 직접 데이터를 [Upload]한다. 그리고 학습된 모델 파일(.bin 형식)을 업로드한 뒤에 [Create]을 눌러서 Private 데이터를 생성하면 된다.

 

 

  이후에 데이터가 처리되고 있다는 메시지가 출력된다.

 

 

  이제 다시 [Add data] 버튼을 눌러서 개인(private) 데이터가 추가 된 것을 확인할 수 있다.

 

 

  제출하기 전에는 일단 캐글(Kaggle) 노트북 환경에서 간단히 코드를 실행해 본 뒤에 실질적으로 [Submit]을 진행하는 것이 좋다. 만약에 간단히 기존 아키텍처를 EfficientNet B5로 변경했다면 다음과 같이 백본(backbone) 네트워크를 "efficientnet-b5"로 변경해주면 된다.

 

 

  또한 다음과 같이 private data 경로를 기입해 줄 수 있도록 한다.

 

 

  다만, 이때 학습할 때 사용했던 장치(device)의 번호가 다르다면, 다음과 같이 map_location 속성을 이용해 어떠한 장치(device)에서 실행한 것인지 명시하면 된다. 캐글(Kaggle) 노트북에서는 기본적으로 "cuda:0"를 사용한다.

 

model.load_state_dict(torch.load(path, map_location=CFG.device))

 

※ 최종 제출 ※

 

  결과적으로 [Save] 버튼을 눌러서 전체 코드가 실행이 되었다면, [실행 결과]를 확인할 수 있다. 다음과 같이 [링크]를 클릭할 수 있다.

 

 

  링크 내용을 확인한 뒤에 [Data] 탭으로 이동하면, 출력(output) 결과물로 "submission.csv" 파일이 생성된 것을 확인할 수 있다. 최종적으로 [Submit] 버튼을 누르면 결과물이 제출된다.

 

 

  결과적으로 다음과 같이 [submission.csv] 파일을 제출하면 된다. 이후에 설명(description)을 작성한 뒤에 최종적으로 [제출(Submit)]을 진행한다. 필자는 사용한 네트워크 아키텍처를 기입했다.

 

 

  제출 이후에는 [View My Submissions] 버튼을 눌러 제출 결과를 확인할 수 있다.

 

 

  다음과 같이 [Notebook Running] 상태인 것을 확인할 수 있고, 약간의 시간이 흐른 뒤에 Public Score가 나오는 것을 알 수 있다.

 

 

※ 시도해 본 방법들 ※

 

  1) Epoch 늘리기

 

  필자는 가장 먼저 EfficientNet_B0 모델을 그대로 사용하여 epoch을 30으로 변경하여 학습을 진행했다. 그랬더니 다음과 같이 Valid Dice가 0.9479까지 나오는 것을 확인할 수 있었다. 학습을 오래했더니 과적합(overfitting)이 발생하지는 않고, 계속해서 조금씩 결과가 좋아지는 것이다. 이는 데이터의 개수가 많기 때문인 것 같다. 참고로 단순히 Epoch 5까지만 학습을 진행하면, Valid Dice가 0.92XX 수준에 그치게 된다.

 

 

  2) 5-Folds 학습 방식

 

  5-Fold는 말 그대로 5번을 접는다는 의미를 가진다. 접근할 수 있는 전체 학습 데이터 세트가 있을 때, 이것을 K개로 나눈다. 그러면 1 / K는 검증(validation) 데이터 세트로 사용하는 것이다. 즉, 한 번 학습할 때 (K - 1) / K는 학습 데이터, 1 / K는 검증을 위한 목적으로 사용한다. 실제로 대회에서는 5-Fold로 학습한 뒤에, 해당 모델들을 앙상블(ensemble)하여 최종 결과를 구하는 방식을 많이 사용한다.

 

  따라서 필자는 최종적으로 EfficientNet B0 모델에 대하여 반복 횟수(epoch) 30 설정으로 fold 1부터 5까지 전부 학습을 진행했다. 그리고 앙상블(ensemble)을 진행했다. 기본적으로 사용할 수 있는 [UWMGI: 2.5D [Infer] [PyTorch] 코드에서는 model_paths에 여러 개의 모델(model)이 입력되면, 해당 모델을 모두 사용하여 앙상블한 결과를 내보낸다. 실제 코드를 살펴 보면 다음과 같은 것을 확인할 수 있다.

 

 

  따라서 최종적으로 private data를 구성할 때는 다음과 같이 각 폴드(fold)에 대해서 학습이 완료된 5개의 모델(model) 파일이 들어가도록 하고, 기존 코드를 그대로 실행하면 정상적으로 동작한다.

 

best_epoch-00.bin
best_epoch-01.bin
best_epoch-02.bin
best_epoch-03.bin
best_epoch-04.bin

 

 

728x90
반응형

Comment +0

728x90
반응형

※ 이 글은 필자가 개인적으로 정리한 글이기 때문에, 잘못된 정보가 포함되어 있을 수 있습니다. ※

 

※ 개요 ※

 

  인공지능을 공부하거나 연구하는 사람이라면, 모두 데이터 세트의 중요성을 잘 알고 있다. 예를 들어 한국인 대상으로 하는 인공지능 프로그램을 만들고 싶을 때, 해외에서 제공되는 데이터 세트만 사용할 수 있다면, 만들 수 있는 제품에 한계가 있다.

 

  예를 들어 얼굴 이미지를 생성하는 GAN 모델을 학습하고 싶을 때를 생각해 보자. 사실 FFHQ와 CelebA와 같은 유명 얼굴 데이터 세트는 대체로 서양인 얼굴로 구성되어 있다. 그래서 이런 데이터 세트로 학습된 GAN 모델은 한국인을 대상으로 하는 서비스에 적합하지 않을 수 있다.

 

  필자는 최근에 딥러닝 프로젝트 멘토링을 진행하기 위하여 한국인 안면 이미지 데이터 세트를 분석해야 하는 상황이었다. 찾아보니까, AI 허브(AI Hub)에서 그러한 데이터 세트를 제공한다는 것을 알게 되었다.

 

※ AI 허브(AI Hub) 소개 ※

 

  AI 허브(AI Hub)는 AI 기술 및 서비스를 개발하기 위해 필요한 AI 데이터를 제공하는 사이트로 유명하다. 특히 한국 제품에 최적화된 다양한 데이터가 존재한다는 장점이 있다. 구체적으로 "영상/이미지", "한국어", "헬스케어" 등 다양한 분류의 AI 학습용 데이터를 다수 제공한다.

 

  ▶ 웹 사이트 링크: https://www.aihub.or.kr/

 

AI-Hub

AI 허브 데이터 검색 추천검색어

www.aihub.or.kr

 

※ 회원가입 및 로그인 ※

 

  AI 허브의 데이터 세트를 다운로드하기 위해서는, 먼저 회원가입 및 로그인을 진행해야 한다. 웹사이트 접속 이후에 [회원가입] 페이지로 이동한다. 그러면, 다음과 같이 회원가입 페이지가 나오는데, 필자는 [일반회원]에 해당하므로, [일반회원]을 선택했다.

 

 

  이후에 약관에 동의하면 된다. 필자는 회원 유형으로 [개인]을 선택했다. 이때 [이메일 주소]를 아이디로 사용하면 된다. 이를 위해 이메일 인증이 먼저 필요하다. 결과적으로 휴대전화 인증까지 모두 마쳤을 때 비로소 [데이터 이용신청]을 할 수 있다.

 

 

  결과적으로 다음과 같이 회원가입이 완료되었다.

 

 

  이제 로그인을 진행한 뒤에 가볍게 찾아볼 수 있다.

 

※ AI 허브 데이터 검색하기 ※

 

  앞서 언급했듯이 AI 허브에 접속하면 영상(이미지), 헬스케어 등 굉장히 많은 종류의 데이터 세트를 확인할 수 있다. 내가 원하는 데이터가 있다면 검색창에 입력하면 된다. 예를 들어 딥페이크 판독 데이터 세트를 찾고자 한다면, "딥페이크"라고 검색할 수 있다.

 

 

  이후에 다음과 같이 [데이터셋] 탭으로 이동하여 데이터 세트를 확인할 수 있다.

 

 

※ 딥페이크 변조영상 데이터 세트 예시 ※

 

  예시로 딥페이크 변조영상 데이터 세트를 확인해 보면, 데이터 세트 안에 얼마나 많은 이미지(동영상)가 존재하는지 확인할 수 있다. 해상도 또한 고해상도(1920 X 1080)인 것을 확인할 수 있다.

 

 

※ 데이터 세트 다운로드 ※

 

  AI 허브에서 데이터 세트를 다운로드할 때는 [다운로드] 버튼을 누르면 된다.

 

 

  이후에 다음과 같이 [신청목적]을 확인한 뒤에, 약관을 잘 확인하고 체크하자. 그리고 [다운로드]를 진행하면 된다. 필자는 개인 연구 및 공부 목적으로 신청했다. 약관을 확인해 보면, 본 AI 데이터를 이용할 때는 "한국지능정보사회진흥원"의 사업결과임을 밝혀야 한다고 한다. 다시 말해 특히나 사업 목적으로 AI 허브의 데이터 세트를 사용하고자 한다면, 이러한 약관을 정확히 읽어 볼 필요가 있다.

 

 

  [다운로드]를 누르게 되면, [자동승인]이 된다. 그래서 곧바로 데이터 세트를 다운로드할 수 있다.

 

 

  데이터를 다운로드하기 위해서는 [데이터 다운로드 프로그램]을 설치해야 한다.

 

 

  결과적으로 다음과 같이 구체적으로 원하는 데이터만 선택하여 [선택 다운로드]를 진행할 수도 있다.

 

 

※ 다양한 한국 데이터 세트 검색하기 ※

 

  AI 허브(AI Hub)에는 다양한 "한국" 관련 데이터 세트가 있다. 예를 들어 "한국인"이라고 검색을 해보면, 다음과 같은 내용을 확인할 수 있다. 필자는 "페르소나 기반의 가상 인물 몽타주" 데이터를 확인할 수 있었다. 정말 흥미로운 데이터 세트였다. 이걸 활용하면 텍스트에서 이미지를 생성(generation)하는 등의 네트워크 학습이 가능할 것으로 보인다.

 

 

※ 저작권 관련 ※

 

  AI 허브(AI Hub)의 데이터 세트를 사용할 때, 가장 우려가 되는 부분은 아마도 저작권(copyright) 문제일 것이다. 이것과 관련해서는 [문의하기] 페이지로 이동하여 다른 사람들이 문의했던 내용을 간단히 확인해 보면 된다. 필자가 찾아봤을 때의 일자를 기준으로 정리하자면, 다음과 같다.

 

  1) 예외도 있긴 하지만, AI 허브(AI Hub)에서 제공하는 대부분의 데이터 세트의 경우, 데이터 세트를 사용하여 학습된 모델을 상업적으로 이용하는 것은 가능하다.

  2) 하지만, 데이터를 재판매하는 경우 문제가 된다. 구체적으로 데이터 세트를 그대로 또는 재가공해서 이익 창출을 하면 안 된다는 의미이다.

  3) 상업적인 목적을 포함하여, 다양한 목적으로 만들어진 모델을 배포할 때는(논문, 제품, 서비스 등에서 활용) AI 허브의 제공데이터를 기반으로 학습된 모델이라고 명시해주어야 한다.

 

728x90
반응형

Comment +0

728x90
반응형

※ 본 게시글은 필자가 개인적으로 공부하면서 정리한 글이므로, 잘못된 정보를 포함할 수 있습니다. ※

 

  시장의 상황에 따라서 기준 금리는 변하게 된다. 기준 금리가 바뀔 때는 사람들의 투자 방식 또한 바뀌는 경우가 많다. 예를 들어 금리 인상으로 인하여 부동산 및 주식 시장이 좋지 않을 때는, 예금 및 채권에 투자하는 사람들이 많아진다. 그래서인지 최근에는 많은 사람들이 이자율이 높은 예금, 적금, 채권에 관심을 가지고 있다.  따라서 이번 포스팅에서는 ① 정기예금② 채권에 대해서 알아보도록 하자.

 

※ 정기 예금 ※

 

  정기예금이란, 은행에 일정한 기간(1년 등) 동안 돈을 넣은 뒤에 일정 기간이 지난 뒤에 돈을 찾는 예금 방식이다. 쉽게 말하면, 내 돈을 은행에 특정 기간 빌려준 뒤에 이자를 받는다고 이해할 수 있다. 정기예금은 대표적인 안전자산으로, 금리가 높을 때 많은 사람들이 선택하는 투자처이기도 하다.

 

  정기예금을 들고 싶을 때는 다음과 같이 네이버에 "정기예금"을 검색하면 된다. 그러면 다양한 예금 상품이 등장한다. 이때 [최고금리순], [기간] 등의 조건을 설정해서 자신이 원하는 상품을 확인하자. 이때 "기본 금리"에 유의해서 확인하자. 필자가 글을 작성할 시점에는 기본 예금 금리가 3.70%가 나오는 것을 확인할 수 있다.

 

 

  예를 들어 우리종합금융[하이 정기예금3] 상품을 확인하면 다음과 같다.

 

 

※ 중소기업금융채권(중금채) ※

 

  종종 기업은행을 주거래 은행으로 사용하는 사람들을 찾아볼 수 있다. 흔히 말하는 기업은행의 정식 명칭은 IBK 기업은행이다. 이때 IBK 기업은행은 "중소기업은행"이라고도 한다.

 

  IBK 기업은행에서는 중금채라는 금융 상품을 제공한다. 중금채란, 중소기업에 대한 투자 목적으로 발행하는 [채권]을 의미한다. 중금채는 기본적으로 예금자 보호(예금자 1인당 최고 5천만 원까지 보호하는 제도)를 지원하지는 않지만, 정부가 지급을 보증하는 것으로 알려져 있다.

 

  이때 기업 채권이란, 대중 및 투자자에게 장기적인 자금을 조달하기 위해 발행하는 차용 증서를 의미한다. 쉽게 말하면, 기업이 돈을 빌린 뒤에 언제 원금과 이자를 줄 것인지를 명시한 문서를 의미한다. 기본적으로 (채권을 발행하는) 기업의 신용등급이 낮으면, 채권 금리가 높아진다.

 

  일반적으로 주식에 비하면 채권은 안정적인 편이라서, 시장의 변동성이 큰 불안정한 시기일 때 많은 사람들이 투자하는 편이다. 채권을 주식과 비교했을 때, 주식에 비해서 경영권(주주로서의)은 없지만, 만기가 있고 "이자 수익"을 낼 수 있다. 또한 일반적으로 "정기예금"만큼 안전한 상품으로 알려져 있다. 그래서 정기예금보다 중금채의 이자율이 더 높다면, 그냥 중금채를 드는 경우가 많다.

  사실 중금채의 장점은 "많은 돈을 넣을 수 있다"는 것이다. 뉴스를 보면 금리가 매우 높은(8% 이상) 12개월 적금 상품이 등장했다는 내용을 쉽게 찾아볼 수 있는데, 최고로 넣을 수 있는 금액이 제한적인 경우가 많다. 적금에 최대 100만 원만 넣을 수 있다면, 만기가 되어봤자 수익 자체가 적다. 반면에 중금채 투자는 많은 돈을 넣을 수 있기 때문에, 부동산이나 주식에서 뺀 돈을 묵혀두기에 적합하다.

 

  실제로 중금채는 정기예금과 유사한 속성을 가지고 있어서, 그냥 네이버에 "정기예금"이라고 검색하면 중금채 상품이 나오는 것을 확인할 수 있다.

 

 

※ IBK 기업은행 계좌 개설 방법(비대면 온라인) ※

 

  필자는 간단히 중금채에 가입하고자 한다. 그렇다면 일단 IBK 기업은행에 계좌가 있어야 한다. 필자는 귀찮기 때문에 실제로 은행에 방문하지 않고, 모든 것을 비대면(온라인)으로 끝냈다. (심지어 요즘에는 비대면이 금리 우대가 적용되는 경우가 많다. 물론, 대포 통장 내역 등이 있는 사람이라면 당연히 계좌 개설이 제한이 있을 수 있다.) i-One 뱅크(기업은행 모바일 뱅킹) 앱을 설치한 뒤에, 회원 인증을 진행한다. 필자의 경우 간단히 휴대폰 인증을 통해 모바일 뱅킹을 실행했다. 이후에 [입출금통장 + 스마트 뱅킹]으로 계좌를 만들었다.

 

 

  준비물은 [신분증][입출식 계좌번호]다. 신분증을 촬영한 뒤에는 [고객정보]를 입력하여 계좌를 개설하면 된다. 주소, 연락처, 직업 등의 정보를 기입해야 한다. 이후에 계좌인증을 진행한다. 다른 은행에서 만들어 놓은 계좌를 입력하면 된다. 필자는 기존에 가지고 있던 농협 계좌를 입력했다. 해당 농협 계좌로 들어오는 돈을 확인하여 인증을 진행하면 된다.

 

 

  이후에 입출금통장을 만들면 된다. 이메일 주소를 확인한 뒤에, [계좌 개설]을 진행한다. 이때 자신이 IBK 기업은행에서 사용할 [계좌 비밀번호]를 설정하면 된다. 또한 ATM 출긍방법을 설정한다.

 

 

  이어서 계좌관리지점 및 직원을 설정할 수도 있다. 결과적으로 다음과 같이 계좌가 개설된다. 참고로 처음 계좌를 생성하면 이체 한도가 존재하는, 한도계좌로 개설된다. (참고로 한도 제한을 해제하기 위해서는 별도의 과정이 필요하다.)

 

 

  이후에 스마트뱅킹에 가입하면 된다.

 

 

  이후에 [모바일 인증서]도 발급한다. 필자는 비밀번호 6자리패턴 인식을 이용했다. 결과적으로 로그인할 수 있게 된다. 최종적으로 계좌 개설이 완료된 것이다.

 

 

※ IBK 기업은행 중금채 가입 방법 ※

 

  이제 중금채에 가입해 보겠다. 가장 먼저 [상품몰]에 접속한 뒤에 [예금/중금채]를 확인한다. 필자는 제일 위에 있는 [IBK D-Day통장(단기중금채)]를 선택했다.

 

 

  바로 중금채 가입 버튼을 눌렀고, 약관에 동의하여 [상품가입]을 진행했다.

 

 

  이후에 D-day를 설정했다. D-day는 D-364일까지 설정할 수 있었다. 이후에 가입금액을 설정한다. 이후에 자기가 가지고 있는 출금계좌를 설정한다. (이때 출금계좌에 해당 금액이 있어야 한다.) 이후에 최종적으로 상품에 가입하게 된다. 참고로 필자는 [만기 시 자동해지] 및 [만기 시 PUSH 알림받기]에 체크했다.

 

 

  이후에 [전체계좌조회] [상세조회] 페이지에서 다음과 같이 자신의 단기중금채 계좌를 확인할 수 있다. 정상적으로 수익률 3.67%가 적용되어 있는 것을 확인할 수 있다. 중금채 가입이 완료되었다.

 

728x90
반응형

Comment +0