데이터 사이언스/computer vision

1장 기본 개념과 도구

Merware 2025. 2. 7. 14:56

1) 이미지 처리와 컴퓨터 비전

이미지 처리

아날로그와 디지털 이미지 처리가 있는데 디지털 이미지 처리의 메커니즘에선 픽셀의 역할을 이해하는 것이 중요

주로 디지털 이미지의 향상, 변형, 복원 등에 중점

컴퓨터 비전

기계가 시각적 데이터를 이해하고 분석하는 능력을 개발하는 과학 분야

이미지 처리에서 생성된 이미지를 분석하고 해석하는 데 초점

이미지 처리와 컴퓨터 비전의 연관성

두 분야의 관계는 순차적일 뿐만 아니라 상호 보완적인 관계이기도 함

2) 필요한 도구들

파이썬 핵심 문법

  • 변수: 할당된 값을 기반으로 변수의 유형을 동적으로 추론하는데, 이를 동적 타이핑(dynamic typing)이라고 함
    • 정수
    • 부동 소수점
    • 문자열
  • 연산자
    • 산술 연산자
    • 비교 연산자
    • 논리 연산자
    • 할당 연산자
  • 제어문
    • if 문
    • for 문
    • while 문
  • 예외 처리
    • try-exept 문
    • finally 문
  • 함수
    • 함수 기본형
    • 반환 값이 존재하는 함수
  • 클래스
    • 클래스 기본형
    • 캡슐화
    • 상속
    • 다형성
  • 모듈과 패키지
    • 모듈
    • 패키지
      1. 패키지 초기화 패키지를 임포트 할 때 init.py 파일이 실행됨, 이 파일은 패키지 수준에서 변수를 초기화하거나 패키지 수준에서 코드를 실행하는 데 사용할 수 음
      2. 패키지 구성 init.py 파일은 all 변수를 재정의하여 패키지가 API로 내보낼 모듈을 결정하고 다른 모듈은 내부에 유지할 수도 있음 예를 들어, 모듈1, 모듈2, 모듈3이 있지만 패키지를 가져올 때 모듈1과 모듈2만 액세스 할 수 있도록 하려면 init.py 파일에서 all = [’module1’, ‘module2’]로 설정하면 됨
      3. 편리한 임포트 init.py 파일을 사용하여 좀 더 편리하게 임포트할 수 있음 예를 들어 ,package.subpackage.module과 같은 심층 패키지 구조가 있는 경우 패키지의 init.py 파일에 .subpackage에서 가져오기 모듈을 추가할 수 있음 그 다음 import package.subpackage.module 대신 import package.module을 사용하면 됨

 

OpenCV

Open source Computer Vision의 약자로써, 위 분야의 작업에 최적화된 2500개 이상의 알고리즘을 제공함

  1. 다양한 이미지 및 비디오 처리
  2. 컴퓨터 비전 알고리즘
  3. 머신 러닝 통합(텐서플로, 파이토치와 연계 사용 가능)
  4. 크로스 플랫폼 지원(윈도우, 리눅스, macOS, 안드로이드, iOS 등에서 사용 가능)
  5. 오픈 소스 라이선스(아파치 라이선스로 무료)
  6. 높은 성능(초기 C++로 작성하여 빠른 속도, 효율적 메모리 관리 지원)
  7. 커뮤니티 지원(지속적인 개발과 지원)
  8. 다양한 언어 지원(C++, 파이썬, 자바, C# 등 지원)
  9. 광범위한 응용 분야(로봇, 자율 주행, 의료, 보안, 산업 등)

 

TensorFlow

구글 브레인 팀에서 개발한 오픈 소스 플랫폼, 개발자가 비교적 쉽게 머신 러닝 모델을 구축하고 배포할 수 있도록 지원함

  • 편의성
  • 고수준 API 지원
    • 케라스 API: 간단한 선형 회귀부터 복잡한 심층 신경망까지, 몇 줄 코드만으로 모델 설정 및 컴파일 가능
    • 또한 케라스는 모델 아키텍처를 자유롭게 정의할 수 있음 → 순차적 모델의 경우 층을 스택처럼 쉽게 차곡차곡 쌓아 올릴 수 있음(정보의 흐름이 입력에서 출력으로 한 방향인 모델에 유용)
  • 이식성 및 호환성
    • 다양한 환경과 기기에서 사용 가능
    • 텐서플로 라이트를 사용하면 모바일 및 에지 장치에서 실행할 수 있는 형식의 텐서플로 모델을 변환할 수 있음 → 온디바이스 머신 러닝 등 가능 → 서버 기반 솔루션에 비해 지연 시간 대폭 줄이기 가능
    • 텐서플로는 로컬 환경에 국한 x, 구글클라우드플랫폼(GCP), AWS, Azure와 같은 클라우드 플랫폼과 원활하게 통합되도록 설계
  • 확장성
    • 머신 러닝 프로젝트는 간단한 모델로 소규모로 시작하는 경우가 많지만 프로젝트가 발전함에 따라 모델이 커지고 데이터셋이 커지면서 더 많은 컴퓨팅 리소스를 필요로 할 수 있음
    1. CPU, GPU 및 TPU 확장성(GPU와 TPU는 일반적인 CPU보다 행렬 및 벡터 연산에 효율적)
    2. 분산 컴퓨팅(여러 머신에서 동시에 모델 훈련 가능)
    3. 대규모 모델 배포
  • 유연성
    • 고수준 API가 아닌 저수준 API(low level API)로 문제 복잡성과 가변성으로 인한 상황에 따라 맞게 사용 가능
    1. 사용자 정의 층
      1. 텐서플로는 특정 문제에 따라 고유한 층이 필요한 경우 번거로움 없이 제공함
    2. 사용자 정의 손실 함수
      1. 맞춤형 손실 함수를 통해 자유도 높은 모델 설계
    3. 새로운 최적화 전략 구현
      1. 경사 하강법 변형 함수들이 머신 러닝 환경을 지배하고 있지만, 특정 시나리오에서는 혁신적인 최적화 방법이 필요할 수 있음
    4. tf.data를 사용한 데이터 파이프라인
      1. 머신 러닝에서는 데이터가 가장 중요함
      2. 텐서플로의 tf.data API는 효율적인 데이터 파이프라인을 구축할 수 있는 유틸리티 세트를 제공함(모든 데이터 처리 가능)