본문 바로가기

Python/컴퓨터 비전

Python(60)- 영상데이터를 활용한 이상탐지 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*import osimport randomimport shutilimport cv2import globimport xml.etree.ElementTree as ETimport csvfrom tqdm import tqdmdata_root = '/content/drive/MyDrive/KDT/8. 컴퓨터 비전/8. Abnormal'file_root = f'{data_root}/data'file_list = os.listdir(f'{file_root}/images_id')len(file_list)# mp4에서 이미지 추출하기# 각 mp4이름으로 디렉토리 생성 후 저장for file in tqdm(file_lis.. 더보기
Python(59)- YOLO를 활용한 안전모 탐지기 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*YOLO모델을 활용하여 공사현장 사진을 가져온다. 안전모의 유무를 기준으로 분류하는 분류기 만들기# ultralytics 모듈 사용전, pip로 설치하기!pip install ultralytics사용 모듈import osimport randomimport shutilimport yamlimport cv2 import glob # 파일 시스템 내에서 특정 패턴과 일치하는 파일 경로명을 찾기 위해 사용import ultralyticsimport matplotlib.pyplot as pltimport xml.etree.ElementTree as ETfrom ultralytics import YOLOimport torchf.. 더보기
Python(58)- YOLO를 활용한 사진 분류기 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*Kaggle에서 폐암 데이터시트를 가져오고, 데이터를 YOLO를 이용하여 분류하는 간단한  예제를 시작, 데이터 전처리와 후처리, 그리고 시각화와 yaml확장자 파일까지 만들어본다. 시작하기전에 캐글 데이터를 가져오기 위해서 kaggle로그인한 후, API를 가져와서 적용한다.kaggle사이트는 다음과 같다.https://www.kaggle.com/datasets/hamdallak/the-iqothnccd-lung-cancer-dataset/data The IQ-OTH/NCCD lung cancer datasetLung Cancer CT Scans from Iraqi hospitals: Normal, Benign, .. 더보기
Python(57)- YOLO *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*1. YOLO이미지 분류(Classification), 객체 탐지(Detection), 인스턴스 분할(Segmentation) 작업에 사용할 수 있는 모델YOLO는 2015년, Joseph Redmond가 처음 출시한 이후 컴퓨터 비전 커뮤니티에 의해 성장초기버전(1~4)에서의 YOLO는 Redmond가 작성한 커스텀 딥러닝 프레임워크인 Darknet에서 유지YOLOv3 레포를 PyTorch로 작성하여 Ultralytics에서 YOLOv5를 출시유연한 Python 구조 덕분에 YOLOv5는 SOTA 레포가 되었음Ultralytics는 2023년 1월에 YOLOv8을 출시아키텍처 요약Object Detection 문제.. 더보기
Python(55)- 이진 분류 모델, VGG19 모델 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*1. Classification분류는 기계 학습과 통계학에서 시스템이 일련의 특성을 기반으로 미리 정의된 여러 범주 또는 클래스 중 하나에 주어진 입력을 할당하도록 훈련되는 과정입력 기능과 클래스 레이블 사이의 학습된 관계를 기반으로 샘플의 클래스 레이블을 예측하는 것Binary Classification이진 분류: 데이터 요소를 두 클래스 중 하나로 분류질병 vs 질병이 아님Multiclass Classification다중 클래스 분류: 데이터 요소를 여러 클래스 중 하나로 분류고양이, 강아지, 코끼리 ...Multi-lable Classification다중 레이블 분류: 단일 데이터 요소가 여러 클래스에 속할 수.. 더보기
Python(54)- 모폴로지 처리, 레이블링, 테서렉트 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*모폴로지 처리:영상의 밝은 영역이나 어두운 영역을 축소 또는 확대하는 기법     cv2.getStructuringElement(구조 요소의 모양, 사이즈)     - 구조 요소의 모양         1. 직사각형(cv2.MORPH_RECT)         - 가장 단순한 형태로, 모든 요소가 같은 값을 가지는 정사각형 또는 직사각형         - 팽창과 침식 연산에서 동일하게 작동         - 객체 가장자리를 따라 명확한 변화를 줄 때 유용         2. 타원형(cv2.MORPH_ELLIPSE)         - 가장자리 부분을 더 부드럽게 처리         - 객체의 둥근 모양을 유지하면서 노이즈.. 더보기
Python(53)- 엣지 검출, 투시 변환 *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*1. 영상의 변환- 영상을 구성하는 픽셀의 배치 구조를 변경함으로써, 전체 영상의 모양을 바꾸는 작업 이미지 이동(translate) 원래 있던 좌표에 이동시키려는 거리만큼 연산     변환행렬         M = [ 1 0 a ]                [ 0 1 b ]                ->x축으로 a만큼 y방향으로 b만큼 이동하는 행렬     cv2.warpaffine()     * (0, 0)을 매개변수로 전달하면 입력 영상과 크기가 같은 행렬을 반환import cv2import numpy as npimg = cv2.imread('./dog.bmp')aff = np.array([[1,0,150].. 더보기
Python(52)- ROI, 이진화(threshold, otsu) *이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*1. ROI관심 영역(ROI, Region of Interest) - 영상 내에서 관심이 있는 영역 cv2.selectROI()import cv2img = cv2.imread('./sun.jpg')# x, y, w, hx=182y=21w=122h=110# 태양을 복사roi = img[y:y+h, x:x+w]roi_copy = roi.copy()# 오른쪽에 붙이기img[y: y+h, x+w: x+w+w] = roi# 두 태양을 박스로 감싸기cv2.rectangle(img, (x, y), (x+w+w, y+h), (0, 255, 0), 3)cv2.imshow('img', img)cv2.imshow('roi_copy', .. 더보기