개발(36)
-
Object Detection 정리 3. Grid for Muliple Objects 및 Non-Maximum Suppresion (NMS)
AI 딥러닝을 통한 Object Detection에 대해서 간단하게 정리해보자. 지난 정리 2에서는 Localization 모델에 Confidence Score를 추가하여 오브젝트가 없는 경우에 대응할 수 있도록 했다. 문제. 오브젝트가 여러개라면? 예제와 같이 오브젝트가 2개인 이미지를 우리 모델은 제대로 예측해낼 수 없다. 오직 BBOX 하나에 대한 위치정보만 return하기 때문이다. 해서 아마도 우리 모델은 두 오브젝트의 중간값 혹은 평균값을 return할 것이다. 해결. 그리드 방식으로 접근하자. 그리드 방식은 이미지를 그리드로 나눠 각 그리드에서 각각 위치 정보를 return한다. 상기 예제 이미지처럼 4x4그리드로 나눠서 위치 정보를 return하기 위해서 모델의 Head 구조를 수정해야하며..
2022.12.22 -
tf.where
tf.where Returns the indices of non-zero elements, or multiplexes x and y. 0이 아닌 요소의 인덱스를 반환하거나 x와 y를 multiplex합니다. (여기서 multiplex는 x와 y를 하나의 텐서로 합친다는 뜻인데, 그냥 합(sum)치는 게 아니라 같은 인덱스에 위치한 값 중 조건(condition)을 거쳐 참(True)이면 x의 값을, 거짓(False)이면 y의 값을 선택해 배치한다는 것이다. 아래 예제 참조.) import tensorflow as tf new_tensor = tf.where( condition, x = None, y = None, name = None ) Tensorflow를 이용해서 파이썬의 if문을 포함한 Loss F..
2022.12.21 -
tf.squeeze
tf.squeeze Removes dimension of size 1 from the shape of a tensor. 텐서의 shape에서 사이즈가 1인 차원을 제거합니다. import tensorflow as tf new_tensor = tf.squeeze( input, axis = None, name = None ) 스퀴즈하면 사실 쥐어짜는 이미지부터 떠올라서 함수(function)에 대한 이해가 바로 되지는 않았다. '쥐어짜다'라는 의미보다 '압착하다'라는 의미로 이해하면 되겠다. 즉, 의미없이 차원(dimension)을 차지하고 있는 사이즈가 1인 축(axis)를 압착하여 없애는 것이다. 연습 예제 import cv2 import tensorflow as tf import matplotlib.p..
2022.12.14 -
Object Detection 정리 2. Objectness 혹은 Confidence Score
AI 딥러닝을 통한 Object Detection에 대해서 간단하게 정리해보자. 지난 정리 1에서는 딥러닝 분류모델의 Head를 변경하여 Localization 모델을 완성했다. 그 결과 Bounding Box를 표시할 수 있는 위치 정보를 얻을 수 있었다. 문제. 오브젝트가 없다면? 현재 완성한 모델에 학습한 Object가 없는 이미지를 Input으로 넣으면 어떻게 될까? 모델은 무조건 위치 정보를 Output으로 return해야 하므로 임의의 위치 정보를 return할 것이다. 이는 우리의 프로그램 또는 어플리케이션이 의도하는 바가 아니다. 해결. Objectness 혹은 Confidence Score을 도입하자. 이 문제를 해결하기 위해서 우리는 Output Dimension을 하나 더 늘릴 것이다..
2022.11.30 -
SQLite3로 Database 공부 시작!
데이터베이스를 쓰러면 SQL을 써야하는데, 그 중 가장 쉽고 간단한 녀석이 SQLite라 할 수 있겠다. 다른 SQL과 달리 서버레벨이 아니라 db확장자 파일에 데이터를 쓰는 점이 일단 쉽다. # jupyter notebook import sqlite3 from datetime import datetime now = datetime.now().strftime('%Y%m%d_%H%M%S') table_name = f'Data_{now}' con = sqlite3.connect('test.db') cursor = con.cursor() # 테이블 생성 cursor.execute(f'CREATE TABLE {table_name} (Well text, Class text);') # 데이터 삽입 into 테이블 ..
2022.11.30 -
Object Detection 정리 1. Localization과 Bounding Box
AI 딥러닝을 통한 Object Detection에 대해서 간단하게 정리해보자. 1. 분류 모델에서 시작. Computer Vision분야로 CNN을 기반으로 한 분류 모델에서 시작한다. 분류모델은 마지막 레이어는 class_num와 동일한 수의 Output Dimension을 가진다. 예를 들어 텐서플로(Tensorflow)에서 제공하는 ImageNet 데이터로 사전 훈련된(Pre-trained on ImageNet) 분류모델 MobileNet은 Output Dimension이 1,000이다. # jupyter notebook import tensorflow as tf model = tf.keras.applications.mobilenet.MobileNet() model.summary() # 마지막 레..
2022.11.29