인공지능 응용 공학 51

1990년대 말 CNN 응용의 길을 튼 LeCUN 교수의 LeNet-5 CNN 모델을 PyTorch 로 실습해보자.

LeNet-5 PyTorch 에서 은닉층이 없는 간단한 MNIST 문제를 다뤄 보자. Colab 에서 !pip install ⦁⦁⦁ 명령에 의한 별도의 PyTorch 라이브러리 설치 없이 torch 와 torchvision 을 import 하여 사용할 수 있다. 1 # Simple Network MNIST import torch import torch.nn as nn import torch.optim as optim import torchvision torch 가 import 되면 torch.nn 과 torch.optim 을 사용할 수 있으며, torchvision 이 import 되면 이를 상속하여 datasets.MNIST를 사용할 수 있다. 60,000개의 데이터중 50,000개는 학습용이며 10,..

OpenCV 의 BGR, RGB, GRAY 및 Matplotlib 의 RGB format 비교

아나콘다의 가상환경에서 opencv-python 라이브러리가 install 되었는지 확인 후 아래의 과제를 실습해 보자. 그림판에서 임의의 크기로 사각형 작도 명령을 사용해 BGR 색상을 준비하여 파일명을 bgr.jpg 로 저장하자. BGR 직사각형의 크기는 임의로 하여 bgr.jpg 로 저장하자. 아래의 OpenCV 코드를 작성하여 이미지 입력 bgr.jpg 와 같은 폴더 내에 두고 실행시켜 나타나는 이미지를 비교해 보자. OpenCV 의 cv2.imread 로 읽은 original image 는 그림판에서 작도한 Blue, Green, Red 그대로며 cv2.imread(‘bgr.jpg).copy() 인 BGR 도 original_image 와 동일한 색상을 보여준다. 반면에 BGR2RGB 로 변환한..

인공지능 발전사

처음 입문하는 초보자에게는 인공지능 발전사 전체 요약 내용이 다소 익숙치 못해 이해하기 어렵다고 느낄 수 있으나 이어지는 각론에서 다룰 것이므로 완전히 이해하지 못해도 그다지 문제될 것이 없다. 지금도 인공지능의 핵심적인 분야를 차지하는 통계 확률적 분류 작업 즉 classification 알고리듬은 1901년 Pearson 교수의 PCA 기법에서 기원한다. PCA 기법은 Pearson 교수가 역학 전문가였던 동료로부터 Mohr’s Circle 이론을 참조하여 제시한 알고리듬이다. PCA 알고리듬에 이어 1936년 Fisher 교수의 iris flowers를 분류하기 위한 통계학 기반의 LDA (Linear Discriminant Analysis) 알고리듬이 출판되었다. 아래 2차원 좌표계에서 푸른색 점..

YOLO v3 meerkat 1 class Training

오픈소스 YOLO v3 (v4)을 사용하여 사용자가 준비한 이미지 데이터 1종 meerkat 이미지를 학습 시켜보자. 이미지용 학습 데이터는 아래의 두 유튜브 영상을 참조하자. BBC Meerkat 검색 결과 영상들 오마이갓 백두산 검색 결과 영상들 1ㅗㅇ의 데이터만 학습시키기 위해서 총 64개의 데이터를 준비하여 개인사용자 PC에서 custom_data 폴더를 생성하여 저장하도록 한다. 64 란 숫자의 의미는 batch sixe 를 32 로 설정하기에 이에 맞춘것이다. 각 custom_data 별로 라벨 값 meercat 을 부여할 수 있도록 labelImg 를 사용하자. 수집된 각 이미지 데이터를 오픈 후 Create Rect 명령을 사용하여 직사각형 형태로 객체를 drag 하여 둘러 쌓은 후 출력 ..

YOLO v3 3 Classes Custom Data Training: 오바마, 저커버그, 일런머스크

참조: how to train YOLO v3, v4 for custom objects detection using Colab free GPI https://www.youtube.com/watch?v=hTCmL3S4Obw&t=1631s 오픈소스 YOLO v3 (v4)을 사용하여 사용자가 준비한 이미지 데이터를 학습 시켜보자. 이미지용 학습 데이터는 구글에서 Obama, Zuckerberg, Eln Musk 3명의 얼굴 이미지 jpeg 데이터를 수집하도록 한다. 각 데이터별로 10개씩 수집하여 custom_data 폴더를 생성하여 저장하도록 한다. labelImg 를 사용하여 수집된 데이터를 오픈 후 Create Rect 묭룡을 사용하여 직사각형 형태로 객체를 둘러 쌓은 후 출력 양식을 YOLO 로 선택하여..

No validation prediction of unseen image using callback weights

tf.keras.utils.image _dataset_from_directory 명령의 파라메터 validation_split=0.0 인 경우에는 데이터 전체를 학습에만 사용할 수 있도록 코드를 수정해 보자. train_ds 에서 파라메터인 subset=“training”을 지우도록 한다. training 파트가 더 이상 부분집합(subset) 이 아닌 집합(set) 자체로 바뀌기 때문이다. val_ds 와 관련된 코드도 전부 삭제한다. 1 train_ds = tf.keras.utils.image_dataset_from_directory( data_dir, validation_split=0.0, #subset="training", shuffle=True, seed=1234, image_size=(img_..

Prediction of unseen image using callback weights

Keras 신경망을 사용하여 학습한 callback 가중치를 model.load_weights(checkpoint_path) 를 사용하여 불러낸 후 별도의 unseen image 의 라벨 값을 예측(prediction) 해 보자. 예측하고자 하는 하나의 이미지 즉 여기서는 diffenbachia 잎사귀 사진을 사용하였다. 이를 읽어 들이기 위해서 OpenCV imread 명령을 사용하자. 실제 이미지의 해상도는 고해상도이지만 classification 목적을 위해서 학습과정에서 사용했던 표준적인 (224,224) 로 resize 한다. 1 import cv2 data_root = ("D:/⦁⦁⦁/ImageClassfication/DataSet") img_height = 224 img_width = 224..

OpenCV 명령을 응용한 하네스 커넥터 확대 이미지의 의 윤곽선 추출

하네스를 생산현장에서 대량으로 생산되는 하네스 선 하나를 대상으로 확대가능한 웹캠으로 이지지를 촬영하여 윤곽선을 추출해 보자. 측정 가능한 자(ruler) 와 함께 이미지를 얻어낼 경우에는 추출된 윤곽선들간의 길이 측정이 가능하며 이로서 커넥터가 압착과정에 의해 제대로 만들어졌는지 품질 확인이 가능하다. OpenCV, imutils, matplotlib 라이브러리를 헤딩 영역에 import 하자. 1 import cv2 import imutils import matplotlib.pyplot as plt 확대 가능한 웹캠 카메라로 이미지를 촬영하자. 화대 배율 1000X 는 생구라이지만 10x 정도는 잘 찍힌다. 가격은 웹캠 수준이며 사용법 또한 웹캠과 동일하다. 준비한 “harness.jpg” 이미지를 ..

Keras 학습가중치 callback 업로딩에 의한 이미지 분류

tf.keras.utils.image _dataset_from_directory 명령을 사용하여 이미지 데이터 세트를 종류별로 분류하는 학습 과정에서 callback 파라메터를 설정하여 내부적으로 생성되는 가중치를 특정 폴더 주소인 checkpoint 주소를 지정하여 저장하자. 차 후에 별도의 테스트 데이터를 준비한 후에 가중치 생성 시에 사용했던 모델을 불러 낸 후 저장된 가중치를 업로딩하여 학습과정 없이 평가(evaluation) 작업을 실행해 보자. 첫째로 가중치를 생성했던 모델을 그대로 부른다. 둘째로 checkpoint 경로를 지정하자. training_1 은 폴더명이며 현재의 실행파일이 위치한 폴더에 설치된다. 셋째로 tf.keras.callbacks.ModelCheckpoint 명령을 사용하..