소스 코드 파일은여기에서 내려 받으실 수 있습니다.
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장. ‘결론’에서는 책에서 다룬 주요 주제를 요약하고, 이후에 무엇을 더 할 수 있는지를 이야기한다.
세상이 바뀌고 인간이 더 똑똑하고 더 나은 머신들을 만들면서 머신러닝과 컴퓨터 비전 전문가에 대한 수요가 늘어났다. 머신러닝은 이름에서 알 수 있듯이 특정 매개변수 집합을 입력으로 받아 주어진 예측을 하기 위한 과정이다. 반면에 컴퓨터 비전은 머신에게 시각적 정보를 인식하게 한다. 이런 기술을 결합하면 시각 데이터를 이용해 예측을 할 수 있는 머신이 생겨 머신은 인간의 능력을 갖추는 데 한 발짝 더 가까워진다. 여기에 딥러닝을 더하면 머신이 예측이라는 측면에서 인간의 능력까지 뛰어넘을 수 있다. 이는 억지스럽게 보일 수도 있지만, AI 시스템이 의사결정 기반 시스템을 사용하면서 현실이 됐다. AI 카메라, AI 모니터, AI 사운드 시스템, AI 구동 프로세서 등이 갖춰졌다. 이 책을 읽고 AI 카메라를 만들 수 있다고 약속할 수는 없지만, 그렇게 하는 데 필요한 도구를 제공한다. 이 책에서 소개하는 가장 강력한 도구는 세계 최고 수준이며 가장 큰 컴퓨터 비전 라이브러리인 OpenCV다. OpenCV가 머신러닝에 사용되는 것이 흔하진 않지만, 머신러닝에서 어떻게 사용될 수 있는지의 예시와 개념을 제공한다. 이 책에서는 실제로 적용할 수 있는 접근법을 사용했으며, 지식을 모두 나타낼 수 있는 애플리케이션을 만들고자 이 책에 있는 모든 코드를 시도해 볼 것을 권한다. 세상은 변하고 있고 이 책은 시도하는 자들이 세상을 더 좋게 바꿀 수 있게 돕는다.
로버트 보쉬(Robert Bosch)의 수석 엔지니어로서 자율 주행 컴퓨터 비전 문제를 해결하는 일을 하고 있다. 로버트 보쉬에서는 2019년 AI 해커톤 1위를 차지하기도 했다. IIT 만디와 IIIT 하이데라바드를 비롯한 인도의 일부 주요 기관과 협업을 진행하고 있다. IIT에서는 ICIP 2019와 MICCAI 2019에서 딥러닝을 이용한 의료영상 논문을 발표했다. IIIT에서는 초고해상도 문서 이미지 관련 업무에 큰 기여를 했다.
DataCamp와 LearnOpenCV의 머신러닝과 딥러닝에 관한 많은 논문을 작성했다. 유튜브 채널을 운영하고, NCVPRIPG 콘퍼런스(2017년)와 알리가르 무슬림 대학교에서 연설자로 참여해 딥러닝 워크숍을 진행해왔다.
2018년 기계 공학을 전공했으며 BITS 필라니(Bilani)를 졸업했다. 이후에 빅비전 LLC에서 딥러닝 및 컴퓨터 비전 관련 업무를 수행했으며, 공식 OpenCV 코스를 개발했다. 프로그래밍과 AI에 관심이 많고 머신 공학 프로젝트에 적용했다. 또한 OpenCV에 관한 여러 블로그를 운영하고 있고 컴퓨터 비전의 선도적인 블로그인 LearnOpenCV에 딥러닝 관련 글도 게재했다. 블로그와 프로젝트를 진행하지 않을 때는 장시간의 산책을 하거나 통기타를 연주하는 것을 좋아한다.
워싱턴 대학교(University of Washington)의 신경 공학 및 데이터 과학 분야 박사후 연구원(Postdoctoral Fellow)으로서 망막 보형물(생체 공학적 눈)을 이식받은 맹인 환자의 지각 경험을 향상시키고자 생체 공학 비전의 컴퓨터 이용 모델을 연구하고 있다. 이 연구는 신경 과학, 컴퓨터 공학, 컴퓨터 비전, 머신러닝의 교차점에 위치한다. 여러 오픈소스 소프트웨어 프로젝트에 적극적으로 참여하고 있으며 파이썬, C/C++, CUDA, MATLAB, 안드로이드와 관련된 전문 프로그래밍 경험을 쌓았다. 캘리포니아 대학교 어바인(Irvine) 캠퍼스에서 컴퓨터 과학 박사 학위를 받았고, 스위스 취리히 연방 공과대학교에서 생명 공학 석사 학위와 전기 공학 학사 학위를 받았다.
지금 전 세상을 뒤덮는 화두 중 하나가 머신러닝이라는 것을 아무도 부인하긴 어려울 것이다. 구글 딥마인드의 알파고가 세기의 이벤트를 많은 사람에게 보여준 이후에 그 관심도는 나날이 급상승 중이다. 이제는 우리 주변에서 머신러닝이 적용된 사물을 쉽게 볼 수 있다. 대표적인 예로 스마트폰에서도 이미 머신러닝이 적용돼 사용자들에게 많은 편의 사항을 제공하고 있다.
머신러닝이 적용된 사회에 살아가면서 머신러닝이라는 단어 외에도 내부에 어떠한 원리가 동작하는지를 함께 알아가야 한다. 이러한 시작점에 이 책이 일정한 역할을 할 수 있다고 믿는다. 이 책은 실제 컴퓨터 비전 작업을 할 때 직접적인 도움이 될 수 있도록 구성됐고 OpenCV의 최신 API(v4.0.0) 지식들을 포함한다.
1장부터 8장까지는 분류 및 회귀와 같은 통계 학습의 핵심 개념으로 시작해 지도/비지도 머신러닝도 살펴본다. 의사 결정 트리(Decision tree), 서포트 벡터 머신(Support vector machine), 베이지안(Bayesian) 네트워크와 같은 다양한 알고리즘을 탐색하고 다른 OpenCV 기능과 결합하는 방법을 배운다. 9장부터 11장까지는 딥러닝 기술, 숫자 필기 인식 분류, 앙상블 기법을 사용한 분류 방법과 모델 성능을 개선하기 위한 과정을 살펴본다.
12장은 2판에서 새롭게 도입한 부분이다. OpenVINO(Open Visual Inference & Neural Network Optimization)도 학습할 수 있는데, OpenVINO는 개방형 시각 추론과 신경망 최적화 솔루션이며 고성능 컴퓨터 비전과 딥러닝 추론 애플리케이션 개발용으로 설계됐다.
이 책에서는 비전 처리와 관련된 분야에서 머신러닝을 어떻게 활용할 수 있는지 상세한 이론 설명과 예제를 통해 보여준다. 머신러닝을 완벽하게 이해하려면 가장 기본적인 원리를 이해하는 것이 좋다. 이해 과정은 이 책에서의 설명과 코드를 통해 시작해보자.
진심으로 모든 독자가 OpenCV와 머신러닝의 기본 이론을 이해하고 실제로 구현하는 데 이 책이 많은 도움이 되길 바란다.
최신 IT 테크놀로지에 대한 리서치를 목적으로 하는 스터디 그룹이다. 엔터프라이즈 환경에서 오픈소스를 활용한 프레임워크 구축에 관심이 많으며, 스프링, React.js, Node.js, OpenCV, ML 등의 기술에 주목하고 있다. 또한 다양한 오픈소스 기반의 플랫폼 개발과 활용에 관심이 많다. 옮긴 책으로는 에이콘출판사에서 펴낸 『OpenCV4 마스터 3/e』(2020), 『양자 컴퓨팅 발전과 전망』(2020) 등이 있다.
[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행]
앞의 + 및 - 데이터 항목에서처럼
->
(삭제)