[ AI Eng _ Computer Vision ] Computer Vision 공부 순서 정리.

▽ Computer Vision 공부 순서 정리.
목 차
1. 컴퓨터 비전 개요와 준비 환경
2. 이미지 처리 기초
3. 영상 처리와 실시간 스트리밍
4. 컴퓨터 비전 핵심 알고리즘
5. 객체 탐지 ( Object Detection )
6. 이미지 분류 ( Classification )
7. 딥러닝 기반 컴퓨터 비전 심화
8. 이미지 분류 프로젝트 실습 (Classification)
9. 객체 탐지 프로젝트 실습 ( Object Detection )
10. 이미지 분할 프로젝트 실습 ( Segmentation)
11. 얼굴 인식 기반 프로젝트
12. OCR 프로젝트 실습 ( 문자 인식 )
13. 의료 영상 분석
14. 위성 이미지 처리
15. 비전 + 자연어 결합
16. 배포 및 제품화 전략
17. 실전 포트폴리오 구성

📘 0. 사전 지식 & 기초 다지기 (신규 추가 제안)
📗 0.1 데이터와 컴퓨터의 기본 원리
📙0.1.1 컴퓨터가 이미지를 보는 방법
-
📒 비트, 바이트, 행렬로 보는 이미지
-
📒 JPEG, PNG, BMP 파일 구조
📙0.1.2 숫자로 표현되는 세계
-
📒 텍스트 → ASCII/유니코드
-
📒 이미지 → 픽셀 값
-
📒 소리 → 샘플링
📗 0.2 수학 기초 직관
📙0.2.1 선형대수 직관
📙0.2.2 확률과 통계 기초
-
📒 확률 분포 = 예측 불확실성 표현
-
📒 평균/분산/표준편차 직관
📙0.2.3 미적분 기초
-
📒 변화율(미분) = 학습 속도
-
📒 적분 직관 = 누적/영역 계산
👉 "수식 암기"가 아니라 "시각적 직관" 중심
📗 0.3 프로그래밍 기초 (Python 중심)
📙0.3.1 Python 문법 기초
📙0.3.2 데이터 다루기 기본기
-
📒 NumPy 배열 연산
-
📒 Pandas로 CSV 불러오기
📙0.3.3 시각화 기초
- 📒 Matplotlib, Seaborn으로 데이터 시각화
📗 0.4 AI & CV 학습을 위한 사고 전환
📙0.4.1 "문제를 데이터로 바꾸기"
- 📒 예시: "고양이 사진을 구분한다" = 픽셀 → 숫자 → 패턴 찾기
📙0.4.2 AI의 오해와 진실
- 📒 AI는 "스스로 생각하는 존재"가 아니라 "패턴을 찾는 도구"
📙0.4.3 작은 실습
- 📒 Colab에서 "고양이 vs 개" 데이터 불러와서 간단히 출력해보기

📘 1. 컴퓨터 비전 개요와 준비 환경
📗 1.1 컴퓨터 비전이란?
📙 1.1.1 정의와 역사
- 📒 인공지능과 컴퓨터 비전의 관계 + 어떤 수학 개념이 CV의 핵심 원리로 작동하는가
📌 보강 포인트 예시
선형대수와 CV 관계
이미지 → 행렬 (픽셀값)
필터(커널) → 작은 행렬
Convolution 연산 = 필터와 이미지 행렬의 곱셈 → 특징 추출
미적분과 CV 관계
역전파(Backpropagation)에서 편미분을 활용해 가중치 업데이트
확률과 CV 관계
Softmax로 클래스 확률 분포 계산
예시 그림:
(Convolution 필터가 엣지, 텍스처 등 특징을 추출하는 과정)
📙 1.1.2 주요 활용 사례
- 📒 자율주행, 얼굴 인식, OCR, 헬스케어 등

📗 1.2 개발 환경 세팅
📙 1.2.1 필수 라이브러리 설치
- 📒 OpenCV, PIL, NumPy, Matplotlib
📙 1.2.2 개발 툴셋
📙 1.2.3 실습 데이터셋 준비
-
📒 Kaggle, COCO, ImageNet 등 다운로드 방법
-
Colab / Kaggle Notebook 기반 GPU 활용
-
Colab에서 CUDA 버전 확인 및 PyTorch 호환성 체크 (torch.version.cuda)

📘 2. 이미지 처리 기초
📗 2.1 이미지의 구조 이해
📙 2.1.1 픽셀, 색상 채널, 해상도 개념
- 📒 RGB, Grayscale, HSV의 차이
📙 2.1.2 OpenCV로 이미지 불러오기 및 시각화
- 📒 imread(), imshow(), imwrite() 사용법
📙 2.1.3 이미지 포맷 & 메타데이터 (PNG vs JPEG, Exif 정보 활용)

📗 2.2 기본 전처리 기법
📙 2.2.1 리사이징, 크롭, 회전, 필터링
- 📒 resize(), crop(), rotate(), blur()
📙 2.2.2 밝기/대비 조정, 컬러 변환
- 📒 Histogram Equalization, cvtColor()
📙 2.2.3 모폴로지 연산 (Erosion, Dilation, Opening, Closing → OCR/의료 데이터 활용)
📙 2.2.4 푸리에 변환 기반 필터링 (노이즈 제거, 주파수 영역 처리)

📘 3. 영상 처리와 실시간 스트리밍
📗 3.1 영상 파일 다루기
📙 3.1.1 비디오 읽고 쓰기
- 📒 VideoCapture(), VideoWriter()
📙 3.1.2 프레임별 처리

📗 3.2 웹캠 실시간 스트리밍
📙 3.2.1 실시간 객체 추적의 기초
📙 3.2.2 FPS 측정과 최적화
📙 3.2.3 멀티스레딩/큐 기반 프레임 처리 최적화(Python Threading, OpenCV VideoCapture 버퍼 관리)

📘 4. 컴퓨터 비전 핵심 알고리즘
📗 4.1 엣지 검출과 경계선 찾기
📙 4.1.1 Canny Edge Detection
- 📒 가우시안 블러 → 그레디언트 → 임계값 설정
📙 4.1.2 Contour 추출
- 📒 findContours(), drawContours()

📗 4.2 특징점 검출 및 매칭
📙 4.2.1 SIFT, SURF, ORB
📙 4.2.2 Feature Matching
- 📒 BFMatcher, FLANNMatcher 사용법

📘 5. 객체 탐지 ( Object Detection )
📗 5.1 객체 탐지 개념
📙 5.1.1 Classification vs Detection
📙 5.1.2 Bounding Box 개념

📗 5.2 전통적 객체 탐지 기법
📙 5.2.1 Haar Cascade Classifier
- 📒 얼굴 인식 실습: OpenCV Cascade 적용
📙 5.2.2 HOG + SVM
- 📒 HOG(Histogram of Oriented Gradients) 개념 및 구현

📗 5.3 딥러닝 기반 탐지
📙 5.3.1 YOLO (You Only Look Once)
📙 5.3.2 SSD / Faster R-CNN
📙 5.3.4 TensorRT/ONNX 변환 → 실시간 최적화

📘 6. 이미지 분류 ( Classification )
📗 6.1 분류 개념 이해
📙 6.1.1 Supervised Classification
📙 6.1.2 Multi-Class vs Binary

📗 6.2 전통 방식 분류
📙 6.2.1 k-NN, SVM을 활용한 이미지 분류
📙 6.2.2 PCA를 이용한 차원 축소

📗 6.3 딥러닝 기반 분류
📙 6.3.1 CNN (Convolutional Neural Network)
- 📒 Convolution → Pooling → Flatten → Dense 구조
📙 6.3.2 실습: 간단한 CNN으로 MNIST/ CIFAR-10 분류
- 📒 PyTorch or TensorFlow 기반 모델 구현

📙 6.3.3 ResNet & EfficientNet 심화 구조 학습
📙 6.3.4 Grad-CAM 기반 모델 해석
📘 7. 딥러닝 기반 컴퓨터 비전 심화
📗 7.1 Transfer Learning & Fine-tuning
📙 7.1.1 사전 학습 모델 활용
- 📒 VGG, ResNet, EfficientNet 사용법
📙 7.1.2 Layer freeze 전략

📗 7.2 데이터 증강과 오버피팅 방지
📙 7.2.1 Data Augmentation
- 📒 flip, rotation, crop, color jitter 등
📙 7.2.2 Regularization 기법
- 📒 Dropout, L2, Early stopping
📙 7.2.3 Mixup, CutMix 등 최신 증강 기법

📗 7.3 학습 최적화 기법
📙 7.3.1 Learning Rate Scheduling
- 📒 StepLR, ReduceLROnPlateau
📙 7.3.2 Optimizer 비교
📙 7.3.3 Mixed Precision Training (AMP) 적용
📙 7.3.4 Gradient Clipping

📘 8. 이미지 분류 프로젝트 실습 (Classification)
📗 8.1 프로젝트 개요 및 설계
📙 8.1.1 문제 정의 및 목적 설정
- 📒 고양이 vs 개, 음식 종류 분류, 질병 진단 등
📙 8.1.2 데이터셋 수집 및 전처리
- 📒 Kaggle, Open Images 활용 / 이미지 정규화, 리사이징

📗 8.2 모델 설계 및 학습
📙 8.2.1 기본 CNN 모델 구성
- 📒 Conv2D, MaxPooling, Dense 조합 구성
📙 8.2.2 전이 학습 적용
- 📒 VGG16, ResNet50 등 사전 학습 모델 활용

📗 8.3 평가 및 개선
📙 8.3.1 정확도, 혼동 행렬 시각화
- 📒 classification_report, confusion_matrix
📙 8.3.2 하이퍼파라미터 튜닝
- 📒 learning rate, batch size 조정

📘 9. 객체 탐지 프로젝트 실습 ( Object Detection )
📗 9.1 프로젝트 기획
📙 9.1.1 예제 주제 설정
📙 9.1.2 YOLO / SSD / Faster-RCNN 모델 비교

📗 9.2 데이터 준비 및 Annotation
📙 9.2.1 라벨링 툴 사용
- 📒 LabelImg, Roboflow 등 도구 사용법
📙 9.2.2 Pascal VOC / COCO 형식 이해

📗 9.3 학습 및 예측
📙 9.3.1 YOLOv5 적용 및 학습 진행
📙 9.3.2 성능 평가 및 NMS 적용

📘 10. 이미지 분할 프로젝트 실습 ( Segmentation)
📗 10.1 프로젝트 개요
📙 10.1.1 의료 영상 세그멘테이션, 배경 제거 등 주제 선정
📙 10.1.2 이미지 분할 기본 개념 복습 (Semantic vs Instance)

📗 10.2 모델 구축
📙 10.2.1 U-Net 아키텍처 학습 및 구현
📙 10.2.2 데이터 전처리 및 Mask 시각화

📗 10.3 평가 및 성능 개선
📙 10.3.1 IoU, Dice Score 평가 지표 활용
📙 10.3.2 데이터 증강 및 앙상블 기법 적용

📘 11. 얼굴 인식 기반 프로젝트
📗 11.1 실습 아이디어 제안
📙 11.1.1 얼굴 출입 관리 시스템
📙 11.1.2 얼굴 기반 감정 인식 앱

📗 11.2 기술 적용
📙 11.2.1 OpenCV로 얼굴 탐지 (Haar, DNN)
📙 11.2.2 딥러닝 기반 얼굴 인식 (FaceNet, ArcFace)
📙 11.2.3 FaceNet / ArcFace + Triplet Loss 구조 심화

📗 11.3 인증 정확도 향상
📙 11.3.1 Euclidean Distance 기반 비교
📙 11.3.2 얼굴 정렬, 전처리 고도화
📙 11.3.3 얼굴 정렬(Alignment) 기법 (Dlib, MTCNN)

📘 12. OCR 프로젝트 실습 ( 문자 인식 )
📗 12.1 프로젝트 주제 선정
📙 12.1.1 명함 인식기, 자동차 번호판 인식기
📙 12.1.2 PDF 내 문서 추출 자동화

📗 12.2 OCR 기술 스택 학습
📙 12.2.1 Tesseract 사용법 및 한글 OCR 적용
📙 12.2.2 딥러닝 기반 OCR 모델 (CRNN, TrOCR)
📙 12.2.3 딥러닝 기반 OCR 최신 모델 (TrOCR, Donut)
📙 12.2.4 문서 레이아웃 인식 모델 (LayoutLM)

📗 12.3 시스템 구현
📙 12.3.1 사전 이미지 전처리
- 📒 thresholding, morphology 등 적용
📙 12.3.2 인식 결과 후처리

📘 13. 의료 영상 분석
📗 13.1 의료 이미지 데이터 기초
📙 13.1.2 주요 공개 의료 데이터셋
- 📒 ChestX-ray, LUNA16, BraTS, APTOS 등 소개
📙 13.1.3 Explainable AI (Grad-CAM, SHAP)
📙 13.1.4 Federated Learning 개념 (의료 데이터 프라이버시 대응)

📗 13.2 영상 전처리 및 증강
📙 13.2.1 정규화, 노이즈 제거, 이미지 정렬

📗 13.3 질병 분류 및 세그멘테이션
📙 13.3.1 폐렴, 종양, 당뇨성 망막병증 분류 모델
📙 13.3.2 MRI 뇌종양 세그멘테이션 (U-Net 활용)

📗 13.4 임상 적용 고려사항
📙 13.4.1 민감도/특이도, False Positive/Negative 분석
📙 13.4.2 Explainable AI 적용 (Grad-CAM 등)

📘 14. 위성 이미지 처리
📗 14.1 위성 영상 이해
📙 14.1.1 위성 영상의 구조 (멀티스펙트럼, 해상도 등)
📙 14.1.2 대표 위성 이미지 데이터셋 (DeepGlobe, SpaceNet)

📗 14.2 데이터 전처리 및 처리 기법
📙 14.2.1 클라우드 제거, 밴드 정리, 정규화
📙 14.2.2 이미지 정합(Geo Alignment), 타일링 처리
📙 14.2.3 Google Earth Engine / SentinelHub 활용

📗 14.3 응용 예제
📙 14.3.1 도심 건물 감지, 산불 탐지, 토지 분류

📘 15. 비전 + 자연어 결합
📗 15.1 멀티모달 학습 개요
📙 15.1.1 멀티모달 학습 구조 이해
📙 15.1.2 이미지 → 텍스트 / 텍스트 → 이미지 모델 흐름

📗 15.2 VQA (Visual Question Answering)
📙 15.2.1 VQA 데이터셋 소개 및 구조
📙 15.2.2 CLIP, BLIP 모델 적용 및 학습
📙 15.2.3 CLIP, BLIP-2, LLaVA 구조 심화
📙 15.2.4 OCR + GPT 기반 문서 요약/QA 시스템

📗 15.3 OCR + NLP 결합 실습
📙 15.3.1 OCR 추출 + GPT 기반 질의 응답 시스템
📙 15.3.2 문서 요약/하이라이팅 자동화 서비스 예제

📗 15.4 실전 예제
📙 15.4.1 보험 서류 자동 처리 시스템
📙 15.4.2 논문 이미지 + 텍스트 질의 시스템

📘 16. 배포 및 제품화 전략
📗 16.1 모델 경량화
📙 16.1.1 모델 압축 (Pruning, Quantization)
📙 16.1.2 Knowledge Distillation 적용

📗 16.2 ONNX & TensorRT
📙 16.2.1 ONNX 모델 변환 및 추론
📙 16.2.2 TensorRT로 GPU 추론 속도 최적화

📗 16.3 모바일/엣지 배포 최적화 (TensorFlow Lite, NCNN)
📙 16.3.1 TensorFlow Lite, CoreML, NCNN 등 적용
📙 16.3.2 Edge Device (Jetson Nano, Raspberry Pi) 실전 테스트

📗 16.4 실전 서비스 배포
📙 16.4.1 Flask/FastAPI 서버 구축
📙 16.4.2 Docker, Kubernetes 배포 및 REST API 연동
📙 16.4.3 gRPC / WebSocket 기반 실시간 스트리밍 API

📘 17. 실전 포트폴리오 구성
📗 17.1 프로젝트 선정 및 구성 전략
📙 17.1.1 채용 트렌드 기반 기술 선정
📙 17.1.2 실용성 있는 과제 기획 (문제정의, 사용자 경험 고려)

📗 17.2 포트폴리오 예시
📙 17.2.1 의료 진단 자동화 웹 서비스
📙 17.2.2 위성 기반 재해 감지 알림 시스템
📙 17.2.3 OCR 기반 전자문서 이해 & 자동분류기

📗 17.3 문서화 및 발표 준비
📙 17.3.1 기술 스택, 구조, 데이터 흐름 정리
📙 17.3.2 Notion, GitHub, PDF 포트폴리오 제작법
📙 17.3.3 시연 영상 및 Demo 페이지 준비
📙 17.3.4 아키텍처 다이어그램 작성법 (Mermaid, Draw.io)
📙 17.3.5 HuggingFace Spaces / Streamlit 데모 배포
