Chapter 01 인간의 시각을 흉내 내는 컴퓨터 비전
1.1 인간의 시각
1.2 왜 컴퓨터 비전인가?
1.3 컴퓨터 비전은 왜 어려운가?
1.4 컴퓨터 비전의 역사
1.5 컴퓨터 비전 체험 서비스
1.6 컴퓨터 비전 만들기
1.7 읽을거리와 볼거리
연습문제
Chapter 02 OpenCV로 시작하는 컴퓨터 비전
2.1 OpenCV 소개
2.2 프로그래밍 킥오프
2.3 객체지향 잘 활용하기
[프로그램 2-1] numpy.ndarray 클래스 형의 객체를 만들고 멤버 함수 적용하기
2.4 [프로그래밍 예제 1] 영상을 읽고 표시하기
[프로그램 2-2] 영상 파일을 읽고 윈도우에 디스플레이하기
2.5 [프로그래밍 예제 2] 영상 형태 변환하고 크기 축소하기
[프로그램 2-3] 영상을 명암 영상으로 변환하고 반으로 축소하기
2.6 [프로그래밍 예제 3] 웹 캠에서 비디오 읽기
[프로그램 2-4] 웹 캠으로 비디오 획득하기
[프로그램 2-5] 비디오에서 수집한 영상을 이어 붙이기
2.7 [프로그래밍 예제 4] 그래픽 기능과 사용자 인터페이스 만들기
[프로그램 2-6] 영상에 도형을 그리고 글자 쓰기
[프로그램 2-7] 마우스로 클릭한 곳에 직사각형 그리기
[프로그램 2-8] 마우스 드래그로 직사각형 그리기
2.8 [프로그래밍 예제 5] 페인팅 기능 만들기
[프로그램 2-9] 빨간색 붓과 파란색 붓으로 페인팅하기
연습문제
Chapter 03 영상 처리
3.1 디지털 영상 기초
[프로그램 3-1] RGB 컬러 영상을 채널별로 구분해 디스플레이하기
3.2 이진 영상
[프로그램 3-2] 실제 영상에서 히스토그램 구하기
[프로그램 3-3] 오츄 알고리즘으로 이진화하기
[프로그램 3-4] 모폴로지 연산 적용하기
3.3 점 연산
[프로그램 3-5] 감마 보정 실험하기
[프로그램 3-6] 히스토그램 평활화하기
3.4 영역 연산
[프로그램 3-7] 컨볼루션 적용(가우시안 스무딩과 엠보싱)하기
3.5 기하 연산
[프로그램 3-8] 보간을 이용해 영상의 기하 변환하기
3.6 OpenCV의 시간 효율
[프로그램 3-9] 직접 작성한 함수와 OpenCV가 제공하는 함수의 시간 비교하기
연습문제
Chapter 04 에지와 영역
4.1 에지 검출
[프로그램 4-1] 소벨 에지 검출(Sobel 함수 사용)하기
4.2 캐니 에지
[프로그램 4-2] 캐니 에지 실험하기
4.3 직선 검출
[프로그램 4-3] 에지 맵에서 경계선 찾기
[프로그램 4-4] 허프 변환을 이용해 사과 검출하기
4.4 영역 분할
[프로그램 4-5] SLIC 알고리즘으로 입력 영상을 슈퍼 화소 분할하기
[프로그램 4-6] 정규화 절단 알고리즘으로 영역 분할하기
4.5 대화식 분할
[프로그램 4-7] GrabCut을 이용해 물체 분할하기
4.6 영역 특징
[프로그램 4-8] 이진 영역의 특징을 추출하는 함수 사용하기
연습문제
Chapter 05 지역 특징
5.1 발상
5.2 이동과 회전 불변한 지역 특징
[프로그램 5-1] 해리스 특징점 검출 구현하기
5.3 스케일 불변한 지역 특징
5.4 SIFT
[프로그램 5-2] SIFT 검출
5.5 매칭
[프로그램 5-3] FLANN 라이브러리를 이용한 SIFT 매칭
5.6 호모그래피 추정
[프로그램 5-4] RANSAC을 이용해 호모그래피 추정하기
연습문제
Chapter 06 비전 에이전트
6.1 지능 에이전트로서 비전 에이전트
6.2 PyQt를 이용한 사용자 인터페이스
[프로그램 6-1] PyQt로 간단한 GUI 만들기(버튼을 클릭하면 삑 소리 들려주기)
[프로그램 6-2] OpenCV에 PyQt의 GUI 붙이기(비디오에서 프레임을 잡아 저장하기)
6.3 [비전 에이전트 1] 오림
[프로그램 6-3] GrabCut을 이용해 관심 물체 오리기
6.4 [비전 에이전트 2] 교통약자 보호구역 알림
[프로그램 6-4] 교통약자 보호구역 알림 구현하기
6.5 [비전 에이전트 3] 파노라마 영상 제작
[프로그램 6-5] 비디오에서 수집한 영상을 봉합하여 파노라마 영상 제작하기
6.6 [비전 에이전트 4] 특수 효과
[프로그램 6-6] 사진 영상에 특수 효과 처리하기
[프로그램 6-7] 비디오 영상에 특수 효과 처리하기
연습문제
Chapter 07 딥러닝 비전
7.1 방법론의 대전환
7.2 기계학습 기초
7.3 딥러닝 소프트웨어 맛보기
[프로그램 7-1] 텐서플로로 데이터 확인하기
7.4 인공 신경망의 태동
7.5 깊은 다층 퍼셉트론
7.6 학습 알고리즘
7.7 다층 퍼셉트론 구현하기
[프로그램 7-2] 다층 퍼셉트론으로 MNIST 인식하기(SGD 옵티마이저)
[프로그램 7-3] 다층 퍼셉트론으로 MNIST 인식하기(Adam 옵티마이저)
[프로그램 7-4] 다층 퍼셉트론으로 MNIST 인식하기(SGD와 Adam의 성능 그래프 비교)
[프로그램 7-5] 깊은 다층 퍼셉트론으로 MNIST 인식하기
[프로그램 7-6] 깊은 다층 퍼셉트론으로 CIFAR-10 인식하기
7.8 [비전 에이전트 5] 우편번호 인식기 v.1
[프로그램 7-7] 우편번호 인식기 v.1(DMLP 버전) 구현하기
연습문제
Chapter 08 컨볼루션 신경망
8.1 발상과 전개
8.2 컨볼루션 신경망의 구조
8.3 컨볼루션 신경망의 학습
8.4 컨볼루션 신경망 구현
[프로그램 8-1] LeNet-5로 MNIST 인식하기
[프로그램 8-2] 컨볼루션 신경망으로 자연 영상 인식하기
8.5 [비전 에이전트 6] 우편번호 인식기 v.2
[프로그램 8-3] 필기 숫자 인식기 성능 향상하기
[프로그램 8-4] 우편번호 인식기 v.2(CNN 버전)
8.6 딥러닝의 학습 알고리즘 향상
[프로그램 8-5] 증강된 영상 확인하기
8.7 전이 학습
[프로그램 8-6] ResNet50으로 자연 영상 인식하기
[프로그램 8-7] DenseNet121로 견종 인식하기
8.8 [비전 에이전트 7] 견종 인식 프로그램
[프로그램 8-8] 견종 인식 프로그램 구현하기
연습문제
Chapter 09 인식
9.1 인식이란
9.2 분류
9.3 검출
[프로그램 9-1] YOLO v3으로 정지 영상에서 물체 검출하기
[프로그램 9-2] YOLO v3으로 비디오에서 물체 검출하기
[프로그램 9-3] YOLO v3의 비디오 처리량 측정하기
9.4 분할
[프로그램 9-4] Oxford pets 데이터셋으로 U-net 학습하기
[프로그램 9-5] pixellib 라이브러리로 정지 영상을 의미 분할하기
[프로그램 9-6] pixellib 라이브러리로 비디오를 의미 분할하기
[프로그램 9-7] pixellib 라이브러리로 정지 영상을 사례 분할하기
[프로그램 9-8] pixellib 라이브러리로 비디오를 사례 분할하기
9.5 [비전 에이전트 8] 배경을 내 맘대로 바꾸기
[프로그램 9-9] pixellib 라이브러리를 활용해 내 맘대로 배경 바꾸기
9.6 사람 인식
연습문제
Chapter 10 동적 비전
10.1 모션 분석
[프로그램 10-1] Farneback 알고리즘으로 광류 추정하기
[프로그램 10-2] KLT 추적 알고리즘으로 물체 추적하기
10.2 추적
[프로그램 10-3] SORT로 사람 추적하기
10.3 MediaPipe를 이용해 비디오에서 사람 인식
[프로그램 10-4] BlazeFace로 얼굴 검출하기
[프로그램 10-5] 비디오에서 얼굴 검출하기
[프로그램 10-6] 얼굴을 장식하는 증강 현실 구현하기
[프로그램 10-7] FaceMesh로 얼굴 그물망 검출하기
[프로그램 10-8] 손 랜드마크 검출하기
10.4 자세 추정과 행동 분류
[프로그램 10-9] BlazePose를 이용한 자세 추정하기
연습문제
Chapter 11 비전 트랜스포머
11.1 주목
11.2 순환 신경망과 주목
11.3 트랜스포머
11.4 비전 트랜스포머
[프로그램 11-1] CIFAR-10을 분류하는 비전 트랜스포머 구현하기
[프로그램 11-2] CIFAR-10을 분류하는 비전 트랜스포머: 영상 확대와 데이터 증강으로 성능 향상하기
11.5 비전 트랜스포머 프로그래밍 실습
[프로그램 11-3] 허깅페이스의 ViT를 이용해 영상 분류하기
[프로그램 11-4] 허깅페이스의 DETR을 이용해 물체 검출하기
[프로그램 11-5] 허깅페이스의 CLIP을 이용해 영상 설명하기
11.6 트랜스포머의 특성
연습문제
Chapter 12 3차원 비전
12.1 3차원 기하와 캘리브레이션
12.2 깊이 추정
12.3 RGB-D 영상 인식
12.4 점 구름 인식
[프로그램 12-1] ModelNet 데이터셋에서 점 구름을 생성하고 디스플레이하기
[프로그램 12-2] PointNet을 이용해 점 구름 영상 분류하기
연습문제
Chapter 13 생성 비전
13.1 생성 모델 기초
[프로그램 13-1] (키, 몸무게)를 생성하는 생성 모델 제작하기
[프로그램 13-2] MNIST를 가우시안 모델링하고 샘플 생성하기
[프로그램 13-3] MNIST를 GMM으로 모델링하고 샘플 생성하기
13.2 오토인코더를 이용한 생성 모델
[프로그램 13-4] MNIST를 오토인코더로 모델링하고 샘플 생성하기
[프로그램 13-5] MNIST를 변이 오토인코더로 모델링하고 샘플 생성하기
13.3 생성 적대 신경망
[프로그램 13-6] fashion MNIST를 GAN으로 모델링하고 샘플 생성하기
[프로그램 13-7] CIFAR-10 자연 영상을 GAN으로 모델링하고 샘플 생성하기
13.4 확산 모델
13.5 생성 모델의 평가
13.6 멀티 모달 생성 모델: 언어와 비전의 결합
[프로그램 13-8] Stable Diffusion으로 샘플 생성하기
13.7 생성 모델은 예술이 될 수 있을까
연습문제
참고문헌
[온라인 부록](다운로드 주소: http://www.hanbit.co.kr/src/4548)
부록 A 파이썬 프로그래밍 기초
부록 B 선형대수 기초
부록 C 확률 기초
부록 D 확산 모델 프로그래밍 실습