본문 바로가기
728x90

분류 전체보기60

파이토치 모델 저장 파이토치 모델 저장은 주로 torch.save(model.state_dict(), PATH)를 사용하여 가중치(state_dict)만 저장하는 방식이 권장된다.이 방식은 용량이 작고 유연하며, 추론 시 model.load_state_dict()로 불러온다. 모델 전체를 저장(torch.save(model, PATH))할 수도 있으나, 클래스 구조 의존성 때문에 권장되지 않는다. 1. State Dict 저장 (가중치만)가장 권장되는 방식으로, 파라미터만 저장하므로 모델 클래스 구조가 정의되어 있어야 한다. 저장: torch.save(model.state_dict(), 'model.pth')불러오기:model = TheModelClass() # 모델 클래스 정의 필요model.load_state_dict.. 2026. 4. 30.
Spring boot 핵심 요약 HTTP 메서드 & REST API 설계 원칙메서드 용도 URL 예시GET조회/api/board/{id}POST생성/api/boardPUT전체 수정/api/board/{id}PATCH부분 수정/api/board/{id}DELETE삭제/api/board/{id} Spring 주요 어노테이션 정리어노테이션의미@Controller뷰(.html) 반환@RestControllerJSON 응답 API@GetMapping, @PostMapping요청 메서드 바인딩@RequestParamURL 쿼리 파라미터@PathVariable경로 변수@RequestBody요청 본문(JSON) 객체 매핑@AutowiredBean 주입@Service비즈니스 계층@Repository, @MapperDB 접근 계층 DTO & Enti.. 2025. 6. 23.
[논문리뷰]CLIP (Learning Transferable Visual Models From Natural Language Supervision) 앞서 작성한 Constrative Learning를 기반으로 CLIP 논문 리뷰를 진행하겠습니다.2024.11.12 - [DL] - Contrastive Learning  CLIP을 설명하기에 앞서 이전의 모델들은 어떤 단점이 있는지 알아보겠습니다.  기존 DL의 단점데이터 세트를 구축하기 위해 각 이미지마다 라벨링하는데 많은 시간과 비용을 사용학습된 데이터 구성이 아닐 경우 새로운 데이터 세트를 빌드하고 output head를 추가하고 모델을 fine tuning하는 과정을거쳐야 함실제 배포하면 벤치마크보다 성능이 훨씬 낮은 경우가 많음(일반화 문제)-> 벤치마크에서의 높은성능을 위한 최적화 때문 CLIP새로운 데이터가 들어왔을 떄 추가적인 모델 학습이 필요 없음Text encoder에 이미지에 대한 .. 2024. 11. 13.
Contrastive Learning survey 논문인 "Contrastive Rerpesentation Learning: A Framework and Review"를 참고하여 Contrastive Learning에 대한 글을 작성합니다.Contrastive Learning레이블링 없이 특정 Embeding Network를 통해 학습하는 self-supervised Learning 방법론 중 하나입력 sample 간의 대조를 통해 학습된 representation space 상에서 비슷한 데이터는 가깝게( θ(I+) ), 다른 데이터는 멀게 ( θ(I-) ) 존재하도록 representation space를 학습하여 Loss 계산장점다른 Task로 Fine-tuning을 수행할 때 모델 구조 변경 없이 학습이 가능학습이 간단하면서 효과적임.. 2024. 11. 12.
자료구조 기초 / BFS & DFS 1. 자료구조 기초 1-1. 스택 (Stack) 선입후출, 입구 == 출구. 컴퓨터에서 함수 호출 시 실행되는 구조와 유사함 list로 구현 가능 # 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() stack = []# # 스택 생성 stack.append(5) # 5 stack.append(2) # 5 2 stack.append(3) # 5 2 3 stack.append(7) # 5 2 3 7 stack.pop() # 5 2 3 stack.append(1) # 5 2 3 1 stack.append(4) # 5 2 3 1 4 stack.pop() # 5 2 3 1 print(stack) # 5 2 3 1 # 뒤집어 출력 print(stack[::.. 2024. 4. 6.
구현 알고리즘 (Implementation Algorithm) 구현(Implementation) 코딩 테스트에서 구현이란 머릿 속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 구현 문제는 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제이다. 구현 문제를 풀기 위해서는 프로그래밍 언어의 문법을 정확히 알고 있어야 한다. 또한 적절한 라이브러리를 찾아서 사용해야 한다. 시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용된다. 2차원 행렬(Matrix) 시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용된다. 문제 1 : 상하좌우 난이도: 하 | 제한시간: 15분 | 시간제한: 2초 | 메모리 제한: 128MB 여행가 A는 N x N 크기의 정사각형 공간 위에 있습니다. 이 공간은 1 x 1 크기의 정사각형으.. 2024. 4. 3.
그리디 알고리즘 (Greedy Algorithm) 그리디 알고리즘 현재 상황에서 지금 당장 좋은 것만 고르는 방법 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함 그리디 해법은 그 정당성 분석이 중요함 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토 문제 1. 거스름돈 거스름돈으로 사용한 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소의 개수를 구하여라. 풀이 # 거스름돈 n = 1260 count = 0 # 큰 단위의 화폐부터 coin_types = [500, 100, 50, 10] for coin in coin_types: count += n // coin # 거슬러 줄 .. 2024. 4. 1.
실전에서 유용한 표준 라이브러리 cotinue 키워드 global 키워드 1. 실전에서 유용한 표준 라이브러리 내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공한다. 그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다. itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공한다. 특히 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용된다. 모든 경우의 수를 고려해야 하는 경우에서 많이 활용된다. 완전 탐색 유형 문제에서 소스 코드를 간결하게 만들어준다. heapq : 힙(Heap) 자료구조를 제공한다. 일반적으로 우선순위 큐 기능을 구현하기 위해 사용된다. 최단경로 알고리즘에서 많이 활용된다. bisect : 이진 탐색(Binary Search) 기능을 제공한.. 2024. 4. 1.
파이썬 문법 - 입출력 1. 입력 1-1. 자주 사용되는 표준 입력 방법 input( ) : 한 줄의 문자열을 입력 받는 함수 map( ) : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용 ex) 공백을 기준으로 구분된 데이터를 입력 받을 때 list(map(int, input().split())) ex) 공백을 기준으로 구분된 데이터의 개수가 많지 않을 때 a, b, c = map(int, input().split()) 1-2. 빠르게 입력 받기 정수를 받는 경우 import sys a = int(sys.stdin.readline()) a1,a2,a3 = map(int,sys.stdin.readline().split()) data = list(map(int,sys.stdin.readline().split())) >.. 2024. 4. 1.
파이썬 문법 - 자료형(리스트, 튜플, 딕셔너리, 집합) 1. 리스트 리스트 컴프리헨션 2차원 리스트를 초기화할 때 효과적으로 사용 특히 N X M 크기의 2차원 리스트를 한 번에 초기화 해야 할 때 유용 Good : array = [[0] * m for _ in range(n)] 아래 bad 코드 : 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식 bad : array = [[0]*m] * n 리스트 관련 기타 메서드 2. 튜플 리스트와 유사하지만 다음과 같은 문법적 차이가 있음 튜플은 한 번 선언된 값을 변경할 수 없음 리스트는 대괄호 []를 이용하지만, 튜플은 소괄호 ()를 이용 튜플은 리스트에 비해 상대적으로 공간 효율적 튜플을 사용하면 좋은 경우 서로 다른 성질의 데이터를 묶어서 관리해야 할 때 최단 경로 알고리즘에서는 (비용, 노트 번호.. 2024. 4. 1.
알고리즘 성능 평가 빅오 표기법 및 알고리즘 실행 시간 알고리즘 문제 해결 과정 1. 지문 읽기 및 컴퓨터적 사고 2. 요구사항(복잡도) 분석 3. 문제 해결을 위한 아이디어 찾기 4. 소스코드 설계 및 코딩 요구사항에 따라 적절한 알고리즘 설계하기 문제에서 가장 먼저 확인해야 하는 내용은 시간제한(수행 시간 요구사항)이다. 시간 제한이 1초인 문제를 만났을 때, 일반적인 기준은 다음과 같다. 𝑁의 범위가 500인 경우: 시간 복잡도가 O(N3) 인 알고리즘을 설계하면 문제를 풀 수 있다. 𝑁의 범위가 2,000인 경우: 시간 복잡도가 O(N2) 인 알고리즘을 설계하면 문제를 풀 수 있다. 𝑁의 범위가 100,000인 경우: 시간 복잡도가 O(NlogN) 인 알고리즘을 설계하면 문제를 풀 수 있다. 𝑁의 범위가 10,000.. 2024. 4. 1.
OpenCV 영상처리 - 특정 색상 영역 추출(cv2.inRange) RGB 색 공간에서 녹색 영역 추출하기 HSV 색 공간에서 녹색 영역 추출하기 밝기가 어두운 영상에서의 특정 영역 추출 RGB 색 공간에서 녹색 영역 추출하기 * RGB 색 공간에서 특정 영역을 추출 하는 경우 밝기에 영향을 받음 HSV 색 공간에서 녹색 영역 추출하기 * HSV 색 공간에서는 밝기에 비교적 영향을 받지 않는다. 특정 범위 안에 있는 행렬 원소 검출 cv2.inRange(src, lowerb, upperb, dst=None) -> dst src : 입력 행렬 lowerb : 하한 값 행렬 또는 스칼라 upperb : 상한 값 행렬 또는 스칼라 dst : 입력 영상과 같은 크기의 마스크 영상. (numpy.uint8) 범위 안에 들어가는 픽셀은 255, 나머지는 0으로 설정. src = c.. 2024. 3. 18.
OpenCV 영상처리 - 히스토그램 평활화(cv2.equalizeHist) 히스토그램 평활화(Histogram equalization) 히스토그램이 그레이스케일 전체 구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법 히스토그램 균등화, 균일화, 평탄화로 불리기도 한다. 히스토그램 평활화를 위한 변환 함수 구하기 히스토그램 함수 구하기 : h(g)=Ng​ 정규화된 히스토그램 함수 구하기 : p(g)=w×hh(g)​ 누적 분포 함수(cdf) 구하기 : cdf(g)=∑0≤i≤g​p(i) 변환 함수 : dst(x, y) = round(cdf(src(x, y)) x Lmax 히스토그램 평활화 계산방법 히스토그램 평활화와 히스토그램 누적 분포 함수와의 관계 히스토그램 평활화 함수 cv2.equalizeHist(src, dst=None) -> dst src : 입력 영상. 그레이.. 2024. 3. 18.
OpenCV 영상처리 - 명암비 조절, cv2.normalize 명암비(contrast) 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이 기본적인 명암비 조절 함수 s를 0.5로 두었을 때 픽셀의 최대값이 128로 낮아지며 영상이 어두워짐 s를 2로 두었을 때 픽셀의 최대값은 255으로 같지만 전체적으로 포화되는 부분이 많아짐 효과적인 명암비 조절 함수 위 함수를 통해 어느 한 쪽의 색으로 치우치지 않고 균일하게 명암비를 조절할 수 있다. * 명확히 정해진 명암비 조절 함수는 없고 내가 알맞게 조절하여 사용해야 함. 기본적인 명암비 조절 예제 src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSACLE) alpha = 1.0 dst = np.clip((1+alpha)*src - 128*alpha, 0, 255).astype(np... 2024. 3. 18.
OpenCV 영상처리 - 히스토그램 분석(cv2.calcHist) 히스토그램 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것 예를 들어, 그레이스케일 영상에서 각 그레이스케일 값에 해당하는 픽셀의 개수를 구하고, 이를 막대 그래프의 형태로 표현 정규화된 히스토그램(Normalized histogram) 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어준 것 해당 그레이스케일 값을 갖는 픽셀이 나타날 확률 영상과 히스토그램의 관계 히스토그램을 보고 그림의 대략적인 밝기를 알 수 있다. 히스토그램 구하기 cv2.calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None) -> dst images : 입력 영상 리스트 channels : 히스토그램을 구할 채널을 나타내는 리스트 mask : 마스.. 2024. 3. 18.
OpenCV 영상처리 - 컬러 영상과 색 공간 OpenCV와 컬러 영상 컬러 영상은 3차원 numpy.ndarray로 표현. img.shape = (h, w, 3) OpenCV에서는 RGB 순서가 아니라 BGR 순서를 기본으로 사용 OpenCV에서 컬러 영상 다루기 img1 = cv2.imread('lenna.bmp', cv2.IMREAD_COLOR) img2 = np.zeros((480, 640, 3), np.uint8) img3 = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE) img4 = cv2.cvtColor(img3, cv2.COLOR_GRAY2BGR) img4의 경우, 영상의 각 픽셀은 B, G, R 색 성분 값이 모두 같게 설정됨 RGB 색 공간 빛의 삼원색인 빨간색(R), 녹색(G), 파란색(B)을 .. 2024. 3. 18.
OpenCV 영상처리 - 산술 및 논리 연산 덧셈 연산 두 영상의 같은 위치에 존재하는 픽셀 값을 더하여 결과 영상의 픽셀 값으로 설정 덧셈 결과가 255보다 크면 픽셀 값을 255로 설정 (포화 연산) cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst src1 : (입력) 첫 번째 영상 또는 스칼라 src2 : (입력) 두 번째 영상 또는 스칼라 dst : (출력) 덧셈 연산의 결과 영상 mask : 마스크 영상 dtype : 출력 영상(dst)의 타입. (e.g.) cv2.CV_8U, cv2.CV_32F 등 참고사항 스칼라(scalar)는 실수 값 하나 또는 실수 값 네 개로 구성된 튜플 dst를 함수 인자로 전달하려면 dst의 크기가 src1, src2와 같아야 하며, 타입이 적절해야 .. 2024. 3. 18.
OpenCV 영상처리 - 밝기 조절 화소 처리 (Point processing) 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산 src(x,y) : 입력 x,y의 픽셀값 dst(x,y) : 출력 x,y의 픽셀값 결과 영상의 픽셀 값이 정해진 범위(ex. 그레이스케일)에 있어야 함. 반전, 밝기 조절, 명암비 조절 등 밝기 조절 영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산 밝기 조절 수식 saturate : 일정 값 이상 또는 이하로 넘어가지 않도록 제한 하는 함수 영상의 밝기 조절을 위한 영상의 덧셈 연산 cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst src1 : (입력) 첫 번째 영상 또는 스칼라 src2 : (입력) 두 번째 .. 2024. 3. 18.
728x90
반응형