Programming Study/Computer Vision 6

OpenCV 기초 실습 노트 [1]

OpenCV 설치 확인 > 이미지를 메모리(ndarray)로 읽기/띄우기 > Matplolib와 색상 차이 (BGR / RGB) > 이미지 배열(shape/dtype)과 생성/편집 > 키보드 마우스 이벤트로 인터랙티브 드로잉 딥러닝 저처리, 시각화, 데이터 라벨링까지 기본기 바탕 "이미지를 숫자 배열" 이라는 감각 + 이벤트 루프" 이해가 핵심 0. 좌표계의 기본 개념 OpenCV에서는 왼쪽 위 모서리가 (0, 0) 입니다.(0,0) ────────────→ x축 (가로) │ │ │ │ ↓ y축 (세로)1. 이미지 크기 img = np.ones((500,500,3),dtype=np.uint8) * 255500 * 500 픽셀 크기의 흰색 이미지좌표 범위 : x는 0~499, y는 0~499 ..

AlexNet을 구현해서 안경 착용 여부를 분류하는 딥러닝 예제

프로젝트 목표AlexNet 이해: 2012년 ImageNet 대회에서 우승한 역사적인 CNN 모델 학습이진 분류 실습: 사람이 안경을 쓰고 있는지 안 쓰고 있는지 분류하는 모델 구현전체 플로우1단계 : 데이터 준비 및 탐색데이터 압축 해제 → 이미지 확인 → 데이터 분포 시각화 - Train/Val/Test 폴더별 glasses/noglasses 이미지 확인- 각 카테고리별 이미지 개수 막대그래프로 시각화2단계 : 데이터 전처리 이미지 크롭 → 리사이즈 → 데이터 증강 → 정규화 - 중앙 128x128 크롭으로 텍스트 레이블 제거- 227x227로 리사이즈 (AlexNet 입력 크기)- 수평 뒤집기, 회전, 색상 조정으로 데이터 증강- ImageFolder와 DataLoader로 배치 단위 로딩 3단계 ..

PyTorch 모델 저장과 불러오기

딥러닝 모델을 학습한 뒤에는, 나중에 다시 사용하거나 재학습을 이어가기 위해 저장(save) 과 불러오기(load) 과정을 거친다. PyTorch에서는 크게 두 가지 방법이 있다. 두 방법의 차이점과 장단점1. 가중치만 저장 (state_dict())장점 # 작은 파일 크기model_weights.pth # 약 2MB (가중치만)# 버전 호환성 좋음torch 1.8에서 저장 → torch 2.0에서 불러오기 가능# 모델 구조 변경 가능class NewCNN(nn.Module): # 클래스명 바껴도 OK def __init__(self): # 구조만 같으면 가중치 로드 가능단점 # 모델 클래스 정의 필수model = ConvNeuralNetwork() # 클래스가 없으면 에러!mod..

손글씨 도형 분류하기

손글씨로 그린 세 가지 도형을 자동으로 분류하는 AI 모델 개발 도형 : 원, 삼각형, X 모양 전체 플로우 1단계 : 데이터 준비 및 전처리 데이터 다운로드 > 이미지 변환 > 데이터로더 생성 shape.zip 파일을 압축 해제 후 train/test 폴더로 분리 이미지를 28x28 크기로 리사이즈그레이스케일 변환 (흑백)색상 반전 (검은 배경에 흰 글씨로)정규화 처리 2단계 : CNN 모델 설계 입력층 > 합성곱층들 > 풀링층 > 드롭아웃 > 완전 연결층 > 출력층 (3개 도형 클래스) 2개의 합성곱 블록으로 구성 각 블록마다 Maxpooling과 Dropout 적용최종적으로 3개 클래스 분류 3단계 : 모델 학습 50 에포크동안 반복 학습 > 손실함수 최적화 > 정확도 측정 Adam 옵티..

stride=2의 역할과 의미

CNN(합성곱 신경망)에서 stride란, 필터가 입력 이미지를 훑을 때 이동하는 보폭을 말한다. stride 값에 따라 출력 크기와 정보 처리 방식이 달라진다. 이번 글에서는 stride=2가 하는 역할을 MaxPooling과 비교하면서 정리해본다. 1. stride란 무엇인가?stride = 필터가 이동하는 보폭기본값은 보통 1이며, stride=2로 설정하면 필터가 두 칸씩 점프하면서 이동한다.2. stride=1 vs stride=2 비교stride=1 (기본값)입력: 6×6 이미지, 3×3 필터필터가 한 칸씩 이동출력: 4×4 (크기가 조금 줄어듦)stride=2입력: 6×6 이미지, 3×3 필터필터가 두 칸씩 점프출력: 2×2 (크기가 절반으로 줄어듦)즉, stride=2는 출력 크기를 절반으..

ReLU 함수는 왜 음수를 0으로 만들까?

딥러닝 모델에서 자주 사용되는 ReLU(Rectified Linear Unit) 함수는, 음수를 모두 0으로 바꾸고 양수는 그대로 통과시킨다.그렇다면 왜 굳이 이렇게 해야 할까? 이번 글에서는 음수값이 발생하는 경우와 그 이유, 그리고 ReLU가 학습에 미치는 효과를 예시를 들어가며 정리해본다. 1. 음수값은 어떤 경우에 나올까?1-1. 패턴이 반대일 때CNN에서 사용하는 필터는 특정한 모양을 감지하는 역할을 한다. 예를 들어, 어떤 필터가 "둥근 원형" 패턴을 찾도록 학습되었을 때, 만약 입력 이미지가 "직선"이라면 어떻게 될까?circle_filter = [[1, 1, 1], [1, -5, 1], [1, 1, 1]]straight_li..