Object Detection 15

tesseract와 EAST detector를 이용한 글씨 인식

이번 포스팅에서는 EAST detector를 이용해서 image 안에 있는 글씨를 인식하고 tesseract로 어떤 글씨인지 읽어오는 프로젝트에 대해 소개하겠다. OpenCV의 EAST text detector는 새로운 아키텍처와 학습 패턴을 기반으로 한 딥러닝 모델이다. 이것은 720p image에서 13FPS의 거의 real-time에 가까운 성능을 보여주고, 최첨단의 text 검출 정확도를 얻게해준다. 프로젝트를 하면서 글씨를 인식하는데 주위 빛, 조명 글씨의 정성도 등이 검출하는데 매우 중요한 역할을 한다는 것을 알게 되었다. 먼저 필요한 module들을 import 해주고 상수, path를 지정해준다. from imutils.object_detection import non_max_suppres..

Object Detection 2021.09.05

자동차 번호판 인식 프로젝트

이번 포스팅에서는 자동차 번호판의 글씨를 인식하는 프로젝트에 대해서 정리하겠다. 프로젝트 진행 과정은 다음과 같다. 1. yolo를 사용해 이미지 내에서 자동차를 찾는다. 2. 자동차만 나오게 만들어준 사진에서 번호판을 찾는다.(EAST detector 사용) 3. pytesseract 모듈을 사용해 글씨를 인식한다. 먼저 필요한 모듈을 import하고 yolo를 load한다. import cv2 import numpy as np from imutils.object_detection import non_max_suppression import pytesseract min_confidence = 0.5 file_name = "image/image_03.png" east_decorator = 'frozen_..

Object Detection 2021.09.03

직접 쓴 손 글씨(숫자) 인식하기 - 글씨 추출 및 검출

이번 포스팅에서는 이전 포스팅에 이어서 종이에 쓰인 글씨를 따로 추출하는 방법에 대해서 알아보겠다. 먼저 이미지의 윤곽선을 추출한다. # cv2.findCountours() function changed from OpenCV3 to openCV4: not it have only two parameters instead of 3 # 윤곽선을 찾아낸다 cvMajorVersion=cv2.__version__.split('.')[0] print('OpenCV version:',cvMajorVersion) # check for contours on thresh if int(cvMajorVersion) >=4: contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST..

Object Detection 2021.08.27

직접 쓴 손 글씨(숫자) 인식하기 - 필터링을 통한 인식률 향상시키는 방법

이번 포스팅에서는 내가 직접 쓴 손 글씨를 인식하는 프로그램을 만들기 위해 먼저 인식할 이미지를 필터링을 통해 더 인식하기 쉽게 만들어 주는 과정에 대해 정리해 보겠다. 위 사진은 인식할 이미지이다. 먼저 필요한 모듈들을 import 하고 사진 정보를 불러오겠다. import cv2 import numpy as np import matplotlib.pyplot as plt frame='digits_357.jpg' img=cv2.imread(frame) plt.imshow(img) print('width:{} pixels'.format(img.shape[1])) print('height:{} pixels'.format(img.shape[0])) print('{} channels'.format(img.sha..

Object Detection 2021.08.26

object detection project - keras를 사용한 detection(2)

이제 학습된 가중치를 가져와서 직접 ROI 영역을 cv2 함수를 사용해 detection 해 보겠다. 내 노트북에서는 계정 이름이 한글로 설정되어 있어 오류가 나오는것 같다. 코드는 다음과 같다. import numpy as np import cv2 import tensorflow as tf from tkinter import * from tkinter import filedialog import tkinter.scrolledtext as tkst min_confidence = 0.5 width = 800 height = 0 show_ratio = 1.0 file_name = "./custom/fruit10.jpg" classes_name = "./custom/classes.txt" weight_name..

Object Detection 2021.08.26

object detection project - keras를 사용한 detection(1)

앞선 포스팅에서는 yolo를 사용해 물체를 detect 했다. 이번에는 직접 케라스를 이용해서 CNN을 통해 image들을 학습시킨 후, image 안에 존재하는 객체를 ROI로 영역을 나누어서 객체 탐지를 해보겠다. 먼저 파일들의 경로와 필요한 모듈을을 import 해준다. import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt import math import os import cv2 batch_size=128 num_classes=0 epochs=100 CW=32 CH=32 CD=3 model_name='fruit_custom.h5' # tflite_model_name=..

Object Detection 2021.08.24

Custom YOLO project - custom data 학습

이번 포스팅에서는 이전에 세팅했던 darknet 환경을 이용해서 나만의 데이터를 가지고 yolo를 통해 object detection을 수행해 보겠다. 먼저 다시 쿠다를 설치해주고(초기화 되었으므로) # install cuda !tar -xzvf drive/My\ Drive/darknet/cuDNN/cudnn-11.0-linux-x64-v8.0.4.30.solitairetheme8 -C /usr/local/ 쿠다를 사용할 수 있게 권한을 추가 해준다. !chmod a+r /usr/local/cuda/include/cudnn.h 이제 DarkNet을 불러오자. import os if not os.path.exists('darknet'): os.makedirs('darknet') %cd darknet # /..

Object Detection 2021.08.21

Custom YOLO project - 코랩에 darknet 불러오기

이번 포스팅에서는 custom yolo project를 하기 위한 세팅에 대해 알아보겠다. yolo는 darknet기반으로 실행되기 때문에 자신의 개별환경에 맞게 세팅을 해 놓아야 한다. 먼저 cuda 버전을 확인해보자. !/usr/local/cuda/bin/nvcc --version 내가 쓰는 코랩의 cuda 버전은 11.0임을 알 수 있다. 여기서 NVIDA 사이트에 들어가서 https://developer.nvidia.com/rdp/cudnn-download 자신의 버전의 맞는 드라이버를 설치해주면 된다. 여기서는 /content/drive/MyDrive/darknet/cudnn 위치에 이 파일을 저장했다. 이제 이 파일의 압축을 풀어줘야 한다. !tar -xzvf drive/My\ Drive/da..

Object Detection 2021.08.21

Custom YOLO project - 대용량 xml파일 라벨링 해주기

이전 포스팅에서는 몇장 안되는 이미지의 객체들을 쉽게 손으로 라벨링 할 수 있었다. 그러나 대용량의 이미지를 직접 손으로 하는 것은 매우 힘들것이다. 만약 xml파일이 있다면 다음 코드를 통해 yolo format의 이미지 txt 파일로 yolo 좌표체계를 추출할 수 있다. from xml.dom import minidom import os current_path=os.path.abspath(os.curdir) print('Current path is {}'.format(current_path)) YOLO_FORMAT_PATH=current_path + '/apple-data/train/images' XML_FORMAT_PATH=current_path + '/apple-data/train/annotati..

Object Detection 2021.08.21

Custom YOLO project - YOLO 이미지 데이터 만들기

1. 이미지 레이블링 하기 yolo가 인식하는 이미지의 좌표형식은 다음과 같다. 위 사진의 좌표는 옆에 메모장 처럼 상대좌표이다. 이렇게 이미지와 txt파일을 생성해야 하는데 이렇게 만드는 방법은 여러가지가 있는데 나는 labelimg 파일을 사용해서 만들어 보겠다. cmd창을 열어서 pip install LabelImg를 입력해 LabelImg를 다운받은 후 cmd창에 LabelImg를 입력해 LabelImg 프로그램을 실행시킨다. 이렇게 이미지 마다 레이블을 붙여줄 수 있다. 이렇게 작업이 끝나면 사진 옆에 [img이름].txt 파일이 생기게 된다. 2. .names, .data, .cfg , train.txt, test.txt파일 생성하기 다음 코드를 통해 만들수 있다. 먼저 이번 프로젝트에서는 코..

Object Detection 2021.08.21