여러 데이터 소스를 통합 데이터셋으로 합치기 9장에서는 개괄적인 목표와 우리가 만들 시스템에서 데이터가 어떻게 흘러갈지에 대한 윤곽을 잡았다. 10장에서는 원본 데이터를 읽어들이고 전처리하는 데이터 로딩 부분에 집중하도록 한다. 우리의 목표는 원본 CT스캔 데이터와 데이터에 달아놓은 애노테이션 목록으로 훈련 샘플을 만드는 것이다. 원본 CT 데이터 파일 CT데이터는 메타데이터 헤더 정보가 포함된 .mhd 파일과 3차원 배열을 만들 원본 데이터 바이트를 포함하는 .raw 파일로, 두 가지 종류이다. CT클래스는 두 파일을 읽어 3차원 배열을 만들고 환자 좌표계를 배열에서 필요로 하는 인덱스, 행, 열 좌표로 바꿔주는 변환 행렬도 만든다. 즉 CT데이터에 적용할 좌표계 변환이 필요하다. >### Series UID란 Series UID (시리즈 UID): 한 연구(Study) 내에서 스캔 또는 이미지 시리즈를 식별하는 UID이다. 이미지 시리즈(Image Series)
암과 싸워 이기기 위한 파이토치 활용 이번 장에서 목표하는 바는 두가지다. 이후의 챕터에서 다룰 내용의 규모와 범위에 대해 파악하는 것과 이후 챕터에서 필요한 내용을 준비하기 위해 주변 환경을 파악하는 것이다. 사용 사례 소개 머신러닝 프로젝트의 현실에서는 예상한 대로 일이 흘러가지 않는 경우가 많다. 따라서 2부(9장~)에서는 그런 경우 다룰 수 있는 도구들이 제공된다. 장애물을 맞닥뜨렸을 때 최소한 막히지는 않도록 해야 한다. 우리의 프로젝트가 성능이 예상보다 좋지 않았을 때 그 다음 어떤 대처방안을 구성해야할 지 떠오르지 않는 암담한 상황에서 벗어날 수 있게 될 것이다. 우리는 환자의 흉부CT 스캔을 입력으로 그것만으로 악성 종양을 자동으로 탐지하는 프로젝트를 구성할 것이다. 1부에서보다 더 진지하고 구조적인 접근 방법이 요구된다. >폐암 감지 문제를 선택 2부에 이 것을 주로 다루는 이유는, 가장 중요한 이유로 미해결 과제라는 점에 있으며
데이터 살펴보기 파이토치를 활용하여 20개의 심슨 캐릭터들 사진에 대한 학습을 통한 객체 탐지를 진행해볼 계획이며, 데이터셋은 Pascal VOC와 COCO와 같은 형식으로 데이터셋 이미지 파일에 대한 정보를 담고 있는 파일인 annotation.txt가 포함되어 있으며, 파일에는 각 이미지의 경로와 해당 이미지에 대한 객체의 위치, 클래스의 정보가 저장되어 있다. 이 정보를 이용하여 신경망 모델을 학습시키거나 테스트할 때 입력 데이터와 정답 데이터를 생성할 수 있다. > Yolo 직접 구현 YOLO 알고리즘을 PyTorch로 구현하기 위해서는 다음과 같은 단계를 거쳐야 한다. 데이터셋 구성하기: YOLO는 Pascal VOC나 COCO와 같은 대형 데이터셋을 사용하여 객체 탐지를 수행한다.
컨볼루션을 활용한 일반화 7장에서 완전연결신경망의 성능에는 한계가 있었다. 검증셋에서 전혀 효과적이지 못했으며 이는 일반화의 실패라고 볼 수 있다. 완전연결신경망의 경우 너무 많은 파라미터가 필요하고(모든 뉴런끼리의 연결이기에) 사진데이터의 특성을 전혀 반영하지 못하며 모든 픽셀을 독립적으로 다루게 되었다. 이미 많은 파라미터가 필요한 상황에서 이 단점을 극복하기 위해 데이터 증강까지 필요한 상황이었다. 컨볼루션 이 챕터에서는 컨볼루션이 어떻게 인접한 픽셀들을 사용하고, 위치 변화에 대한 불변성 즉 픽셀들이 이동하더라도 이것을 쉽게 잡아낼 수 있는 컨볼루션을 공부해보도록 한다. 하늘을 나는 비행기와 같은 물체와 일치하는 패턴을 인지하려면 인근 픽셀의 배열 방식을 살펴봐야 한다. 즉 비행기가 등장하는 이미지에 나무나 구름 혹은 타 물체들이 구석에 존재하는 상황에 관심이 없어야 한다. 이 개념을 수학적으로 바꾸려면 픽셀 기준으로 이미지 내 멀리 떨어진 픽셀이아닌 주위의 픽
새와 비행기 구별하기: 이미지 학습 6장에서는 경사 하강을 통해 내부 동작을 이해하고, 파이토치가 제공하는 기능을 활용해 모델을 만들고 최적화 해보았다. 7장에서는 이미지를 통해 신경망에 대한 기초를 더 다져본다. 작은 이미지를 모아 놓은 데이터셋 CIFAR-10 데이터셋은 지난 십여 년간 컴퓨터 비전의 고전이 되어 왔다. 이 데이터셋은 32x32 크기의 RGB 이미지 6만 개로 구성되어 있으며 1에서 10까지의 정수 레이블이 매겨져 있다. 각각은 비행기, 자동차, 새...말, 배, 트럭을 뜻한다. torchvision을 통해 데이터셋을 내려받고 파이토치 텐서 컬렉션으로 읽어들이도록 한다. 첫번째 인자는 데이터를 받을 위치, 두번째 인자는 훈련셋인지 검증셋인지, 세번째 인자는 경로에서 데이터를 찾을 수 없으면 자동으로 웹에서 다운로드 받아주는 인자이다. 데이터 변환 이제 PIL 이미지를 파이토치 텐서로 변환할 단계이다. 현재 데이터셋 객체인 cifar10은 다
신경망을 활용한 데이터 적합 지금까지 선형 모델을 어떻게 학습시키는지, 파이토치로 구현시 내부에서 어떤 일이 일어나는지를 살펴보았다. 단순한 예제 덕에 모델 자체의 구현보다 모델이 어떻게 학습하는지에 집중할 수 있었다. 파라미터에 오차를 역전파하고 손실값에 근거한 기울기로 파라미터를 조정하는 과정은 어떤 모델을 사용하더라도 동일했다. 이번 6장에서는 모델 아키텍처를 수정하여, 온도 변환 문제를 풀기위한 완전한 인공 신경망을 구현해보도록 한다. 인공 뉴런 신경망이라는 용어는 인간의 뇌가 동작하는 방식을 연상시키지만, 오늘날의 인공 신경망은 실제 뇌의 뉴런의 동작과는 거리가 멀다. 본질적으로 뉴런은 단순히 입력에 대한 선형 변환(가중치를 곱하고 편향값을 더하는 등)과 활성 함수(activation function)라 부르는 고정된 비선형 함수를 적용하
학습 기법 시대를 초월하는 모델링 학습 우리가 관심있는 모델은 특정한 범위에 한정된 작업을 수행하기 위해 만들어진 모델이 아닌 입출력 쌍을 활용한 다양한 유사 작업에 대해 스스로를 최적화하기 위해 자동으로 적응하는 모델이다. 파이토치는 파라미터 관점에서 잔차(fitting error)의 미분을 분석적으로 표현하기 위한 모델을 쉽게 생성하도록 설계되어 있다. 이 장에서는 일반 함수의 적합(fitting)을 자동화 하는 방법에 대해 다룬다. 심층 신경망은 일반 함수이며, 파이토치는 심층신경망의 적합을 자동화하는 과정을 최대한 단순하고 투명하게 만들어준다. 학습은 파라미터 추정에 불과 입력 및 입력에 대응하는 출력인 실측자료(truth 값)와 가중치 초깃값이 주어졌을 때, 모델에 입력
실제 데이터를 텐서로 표현하기 >신경망은 텐서를 입력받아 출력할 텐서를 만들며, 신경망에서 일어나는 모든 연산과 최적화는 텐서 연산이고 가중치나 바이어스 같은 신경망 내 모든 파라미터 또한 텐서이다. 텐서로 어떻게 연산을 수행하고 효과적으로 색인하는지를 이해하는 것이 파이토치 공부의 핵심이다. 이미지 다루기 이미지는 픽셀 단위의 높이와 너비를 가지는 표준적인 그리드에 나열된 복수 개의 스칼라값 모음으로 표현된다. 하나의 스칼라 값인 경우 흑백 이미지, 여러 색을 표현하기 위해서는 여러 개의 스칼라 값이 필요하다. 색상외에 추가적으로 다양한 피쳐를 포함하기도 한다. 컬러 채널 더하기 컬러를 숫자로 표현하는 가장 흔한 방법은 RGB로서, (빨강, 초록, 파랑)의 강도를 나타내는 세 개의 숫자로 컬러를 정의하는 방식이다. 이미지 파일 로딩 imageio 모듈을 사용한 PNG 이미지 로딩. 라는 기본 자료구조를 제공한다. 딥러닝에서의 텐서는 임의의
사전 훈련된 신경망 사전 훈련된 신경망은 주어진 입력에 대한 출력을 만드는 프로그램이다. 이 프로그램의 동작 방식은 신경망의 아키텍처와 훈련 과정에서 사용된 데이터가 결정한다. 이번 장에서는 세 가지의 사전 훈련된 인기 모델을 다룬다. 이미지를 이해하고 레이블을 달아주는 모델 진짜 이미지로부터 새로운 이미지를 만들어내는 모델 그리고 이미지의 내용을 문법에 맞게 영어 문장으로 설명하는 모델 또한 사전 훈련된 모델을 일관된 인터페이스를 통해 공통으로 사용할 수 있게 만드는 도구들이 모여 있는 파이토치 허브도 알아본다. 이미지를 인식하는 사전 훈련된 신경망 > TorchVision Project 여기에서는 AlexNet, ResNet, Inceptionv3 같은 컴퓨터 비전용 고성능 신경망 아키텍처를 볼 수 있다. 또한 이미지넷 같은 데이터셋에도 쉽게 접근할 수 있으며, 파이토치로 컴퓨터 비전 애플리케이션을 빠르게 만들 수 있는 유틸리티도 제공한다.
딥러닝과 파이토치 라이브러리 소개 >이 책에서 우리가 말하는 일반화된 알고리즘 분류는 AI의 하위범주인 딥러닝(deeplearning)에 해당된다. 딥러닝은 적합한 예제, 즉 적합한 데이터를 사용하여 심층신경망이라는 수학적 개체를 훈련시키는 일을 한다. 딥러닝 혁명 십여 년 전까지 머신러닝이라고 분류되는 광범위한 시스템은 피처 엔지니어링(feature engineering)에 크게 의존했다. 피처 엔지니어링은 분류기가 새로운 데이터를 기반으로 올바른 결과물을 낼 수 있도록 입력 데이터를 변환하는 작업을 일컫는다. 반면 딥러닝은 이와 같은 피처 엔지니어링 작업을 자동으로 수행한다. >즉 기존 머신러닝에서는 주어진 데이터에 대해 주어진 데이터를 목적에 맞게 잘 변환해서 피처를 직접 새로 구성해야하지만 딥러닝은 이것을 자동으로 처리하는 것이다. 예로 머신러닝 입문 프로젝트인 "California real estate"예제에서 보통 상관성이 높은 피처를 찾기위해 지역내의