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

post-thumbnail

[ 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 필터가 엣지, 텍스처 등 특징을 추출하는 과정)

  • 📒 초기 비전 기술 vs 현대 비전 기술

📙 1.1.2 주요 활용 사례

  • 📒 자율주행, 얼굴 인식, OCR, 헬스케어 등

📗 1.2 개발 환경 세팅

📙 1.2.1 필수 라이브러리 설치

  • 📒 OpenCV, PIL, NumPy, Matplotlib

📙 1.2.2 개발 툴셋

  • 📒 Jupyter, VSCode, Colab 등 설정

📙 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 사용법

📙 4.2.3 Homography & Perspective Transform (AR, 드론 영상 분석에 활용)

📘 5. 객체 탐지 ( Object Detection )


📗 5.1 객체 탐지 개념

📙 5.1.1 Classification vs Detection

  • 📒 하나의 객체 분류 vs 여러 객체 탐지

📙 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)

  • 📒 YOLO 구조 및 주요 버전 비교 (v3 ~ v8)

  • 📒 pre-trained 모델 사용 실습

  • 📒 YOLO 최신 버전(v8) & Anchor-free 방식

📙 5.3.2 SSD / Faster R-CNN

  • 📒 특징 비교와 적용 시나리오

  • 📒 실습: TensorFlow Object Detection API 사용하기

📙 5.3.3 DETR (Transformer 기반 Detection)

📙 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 비교

  • 📒 SGD, Adam, RMSprop

📙 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 예제 주제 설정

  • 📒 CCTV 차량 감지, 공장 불량품 탐지

📙 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 아키텍처 학습 및 구현

  • 📒 Skip Connection 구조 학습

📙 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.1 DICOM 포맷 이해

  • 📒 의료 영상 저장 구조, 메타데이터 추출

📙 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.2.2 Medical 특화 증강 기법 (elastic transform 등)

📗 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.2.4 SegFormer, SwinUNet 최신 논문 기반 모델 적용

📗 14.3 응용 예제

📙 14.3.1 도심 건물 감지, 산불 탐지, 토지 분류

📙 14.3.2 SegFormer, SwinUNet 등 최신 모델 실습

📘 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 데모 배포

0개의 댓글