OpenCV 4를 활용한 머신러닝 입문 2/e [OpenCV 4, 파이썬, scikit-learn을 사용해 이미지 처리 앱을 만들기 위한 지능형 알고리즘]
- 원서명Machine Learning for OpenCV 4, 2nd Edition: Intelligent algorithms for building image processing apps using OpenCV 4, Python, and scikit-learn (ISBN 9781789536300)
- 지은이아디타 샤르마(Aditya Sharma), 비슈베쉬 라비 슈리말리(Vishwesh Ravi Shrimali), 마이클 베이어(Michael Beyeler)
- 옮긴이테크 트랜스 그룹 T4
- ISBN : 9791161754628
- 40,000원
- 2020년 10월 30일 펴냄
- 페이퍼백 | 540쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/ml-opencv4
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
머신러닝은 경험을 통해 자동으로 개선하는 컴퓨터 알고리즘 연구이며, 인공지능의 한 분야다. 이 책에서는 분류 및 회귀와 같은 통계 학습의 핵심 개념을 간단/직관적인 예제를 통해 확인할 수 있다. 모든 기본 개념을 다룬 이후에는 의사 결정 트리(Decision tree), 서포트 벡터 머신(Support vector) 및 베이지안(Bayesian) 네트워크와 같은 다양한 알고리즘을 탐색하고 다른 OpenCV 기능과 결합하는 방법을 배운다. 딥러닝과 앙상블 학습을 살펴보고 직접 손으로 쓴 숫자의 분류와 제스처 인식과 같은 실제 애플리케이션을 만들 수 있다. 마지막으로, 이미지 처리 시스템을 구축하기 위한 최신 Intel OpenVINO를 살펴본다. 이 책을 다 읽고 난 이후에는 OpenCV4로 지능형 컴퓨터 비전 애플리케이션을 만들 수 있다.
이 책에서 다루는 내용
■ 이미지 처리를 위한 핵심 머신러닝 개념
■ 머신러닝과 딥러닝 알고리즘 설계의 이론
■ 딥러닝 모델을 교육하기 위한 효과적인 기술
■ 머신러닝 모델 평가로 모델 성능 향상
■ 컴퓨터 비전 애플리케이션에서 지원 벡터 머신 및 베이즈 분류 등과 같은 알고리즘 통합
■ OpenCV 4와 함께 OpenVINO를 활용한 모델 추론 속도 향상
이 책의 대상 독자
초보자는 물론 고급 독자에게도 도움이 될 수 있게 모든 개념을 설명하려고 노력했다. 파이썬 프로그래밍에 대한 기본적인 지식이 있으면 좋지만, 의무 사항은 아니다. 이해할 수 없는 파이썬 구문을 발견할 때마다 인터넷에서 찾아보길 권한다. 도움은 모르는 것을 찾는 사람들에게만 항상 제공된다.
이 책의 구성
1장, ‘머신러닝 시작’에서는 이 책에 필요한 소프트웨어와 파이썬 모듈을 설치하는 방법을 설명한다.
2장, ‘OpenCV으로 데이터 작업’에서는 몇 가지 기본적인 OpenCV 기능을 살펴본다.
3장, ‘지도학습의 첫 번째 단계’에서는 머신러닝에서 지도학습 방법의 기본을 다룬다. 파이썬에서 지원하는 OpenCV와 scikit-learn 라이브러리를 이용한 지도학습 방법의 몇 가지 예를 살펴본다.
4장, ‘데이터와 엔지니어링 특징 표현’에서는 OpenCV의 ORB를 사용한 특징 검출 및 특징 인식과 같은 개념을 다룬다. 또한 차원의 저주와 같은 중요한 개념을 이해하려고 노력한다.
5장, ‘의사 결정 트리를 사용한 의료 진단’에서는 트리의 깊이와 가지치기 등의 기법을 비롯해 의사 결정 트리 및 이와 관련된 중요한 개념을 소개한다. 의사 결정 트리를 이용한 유방암 진단 예측의 실용적 적용도 다룬다.
6장, ‘서포트 벡터 머신으로 보행자 검출’에서는 벡터 머신을 지원하기 위한 소개와 OpenCV에서 구현할 수 있는 방법을 다룬다. 또한 OpenCV를 이용한 보행자 검출의 응용 방법도 다룬다.
7장, ‘베이지안 학습을 이용한 스팸 필터 구현’에서는 나이브 베이즈 알고리즘, 다항 나이브 베이즈 등과 같은 내용뿐만 아니라 이를 구현할 수 있는 방법도 알아본다. 또한 스팸과 햄 데이터를 분류하는 머신러닝 어플리케이션을 구축한다.
8장, ‘비지도학습으로 숨겨진 구조 발견’에서는 두 번째 등급의 머신러닝 알고리즘, 즉 비지도학습을 소개한다. k-최근접 이웃, k-평균 등을 이용한 클러스터링 기술을 알아본다.
9장, ‘딥러닝을 사용한 숫자 필기 인식 분류’에서는 딥러닝 기법을 소개하고, MNIST 데이터 세트에서 이미지를 분류하고자 심층 신경망을 어떻게 사용하는지 살펴본다.
10장, ‘앙상블 기법으로 분류’에서는 분류 목적을 위한 랜덤 포레스트, 배깅, 부스팅 등의 주제를 다룬다.
11장, ‘하이퍼 매개변수 튜닝으로 올바른 모델 선택’에서는 모델 성능을 개선하고자 다양한 머신러닝 방법에서 최적의 매개변수 집합을 선택하는 과정을 살펴본다.
12장, ‘OpenCV의 OpenVINO 사용’에서는 OpenCV 4.0에서 소개된 OpenVINO 툴킷을 소개한다. 또한 이미지 분류를 예로 들어 OpenCV에서 사용할 수 있는 방법도 살펴본다.
13장. ‘결론’에서는 책에서 다룬 주요 주제를 요약하고, 이후에 무엇을 더 할 수 있는지를 이야기한다.
상세 이미지
목차
목차
- 1부. 머신러닝과 OpenCV의 기본 원리
- 1장. 머신러닝 시작
- 기술적 요구 사항
- 머신러닝 시작
- 머신러닝으로 해결할 수 있는 문제
- 파이썬 시작
- OpenCV 시작
- 설치
- 이 책의 최신 코드 얻기
- 파이썬의 아나콘다 배포판
- conda 환경에서 OpenCV 설치
- 설치 확인
- OpenCV의 ML 모듈 엿보기
- 머신러닝의 응용
- OpenCV 4.0의 새로운 기능
- 요약
- 2장. OpenCV로 데이터 작업
- 기술적 요구 사항
- 머신러닝 워크플로의 이해
- OpenCV와 파이썬을 사용한 데이터 취급
- 새로운 IPython이나 주피터 세션 시작
- 파이썬 NumPy 패키지를 사용한 데이터 취급
- NumPy 가져오기
- NumPy 배열의 이해
- 인덱싱을 통해 단일 배열 요소에 액세스
- 다차원 배열 만들기
- 파이썬에서 외부 데이터 세트 불러오기
- Matplotlib을 사용한 데이터 시각화
- Matplotlib 가져오기
- 간단한 플롯 만들기
- 외부 데이터 세트의 데이터 시각화
- C++에서 OpenCV의 TrainData 컨테이너를 사용해 데이터 다루기
- 요약
- 3장. 지도학습의 첫 번째 단계
- 기술적 요구 사항
- 지도학습 이해
- OpenCV에서 지도학습 살펴보기
- 점수화 함수로 모델 성능 측정
- 정확도, 정확률, 재현율을 사용하는 점수화 분류기
- 평균 제곱 오차, 분산, R 제곱을 사용한 회귀 분석
- 분류 모델을 사용한 클래스 레이블 예측
- k-최근접 이웃 알고리즘의 이해
- OpenCV에서 k-최근접 이웃 구현
- 훈련 데이터 생성
- 분류기 훈련
- 새 데이터 요소의 레이블 예측
- 회귀 모델을 사용해 지속적인 결과 예측
- 선형 회귀 분석
- OpenCV의 선형 회귀 방법
- 선형 회귀 분석 방법을 사용해 보스턴 주택 가격 예측
- 데이터 세트 불러오기
- 모델 훈련
- 모델 테스트
- 라소와 융기 회귀 적용
- 로지스틱 회귀를 이용한 아이리스 종 분류
- 로지스틱 회귀 이해
- 훈련 자료 불러오기
- 이진 분류 문제로 만들기
- 데이터 검사
- 데이터를 훈련 세트와 테스트 세트로 나누기
- 분류기 훈련
- 분류기 테스트
- 로지스틱 회귀 이해
- 요약
- 4장. 데이터와 엔지니어링 특징 표현
- 기술적 요구 사항
- 특징 엔지니어링의 이해
- 전처리 데이터
- 특징 표준화
- 특징 정규화
- 특징의 범위 확장
- 특징 이진화
- 누락된 데이터 처리
- 차원 축소의 이해
- OpenCV에서 PCA 구현
- ICA 구현
- NMF 구현
- t-분산 확률적 이웃 임베딩(t-SNE)을 이용한 차원 감소 시각화
- 범주형 변수 표현
- 텍스트 특징 표현
- 이미지 표현
- 색 공간 사용
- RGB 공간에서 이미지 인코딩
- HSV와 HLS 공간에서 이미지 인코딩
- 이미지의 코너 검출
- 스타(star) 검출기와 BRIP 설명자(descriptor) 사용
- ORB 사용
- 색 공간 사용
- 요약
- 2부.OpenCV 사용법
- 5장. 의사 결정 트리를 사용한 의학 진단
- 기술적 요구 사항
- 의사 결정 트리의 이해
- 첫 번째 의사 결정 트리 만들기
- 새 데이터 만들기
- 데이터를 이해한 후 작업에 활용
- 데이터 전처리
- 트리 만들기
- 훈련된 의사 결정 트리의 시각화
- 의사 결정 트리의 내부 동작 조사
- 특징 중요도 평가
- 의사 결정 규칙 이해
- 의사 결정 트리의 복잡도 제어
- 첫 번째 의사 결정 트리 만들기
- 의사 결정 트리를 사용해 유방암 진단
- 데이터 세트 불러오기
- 의사 결정 트리 만들기
- 회귀 결정 트리 사용
- 요약
- 6장. 서포트 벡터 머신으로 보행자 검출
- 기술적 요구 사항
- 서포트 벡터 시스템의 이해
- 최적의 의사 결정 경계 학습
- 첫 번째 서포트 벡터 머신 구현
- 데이터 세트 생성
- 데이터 세트 시각화
- 데이터 세트 전처리
- 서포트 벡터 머신 구축
- 의사 결정 경계 시각화
- 비선형 의사 결정 경계 다루기
- 커널 트릭의 이해
- 사용자가 사용할 커널 파악
- 비선형 서포트 벡터 머신 구현
- 실생활에서 보행자 검출
- 데이터 세트 가져오기
- HOG 훑어보기
- 네거티브 생성
- 서포트 벡터 머신 구현
- 모델 부트스트랩
- 더 큰 이미지에서 보행자 검출
- 모델 개선
- SVM을 사용한 다중 클래스 분류
- 데이터 정보
- 속성 정보
- 요약
- 7장. 베이지안 학습을 이용한 스팸 필터 구현
- 기술적 요구 사항
- 베이지안 추론의 이해
- 확률 이론 간단히 살펴보기
- 베이즈 정리의 이해
- 나이브 베이즈 분류기의 이해
- 첫 번째 베이지안 분류기 구현
- 장난감 데이터 세트 만들기
- 일반 베이즈 분류기로 데이터 분류
- 나이브 베이즈 분류기로 데이터 분류
- 조건부 확률의 시각화
- 나이브 베이즈 분류기를 사용한 이메일 분류
- 데이터 세트 불러오기
- 판다스를 사용해 데이터 행렬 만들기
- 데이터 전처리
- 정상적인 베이즈 분류기 훈련
- 전체 데이터 세트에 대한 훈련
- n-그램을 사용한 결과 개선
- TF-IDF를 사용한 결과 개선
- 요약
- 8장. 비지도학습으로 숨겨진 구조 발견
- 기술적 요구 사항
- 비지도학습의 이해
- k-평균 클러스터링의 이해
- 첫 번째 k-평균 예제 구현
- 기댓값 최대화 방법의 이해
- 기댓값 최대화 솔루션 구현
- 기댓값 최대화의 한계 파악
- 첫 번째 경고: 전반적인 최적 결과를 찾기 어렵다
- 두 번째 경고: 미리 클러스터 수를 선택해야 한다
- 세 번째 경고: 클러스터 경계는 선형이다
- 네 번째 경고: k-평균은 많은 수의 샘플에서는 느리다
- k-평균을 사용한 색 공간 압축
- 트루 컬러 팔레트 시각화
- k-평균을 사용한 색상 팔레트 축소
- k-평균을 사용한 숫자 필기 인식 분류
- 데이터 세트 불러오기
- k-평균 실행
- 클러스터를 계층적 트리로 구성
- 계층적 클러스터링의 이해
- 응집력 있는 계층적 클러스터링 구현
- 클러스터링 알고리즘 비교
- 요약
- 3부OpenCV를 사용한 고급 머신러닝
- 9장. 딥러닝을 사용한 숫자 필기 인식 분류
- 기술적 요구 사항
- 맥컬럭-피츠 뉴런의 이해
- 퍼셉트론의 이해
- 첫 번째 퍼셉트론 구현
- 장난감 데이터 세트 생성
- 퍼셉트론을 데이터에 적용
- 퍼셉트론 분류기 평가
- 선형으로 분리되지 않는 데이터에 퍼셉트론 적용
- 다층 퍼셉트론의 이해
- 경사 하강법의 이해
- 역전파를 이용한 MLP 훈련
- OpenCV에서 MLP 구현
- 데이터 전처리
- OpenCV에서 MLP 분류기 만들기
- MLP 분류기의 사용자 정의
- MLP 분류기 훈련과 테스트
- 딥러닝에 익숙해지기
- 케라스에 익숙해지기
- 숫자 필기 인식 분류
- MNIST 데이터 세트 가져오기
- MNIST 데이터 세트 전처리
- OpenCV를 사용한 MLP 훈련
- 케라스를 이용한 심층 신경망 훈련
- MNIST 데이터 세트 전처리
- 컨볼루션 신경망(CNN) 만들기
- 모델 요약
- 모델 피팅
- 요약
- 10장. 앙상블 기법으로 분류
- 기술적 요구 사항
- 앙상블 메서드의 이해
- 평균 앙상블의 이해
- 배깅 분류기 구현
- 배깅 회귀기 구현
- 부스터 앙상블의 이해
- 약한 학습기
- 부스팅 분류기 구현
- 부스팅 회귀기 구현
- 스태킹 앙상블의 이해
- 평균 앙상블의 이해
- 의사 결정 트리를 랜덤 포레스트로 결합
- 의사 결정 트리의 단점 이해
- 첫 번째 랜덤 포레스트 구현
- scikit-learn을 사용한 랜덤 포레스트 구현
- 과랜덤화된 트리 구현
- 얼굴 인식을 위한 랜덤 포레스트 사용
- 데이터 세트 불러오기
- 데이터 세트 전처리
- 랜덤 포레스트 훈련과 테스트
- AdaBoost 구현
- OpenCV에서 AdaBoost 구현
- scikit-learn에서 AdaBoost 구현
- 다른 모델을 투표 분류기로 결합
- 다양한 투표 방법의 이해
- 투표 분류기 구현
- 다원성
- 요약
- 11장. 하이퍼 매개변수 튜닝으로 올바른 모델 선택
- 기술적 요구 사항
- 모델 평가
- 잘못된 방식으로 모델 평가
- 올바른 방식으로 모델 평가
- 최고의 모델 선택
- 교차 유효성 검증의 이해
- OpenCV에서 교차 유효성의 매뉴얼 검증 구현
- scikit-learn을 사용한 k-겹 교차 검증
- 단일 관측값 제거법 교차 검증의 구현
- 견고성 예측에 부트스트랩 사용
- OpenCV에서 부트스트랩을 직접 구현
- 결과의 중요성 평가
- 스튜던트 t-검정 구현
- 맥니마의 검정 구현
- 그리드 검색으로 하이퍼 매개변수 튜닝
- 간단한 그리드 검색 구현
- 유효성 검증 세트의 값 이해
- 교차 유효성 검증과 함께 그리드 검색 결합
- 중첩된 교차 유효성 검증과 함께 그리드 검색 결합
- 다양한 평가 메트릭을 사용한 점수화 모델
- 올바른 분류 기준 선택
- 올바른 회귀 메트릭 선택
- 파이프라인을 형성하기 위한 체이닝 알고리즘
- scikit-learn에서 파이프라인 구현
- 그리드 검색에서 파이프라인 사용
- 요약
- 12장. OpenCV의 OpenVINO 사용
- 기술적 요구 사항
- OpenVINO 소개
- OpenVINO 툴킷 설치
- OpenVINO 구성 요소
- 대화형 얼굴 검출 데모
- OpenCV와 함께 OpenVINO 추론 엔진 사용
- OpenCV와 함께 OpenVINO 모델 동물원 사용
- OpenVINO 추론 엔진이 있는 OpenCV를 사용한 이미지 분류
- OpenVINO를 사용한 이미지 분류
- OpenVINO와 함께 OpenCV를 사용한 이미지 분류
- 요약
- 13장. 결론
- 기술적 요구 사항
- 머신러닝 문제점에 접근
- 자신만의 추정기 작성
- 자신만의 OpenCV 기반 분류기를 C++로 작성
- 파이썬으로 자신만의 scikit-learn 기반 분류기 작성
- 다음 단계
- 요약
도서 오류 신고
정오표
정오표
[p.35 : 아래에서 5행]
관계(데이터마이닝이라고도 함)를 추출하려고
->
관계를 추출하려고(데이터마이닝이라고도 함)
[p.52 : 1행]
지적해야 할 것은
->
살펴봐야 할 것은
[p.55 : 그림]
데스트 데이터
->
테스트 데이터
[p.86 : 아래에서 7행]
지정하지 않는지를
->
지정할 수 있는지를
[p.109 : 2행]
총 네 개의
->
네 개의
[p.109 : 3행]
빨간색
->
세 개의 빨간색
[p.212 : 아래에서 4행]
깊이 2를
->
깊이 3을
[p.246 : 4행]
앞의 + 및 - 데이터 항목에서처럼
->
(삭제)