위 블로그에 파이썬을 정리한 글을 참고하고 보면 좋다.
1. PyTorch에 대해 살펴보자
Facebook(현 Meta)의 AI Research 팀(FAIR) 이 개발한 딥러닝 프레임워크(Deep Learning Framework)다.
몇 년 전까지만 해도 Google이 개발한 TensorFlow 또한 머신러닝과 딥러닝을 위한 프레임워크로 쓰였으나 PyTorch가 배우고 사용하기가 쉬워서 PyTorch가 더 많이 쓰인다.
또한 Dynamic Graph(동적 그래프)를 사용하며 많은 최신 연구 논문이 PyTorch 기반으로 작성되고 연구 커뮤니티에서 활발히 사용되고 있다.
TensorFlow는 제한적인 영역에서 쓰이게 된다. 모바일이나 배포에 강점이 있는 TFLite와 같은 도구를 통해 특정 영역에서 유용하게 사용된다.
* 프레임워크(Framework)란? *
개발자들에게 미리 만들어진 도구와 기본 설계를 제공하여 소프트웨어 개발을 쉽게 만들어주는 도구이다.
특정 목적에 맞춰 설계 되었으며 자신이 원하는 프로젝트에 따라 적절한 Framework를 선택해 그 Framework에서 제공하는 규칙을 지킨다면 원하는 결과를 얻을 수 있다.
웹 개발 프레임워크, 프론트엔드 프레임워크, 데이터 분석 및 머신러닝 프레임워크, 모바일 앱 개발 프레임워크, 게임 개발 프레임워크 등이 있다. 데이터 분석 및 머신러닝 프레임워크의 대표 모델은 TensorFlow, PyTorch 등이 있다.
* 프레임워크와 라이브러리의 차이 *
- 프레임워크: 프로그램의 구조를 정의하고 개발자가 그 구조 내에서 코드를 작성하도록 가이드한다. 내가 개발을 할 때 프레임워크를 사용해 전체 애플리케이션의 뼈대를 잡고 필요한 기능을 추가하는 느낌이 강하다.
- 라이브러리: 특정 기능이나 작업을 수행하는 함수나 클래스를 모아둔 것이다. 내가 개발을 할 때 라이브러리의 기능을 활용하여 특정 작업을 처리한다는 느낌이 강하다.
* 프레임워크를 개발한 회사는 라이브러리 또한 독자적으로 제공하고 있나? *
프레임워크를 개발한 회사가 그 프레임워크와 함께 사용할 수 있는 독자적인 라이브러리를 제공하는 경우도 있지만, 모든 프레임워크가 독자적인 라이브러리를 가지고 있는 것은 아니다.
TensorFlow와 같은 경우는 텐서 연산, 모델 훈련, 데이터 전처리 등을 위한 다양한 독자적인 라이브러리를 포함한다.
Django는 웹 개발을 위한 프레임워크로, Python의 표준 라이브러리 및 오픈소스 라이브러리들과의 호환성이 우수하다. Django는 자체적으로 제공하는 몇 가지 유틸리티 라이브러리가 있지만, 독립적인 라이브러리와의 통합이 가능하다.
2. Tensor 다루기
- Tensor란?
딥러닝과 머신러닝에서 데이터를 표현하기 위한 기본 단위이다. 컴퓨터 과학의 관점에서 본 벡터는 숫자 자료를 배열한 것이다.
예를 들어 집값을 분석할 때, 집의 면적과 가격만 고려한다고 생각하자. 그렇다면 각 집은 한 쌍의 숫자로 표현된다. 첫 번째 숫자는 집의 면적은 두 번째 숫자는 가격을 가리킨다. 이 때, 순서가 바뀌면 데이터의 의미 또한 바뀌게 된다.
컴퓨터 과학에서는 벡터는 단순 배열을 멋들어지게 표현한 것이라 볼 수 있다. 데이터를 표현하기 위한 단위임을 알고 가자.
관련 예시는 친절하게 알려주시는 유튜버를 추천하겠다.
https://www.youtube.com/watch?v=m0qwxNA7IzI
* Natural Language Processing *
자연어 처리라는 뜻으로, 인간의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 기술을 의미
[위 링크는 Tensor 다루는 법, Dataset을 구조화하는 법, Model 구조화하는 법에 대해 정리하였다]
이제부터 구글 Colab을 사용하여 Tensor를 다루는 걸 봐보자. Google Colab은 클라우드 기반의 데이터 사이언스 및 머신러닝 플랫폼으로 머신러닝과 딥러닝 실습에 유용한 환경이다. 특별한 설치 없이 웹 브라우저에서 바로 사용할 수 있다.
Python 코드를 실행하고 TensorFlow, PyTorch 등의 딥러닝 프레임워크를 사용할 수 있고, GPU와 TPU를 무료로 제공하여 대규모 연산도 쉽게 수행할 수 있다.
'얼굴 인식에 대한 이해' 카테고리의 다른 글
얼굴 인식을 이해하고 서비스를 만드는 방법 (3) (4) | 2024.08.25 |
---|---|
컨볼루션(Convolusion)이란? (0) | 2024.08.12 |
얼굴 인식을 이해하고 서비스를 만드는 방법 (1) (0) | 2024.08.08 |