행복한 하루

[교육후기] OpenCV와 Tensorflow Lite를 활용한 라즈베리 파이 지능형 비전 서비스 개발 - 1일 차 본문

Artificial Intelligence/Basic

[교육후기] OpenCV와 Tensorflow Lite를 활용한 라즈베리 파이 지능형 비전 서비스 개발 - 1일 차

변화의 물결 2023. 2. 24. 00:17

 

안녕하세요.

  

 최근 들어 AI 관련 내용들이 들어오고 있어서 이런저런 강의를 보고 있는 중에 3일 과정인 "OpenCV와 Tensorflow Lite를 활용한 라즈베리파이 지능형 비전 서비스 개발"이라는 교육이 있어서 신청하여 들어보았습니다.

 전체내용은 양도 많기도 해서 간략하게 확인하는 겸 이런 과정으로 진행되는구나 참조로 보면 좋을 듯합니다.


1. 출석 확인

 - 코로나가 어느 정도 끝나다 보니, 집체교육으로 진행되었고 7시간으로 10시 ~ 6시간 교육이 진행되며, 스마트폰을 통해 입실, 퇴실을 확인하였습니다. 

2. 라즈베리파이 준비

2.1 하드웨어 준비

 - LCD, RaspberryPi 4, 센서 키트와 소형 모니터, 키보드, 마우스를 나눠주고 연결하는 방법부터 시작합니다.

 - 교재내용에 맞춰 설치하는 것을 진행하고, raspberry.org 사이트에서 imager_1.7.3.exe 다운로드한 후 SD카드에 Install 해서 부팅을 합니다.

 

2.2 프로그램 설치

  - 한글폰트와 한글 입력기를 설치합니다. 

sudo apt install fonts-unfonts-core -y
sudo apt install ibus-hangul -y
im-config -n ibus
sudo reboot

 

  

   - 각종 라이브러리와 python용 OpenCV 설치합니다.

sudo apt install libatlas-base-dev libhdf5-dev libatlas-base-dev libjasper-dev  libqtgui4  libqt4-test -y
pip3 install opencv-python

3. 기본 강의 시작

  - 다들 실무자들로 보이기 때문에, 리눅스 기본 명령어 점프하고, 사이사이에 필요한 명령어들을 간단하게 내용 설명해 줍니다. 그리고 선수 지식인 프로그램 경험을 요구하고 있기 때문에 프로그래밍 언어적 설명은 넘어갑니다. 사실 그것까지 설명하기에는 3일 안에 AI와 IoT를 설명하기는 무리라고 생각됩니다.

 

  - 라즈베리파이에서 바로 실행하지 않고 파이썬 문법과 라이브러리들을 간단하게 맛을 볼 수 있도록 웹상 colab에서 우선 테스트 진행합니다.

 

3.1 Python 간단한 문법

  - Numpy(수치해석용 패키지), matplotlib, panda(데이터 분석을 효율적으로 하는 패키지) 등 필수 라이브러리 사용방법 확인

  - GUI를 테스트할 수 있는 라이브러리 turtle, 거북이가 사각형을 모양을 따라 움직임

 

import ColabTurtle.Turtle as turtle

turtle.initializeTurtle()
turtle.shape('turtle')
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)

 

 <matplotlib: 데이터를 도식화할 수 있는 라이브러리 확인>

   - 문법 중 ys=[x**2 for x in xs]는 배열에 구문이 들어가는 것 갈 수 있음 확인 

import matplotlib.pyplot as plt

xs = [1,2,3,4,5]
ys = [x**2 for x in xs]
#ys = [1,4,9,16,25]
ys2 = [x**3 for x in xs]
#ys2 = [1,8,27,64,125]
plt.title('Power')
plt.plot(xs,ys, label='Square')
plt.plot(xs,ys2, label='Cube')
plt.legend()
plt.show()

 

 

 

  <웹 크롤링>

  - beautifulsoup4 (html에서 필요한 문자열을 구분해 주는 패키지),  requests(웹사이트에 HTTP 요청하는 패키지) 설치

!pip install bs4 requests

   

import requests
from bs4 import BeautifulSoup
url = 'https://www.lawtimes.co.kr/Legal-News/Legal-News-View?serial=185539&kind=AA&key='
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.find('title'))
print("")
#print(response.text)
 
'''
# 문단 별로 가져옴
soup = BeautifulSoup(response.text, 'html.parser') print(soup.find_all('p'))
 print(soup.find_all('p')[0])
'''

 

3.2  mmist 모델을 간략한 예제 설명

  - Tensorflow와 Tensorflow Lite 차이점을 설명

   간단한 차이점이라고 본다면, 학습 + 추론은 Tensorflow, 추론만 한다면 Lite 버전

 

   - 수강생들은 mspaint 프로그램으로 그린 숫자를 만들어 mnist 모델에 넣어 추정해 본 결과 확인합니다. 이미지 생성 시 사이즈의 단위를 픽셀로 바꾸고 28, 28로 변경해서 이미지를 생성합니다.

3.3. OpenCV 관련 설명

  - OpenCV개요, 기본 구조 설명하며, 이론을 깊이 있게 보다는 이해와 필요성 중심을 설명

  - 이미지 처리에 필요한 이론 설명 (이미지 정규화, 스레시홀딩, 이미지 스무딩, 에지 검출)

  - 이미지 활용분야 설명 (이미지 향상, 복원, 이미지 인식, 압축)

  - 행렬, 픽셀 단위 이미지 처리, 기하학적 변환(스케일링, 반사, 전단, 투사, 특징추출 템플릿 매칭 기반 객체 탐지 이론 설명

 

4. 파이썬을 이용한 실습 진행

4.1. OpenCV에서 확인 필요한 것

  - x, y가 순서가 아니라 y, x / RGB 가 아니라 BGR / clone, create 등 원본 이미지 사용 시

  - 좋은 이미지인지 파악을 위해 히스토그램을 통해 픽셀들의 색상이나 명암의 분포가 한쪽으로 몰려 있는지 확인, 필요하다면 정규화 진행

 

4.2 얼굴 인식 소스 실습

  - 기본적인 필터 적용 얼굴 찾는 방법은 눈코눈 (0, 1, 0) 필터(커널)를 적용해서 얼굴을 순차적으로 적용해서 얼굴영역을 찾고 눈 주의의 패턴 3x3 배열로 000/010/000을 적용해서 눈을 찾아낸다. 그리고 패턴에서 맞지 않아 지나간 영역을 삭제하면서 확인해 나간다.  010 커널로만 찾는 것이 아니라 얼굴에 대응대는 여러 필터들이 적용해 보면서 얼굴을 찾아나간다.

 

  - 라즈베리 카메라 작동 확인 

vcgencmd getcamera
raspistill -o image.jpg
xdg-open image.jpg

 

- Raspberry Pi Programming 메뉴에서 thonny python을 실행한 후 사진에서 얼굴과 눈을 인식하여 선글라스를 넣는 소스확인합니다

 

  - ret, img = capture.read() 주석을 해제하여 카메라에서 받은 실시간 영상에서 테스트함

  - 내일 교육을 위해  pip3 install opencv-contrib-python 실행 후 교육 마침

5. 1일 차 전반적인 후기

  - 라즈베리파이 설치와 파이썬 이론 간단히 설명해 줍니다. 그래서 프로그래밍 개발 경험 없이 없는 분은 최소 코딩 수업이지만 따라가는 것에 조금 힘들 수 있다고 생각되었습니다.

 

  - 조금 쉬운 지능형(AI) 비전 수업이라고 해서 뉴런부터 이론을 설명하지 않고 실습위주의 강의라고 보면 되고, 인공지능 기본 개념과 AI수학에 대해 간단한 선행학습을 하고 오면 조금 더 설명을 이해하는데 도움이 되고 질문도 할 수 있을 것이라고 생각됩니다.  

 

  - 영상 처리 실무자에게는 쉬운 수업이라 생각되며 임베디드 보드에 적용해보고 싶거나 IoT를 접목해보고 싶다는 관점에서는 들어보는 것도 나쁘지 않다고 생각됩니다.

 

  - 젊은 수강생보다는 연차 있으신 분들도 좀 더 있었고, 비전관련 한 것을 어떻게 본업에 적용하면 좋을 지에 대해 질문들 많이 있었습니다. 그렇지만, 강사분이 교수님이시다 보니, 설명하는 것을 좋아하시고, 물어 봐주는 것도 좋아하시는 듯했습니다.

 

<참고 링크> 

1. 무료 AI 데이터

https://aihub.or.kr/   

 

 

Comments