분류 전체보기 87

얼굴 인식을 이해하고 서비스를 만드는 방법 (2)

위 블로그에 파이썬을 정리한 글을 참고하고 보면 좋다. 1. PyTorch에 대해 살펴보자Facebook(현 Meta)의 AI Research 팀(FAIR) 이 개발한 딥러닝 프레임워크(Deep Learning Framework)다. 몇 년 전까지만 해도 Google이 개발한 TensorFlow 또한 머신러닝과 딥러닝을 위한 프레임워크로 쓰였으나 PyTorch가 배우고 사용하기가 쉬워서 PyTorch가 더 많이 쓰인다. 또한 Dynamic Graph(동적 그래프)를 사용하며 많은 최신 연구 논문이 PyTorch 기반으로 작성되고 연구 커뮤니티에서 활발히 사용되고 있다. TensorFlow는 제한적인 영역에서 쓰이게 된다. 모바일이나 배포에 강점이 있는 TFLite와 같은 도구를 통해 특정 영역에서 유용하..

변수는 자료의 주소를 담는 박스임을 알면 Call-by-value, Call-by-reference, 얕은 복사, 깊은 복사 이런 거 껌이다

1. 변수가 저장되는 과정C언어에서 'a = 5;'와 같은 코드를 작성할 때, 'a'는 5라는 값을 저장하는 것이 아닌 메모리의 특정 위치에 5라는 값이 저장되는 정수형 변수이다. 'a'는 5를 담고있는 그릇, 박스라고 생각할 수 있다. 변수 'a'는 RAM의 스택 영역에 위치하며(전역 변수의 경우 Data Segment) 그 메모리 위치에 5라는 정수 값이 저장된다. * 변수 'a'에 5가 아닌 5가 저장된 주소가 저장되어 있다면 왜 주소로 출력되지 않을까? *프로그래밍 언어는 일반적으로 변수의 값을 읽고 쓸 수 있도록 설계되어 있다. 컴퓨터의 메모리는 데이터를 저장하는 장소로, 메모리 주소를 통해 접근된다. 메모리는 기본적으로 주소를 가지며, 이 주소를 통해 CPU는 실제 메모리에서 데이터를 읽거나 ..

파이썬 2024.08.13

컨볼루션(Convolusion)이란?

[위 글은 "3Blue1Brown"의 "그런데 컨볼루션이란 무엇입니까?"를 참고하여 제작하였다] 두 개의 다른 숫자 목록(혹은 두 개의 함수)을 결합하여 새로운 숫자 목록(혹은 새로운 함수)을 생성하기 위해서는 어떤 방법이 있을까? 더하기, 곱하기 등 다양하게 있지만 오늘은 컨볼루션(Convolusion)이라는 연산에 대해 알아보며 어떻게 활용되는지를 알아보자. 컨볼루션 자체는 단순한 연산이지만 이 연산을 활용하여 다양한 작업과 응용 분야에서 중요한 역할을 한다.  컨볼루션은 이미지 처리에 흔히 쓰이며 확률론의 핵심 구조이며, 미분 방정식을 푸는 데 많이 사용된다.  일단 확률론을 통해 컨볼루션이 이루어지는 과정을 시각적으로 이해해보자. 1. Convolusion 연산의 시각적 이해컨볼루션은 확률론에서 ..

얼굴 인식을 이해하고 서비스를 만드는 방법 (1)

인공지능은 이미지를 어떻게 인식하는가?1. 컴퓨터가 이미지를 숫자로 이해한다.컴퓨터는 이미지를 픽셀 단위로 처리한다. 각 픽셀은 색상 정보를 숫자로 표현한다.*픽셀(Pixel)*이미지를 구성하는 최소 단위이며 UHD 4K TV의 경우 화면 가로 3,840개 세로 2,160개인 총 830만 개의 픽셀로 이루어져 있다. *그리드(Grid)* 영어로는 '격자 형식의 무늬'라는 뜻으로 행과 열로 구성된 2차원 배열을 의미한다. 즉, 이미지는 픽셀들이 행과 열로 배열된 2차원 구조인 그리드 구조로 구성된다. 이미지는 이러한 2차원 배열 형태로 표현된다. 이미지는 일반적으로 픽셀의 그리드로 구성된다. 각 픽셀은 다양한 형태로 표현될 수 있고 이미지의 용도와 필요에 따라 적절한 값을 갖는다. (ex. 그리이스케일 이..

3장 프로그램의 구조를 쌓는다! 제어문

[위 글은 "점프 투 파이썬(박응용 지금/위키독스)", 조코딩 "최신 파이썬 코딩 무료 강의 | 2024 점프 투 파이썬 통합본"을 참고하여 만들었습니다.] 1. if 문조건에 따라 프로그램의 흐름을 제어하기 위해 if 문을 사용한다. 다음은 if와 else를 사용한 조건문의 기본 구조의 예시이다. money에 True를 대입했으므로 money는 참이게 된다. 따라서 '택시를 타고 가라'가 출력된다. - 조건문이란 무엇인가?if 조건문에서 조건문은 참과 거짓을 판단하는 문장을 말한다. 조건문을 작성할 때 사용하는 연산자들은 다양한 조건을 결합하거나 비교할 때 사용한다. 연산자들에 대해 알아보자. 비교 연산자(Comparison Operators)비교 연산자는 두 값을 비교하여 참(True) 또는 거짓(F..

파이썬 2024.08.07

프로그래밍 패러다임

* 프로그램을 정리하는 다양한 패러다임 *1) 절차 지향 프로그래밍2) 객체 지향 프로그래밍3) 함수형 프로그래밍4) 논리형 프로그래밍5) 선언현 프로그래밍6) 반응형 프로그래밍7) 구조적 프로그래맹 https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84 프로그래밍 패러다임 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 프로그래밍 패러다임(programming paradigm)은 프로그래밍의 패러다임 형태이다. 소프트웨어 공학을 할 때의 패러다임 형태인 방법론과 비교된다. 프로그래밍 패러ko.wikipedia.org  https://vel..

카테고리 없음 2024.08.03

2장 파이썬 프로그래밍의 기초, 자료형(튜플, 딕셔너리, 집합, 불, 변수)-(3)

[위 글은 "점프 투 파이썬(박응용 지금/위키독스)", 조코딩 "최신 파이썬 코딩 무료 강의 | 2024 점프 투 파이썬 통합본"을 참고하여 만들었습니다.] 4. 튜플(tuple) 자료형   튜플(tuple)은 몇 가지만 제외하고 리스트와 비슷하다. 리스트와 다른 점은 아래와 같다.리스트는 [], 튜블 ()으로 둘러싼다.리스트는 요솟값의 생성, 삭제, 수정이 가능하지만, 튜플은 요값을 바꿀 수 없다.리스트는 Mutable, 튜플은 Immutable * muttable과 immutable의 차이 *Python에서 두 개념의 차이는 객체의 변경 가능성을 나타낸다. 데이터의 불변성을 보장한다는 특징을 가진다.여기서 '객체'란 데이터와 그 데이터에 관련된 동작을 하나로 묶은 것을 의미한다. 이는 클래스로 구현한..

파이썬 2024.08.03

2장 파이썬 프로그래밍의 기초, 자료형(리스트)-(2)

[위 글은 "점프 투 파이썬(박응용 지금/위키독스)", 조코딩 "최신 파이썬 코딩 무료 강의 | 2024 점프 투 파이썬 통합본"을 참고하여 만들었습니다.] 3. 리스트 자료형리스트 자료형은 Python에서 다루는 자료형 중 하나이며 여러 이유가 있겠지만 여러 값을 하나의 변수에 저장할 수 있다는 범으로 인해 변수 하나만으로도 여러 값을 다룰 수 있어 코드를 효율적으로 작성할 수 있다는 점이 유용하다. - 리스트 선언=> 리스트 안에는 어떠한 자료형도 포함할 수 있다. - 리스트의 인덱싱과 슬라이싱리스트 또한 문자열처럼 인덱싱과 슬라이싱이 가능하다.리스트의 인덱싱리스트의 슬라이싱다차원 리스트 인덱싱다차원 리스트에서는 중첩된 리스트에 접근하기 위해 여러 인덱스를 사용한다. - 리스트 연산하기문자열과 마찬가..

파이썬 2024.08.01

프로그램 실행 시 알아야 할 기본적인 메모리 구조

메모리는 주기억장치(RAM)와 보조기억장치(HDD, SDD)로 나뉜다보조기억장치는 저장 공간이 크지만 프로그램 실행을 위해 data를 가져오는 속도가 느리기 때문에 실행 속도가 저하된다. 이를 위해 프로그램 실행 시 필요한 data만 RAM에 load하여 CPU에 빠르게 접근할 수 있도록 한다. RAM이 없다면 CPU가 매번 HDD, SSD에서 data를 읽어야 하므로 비효율적이다. 그렇기 때문에 프로그램을 효율적으로 실행하기 위해 RAM이 필요하다.RAM의 구성 요소 (Memory Segmentation)Code segment실행할 프로그램의 기계어 코드( 작성한 코드의 Binary code 형태, 예: 10110000 01100001 11001010 ... )가 저장되며, 보통 Read-only로 설..

문자열 리터럴(string literal)에 대한 이해

1. 문자열을 받는 두 가지 예시이 소스 코드를 실행한다면위와 같은 결과가 나온다.첫 번째 결과는 sentence라는 문자열을 str이라는 배열에 집어 넣고 있기 때문에 이해할 수 있다.두 번째 결과는 sentence는 문자열이지만 pstr는 char형을 가리키는 포인터이므로 char형 변수의 주소값이 들어가야 한다. 여기서 sentence는 특정한 주소값으로 사용되고 있음을 의심해볼 수 있다.실제로 sentence를 출력하면이와 같이 특정한 수가 출력됨을 알 수 있다.  2. 포인터로 문자열을 받는 것은 읽기 전용?위와 같은 소스 코드를 돌릴 때도 pstr[0] = "M"에서 오류가 발생함을 확인할 수 있다.즉, pstr은 읽기만 가능하고 쓰기가 불가능하단 얘기가 될 수 있다.  3. Text Segm..