블로그 이미지
devtang
Instagram : @taebr0 devtaehyeong@gmail.com

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2020. 4. 29. 18:06 Raspberry Pi

 

 

 

 

 

 

 

이번 게시물에서는 RaspberryPi 3B+에 Tensorflow 를 이용하여 사전 훈련된 Mobilenet SSDLite_V2를 이용하여 파이카메라로 Object Detection하는 과정을 작성하겠습니다.

 

우선 준비물로는 Picamera와 라즈베리파이만 있으면 됩니다.

 

라즈베리파이 터미널창을 열고 다음과같이 업데이트를 해줍니다.

sudo apt-get update
sudo apt-get upgrade

 

이후 tensorflow 모델을 다운 받을 폴더를 만들어줍니다.

cd Desktop
mkdir tensorflow
cd tensorflow

 저는 Desktop 에 tensorflow1이라고 폴더명을 만들고 터미널로 들어가줬습니다.

wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.8.0/tensorflow-1.8.0-cp35-none-linux_armv7l.whl

 

이제 위와 같은 명령어를 치고 다운받아줍니다. 

 

다운이 완료되면 models라는 폴더가 생성되있습니다.

 

sudo pip3 install tensorflow-1.8.0-cp35-none-linux_armv7l.whl // python3.x버전설치
sudo pip install tensorflow-1.8.0-cp35-none-linux_armv7l.whl

저는 라즈베리파이에 세팅된 기본 파이썬버전이 3.5 라 pip3를 붙혀줄 필요가 없었습니다.

pip3버전으로 까는것을 추천드립니다.

 

텐서플로우가 설치가 완료되고나면, 텐서플로우에 필요한 패키지를 추가로 설치해줘야합니다.

이제부터 pip은 생략하고 pip3로 통일해서 올리겠습니다. 본인 환경에 맞게 설치하시길 바랍니다.

 

sudo apt-get install libatlas-base-dev

sudo pip3 install pillow lxml jupyter matplotlib cython

sudo apt-get install python-tk

추가적으로 OpenCV도 설치해줘야하는데 Jetson nano가 라즈베리와같이 우분투 환경이기에 똑같이 진행해주시면 됩니다.

 

(아래 게시물 참고바랍니다.)

https://ultrakid.tistory.com/10

 

[OpenCV] Jetson nano에 OpenCV 3.4 설치

제 나노 보드에 설치된 Jetson Nano Developer Kit image, CUDA 10.0, Jetpack 4.3 버전 기준으로 작성하였습니다. 우선 OpenCV 설치 전에 필요한 라이브러리 들을 설치해줍니다. (참고) - pkg-config나 unzip 또..

ultrakid.tistory.com

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install qt4-dev-tools

pip3 install opencv-python

OpenCV 설치시에 굉장히 오래걸리기도 하고, 발열이 심하니 설치후에 꼭 라즈베리파이를 쉬게 해주세요..

 

이제 구글의 프로토콜 버퍼를 이용할 준비를 해야합니다.

https://developers.google.com/protocol-buffers

 

Protocol Buffers  |  Google Developers

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.

developers.google.com

이것을 이용하면 데이터를 한 번 구성하는 방법을 정의한 후 특수 생성 된 소스 코드를 사용하여 다양한 데이터 스트림에서 다양한 언어로 다양한 구조의 데이터를 쉽게 읽고 쓸 수 있다고 합니다. .proto파일을 생성하여  응용 프로그램 언어에 대한 프로토콜 버퍼 컴파일러를 실행하여 데이터 액세스 클래스를 생성한다고 하는데, 이것을 이용하면 더 작고 빠르게 읽을 수 있어서 라고 합니다.

 

명령어를 입력해줍니다. 

sudo apt-get install autoconf automake libtool curl

이 다운로드는 참고로 만들어준 tensorflow 폴더에서 진행해주세요.

wget https://github.com/protocolbuffers/protobuf.git // protocol buffer 받아오기

tar -zxvf protobuf-all-3.6.0.tar.gz // 압축풀어주기

cd protobuf-3.6.0 // 폴더로 진입

 

 

./configure

./configure를 해주면 대략 2분정도걸립니다.

 

make

make는 진짜 더더 오래걸립니다.. 저는 한시간정도 걸린 것 같습니다.

make check

이건 리얼 더더더 오래걸렸던거 같습니다. 참고로 하다가 라즈베리파이가 먹통됬는데, 먹통된 사람들은 전원을 끄고 

다시 켜준다음에 다시 make check 진행해주시면 위와같은 화면이 나오면 올바르게 컴파일 된겁니다.

저는 먹통이되서 다시 켜고 컴파일시켜 2시간 넘게 걸렸습니다.

sudo make install

위와같은 명령어를 쳐서 설치합니다.

cd python  // @@@@ python 폴더로 꼭 들어가주세요 @@@@

export LD_LIBRARY_PATH=../src/.libs

python3 setup.py build --cpp_implementation

python3 setup.py test --cpp_implementation

python3 setup.py build --cpp_implementation

 

python3 setup.py test --cpp_implementation

sudo python3 setup.py install --cpp_implementation

계속계속 진행해 줘요.

 

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=3

sudo ldconfig

sudo ldconfig 치면 위와 같이 나옵니다.

이제 설치가 거의 완료됬습니다. 재부팅 전에 실행하면 텐서플로우 오류가 뜨니 반드시 재부팅을 해줍니다.

sudo reboot now

 

재부팅이 완료가 되면 Desktop에다 tensorflow1 이라고 폴더를 만들어주어 그안에 들어가줍니다.

cd Desktop

mkdir tensorflow1

cd tensorflow1

아래 명령어를 입력해주면 위와 같은 이미지처럼 다운로드가 진행됩니다~!!

git clone --recurse-submodules https://github.com/tensorflow/models.git 

설치가 완료되면 

이다음부터 조금 중요한데,

sudo nano ~/.bashrc

위의 명령어를 입력해주면

아래와 같은 GNU 창이 뜹니다. 커서를 맨아래로옮겨 아래 코드를 적고 Ctrl + X -> Y 를 눌러 저장하고 나옵니다.

export PYTHONPATH=$PYTHONPATH:/home/pi/tensorflow1/models/research:/home/pi/tensorflow1/models/research/slim

echo $PYTHONPATH 를치면

위와같이 우리가 입력한 주소가 나옵니다. 위와 같이 나오면 성공적으로 진행된것입니다.

 

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

 

tensorflow/models

Models and examples built with TensorFlow. Contribute to tensorflow/models development by creating an account on GitHub.

github.com

이제 실행을위해 pre-trained 된 모델을 다운 받아옵니다. 저는 Mobilenet ssdlite V2 버전을 이용하겠습니다.

wget http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz

 

다운로드가 완료되면 아래 명령어를 입력하여 압축을 풀어줍니다.

tar -xzvf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz

다시 models파일안에 research 폴더안으로 들어와서 명령어를 입력해줘야 합니다.

protoc object_detection/protos/*.proto --python_out=.

이명령어를 입력한후 폴더안에 파일을보시면 파이썬 파일들이 proto파일들로 변환되서 저장되어있습니다. 구글 프로토콜 버퍼를 사용할 준비가 완벽하게 됬습니다!

 

 

이제 object_detection 폴더 안으로 들어와서 테스트할 파이썬 파일을 받아옵니다.

라즈베리카메라를 이용한 객체인식 예제 코드 파일입니다.

wget https://raw.githubusercontent.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi/master/Object_detection_picamera.py

python3 Object_detection_picamera.py

받아와서 python으로 실행을 시키면 tensorflow가 꽤 많이 메모리를 잡아먹기 때문에 시간이 조금 걸립니다.

 

아래는 구현 동영상입니다.

https://youtu.be/rLK-y8ePueQ

 

 

참고사이트

https://youtu.be/npZ-8Nj1YwY

 

=======================================================================

posted by devtang
2020. 4. 1. 18:17 AI/Keras

이번 게시물은 Windows10 에서 Anaconda 가상환경에 Mask R-CNN 을 세팅하여 간단한 사진 예제를 돌려보겠습니다.

 

우선 Mask R-CNN이란 무엇인가?

 

Mask R-CNN : Mask Region-based Convolutional Network

 

COCO dataset 이미지 검출 예제 사진

 Mask R-CNN은 원래 있던 Faster-RCNN에 기반한 모델입니다. 간단하게 말하면 Faster R-CNN으로 Object를 검출한 box 안에 Object에 예측된 부분을 mask 씌워준 것입니다. 기존의 Faster R-CNN을 Object Detection 역할로 하고 각각의 RoI(Region of Interest)에 mask를 입혀주는 작은 FCN(Fully Covolutional Network)를 추가해준 것입니다. 또한 RoI Pooling이아닌 RoIAlign를 사용했다는데 , mask accuracy가 증가하였다고 합니다. 자세한 내용은 추후에 포스팅 할 예정입니다. 

Mask R-CNN framework

 

Mask R-CNN 세팅하기

기본적으로 Anaconda가 세팅이 되어있어야합니다. 이글은 Windows10을 기준으로 작성합니다.

 

GPU를 사용하기 위해 CUDA 와 CUDNN을 설치해야하는데 버전이 맞지 않으면 호환이 되지 않아 오류가 날 가능성이 큽니다. 제가 구동한 버전은 아래와 같습니다.

cuda v9.0

cudnn v7.0.x (저는 7.0.2로 가장 구버전을 선택해서 사용했습니다.)

 

cuda 설치

https://developer.nvidia.com/cuda-toolkit

 

cudnn 설치

https://developer.nvidia.com/cudnn

(NVIDIA 로그인 후 다운로드가 가능합니다.)

 

cudnn을 깔면 이파일들이 나오는데 bin, include, lib폴더안에 내용물을 

자기가 깔아준 CUDA 폴더 경로에 붙여넣기 해줍니다.

제기준으로 경로입니다. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

특별한 설정없으면 위의 경로가 맞으실 거에요.

 

이제 윈도우 키 + 시스템 환경 변수 편집 입력 하시면 시스템 속성이 나옵니다.

환경 변수 클릭후 시스템 변수 편집에 cudnn 이라고 새로 만들주고 경로를 붙혀넣어 줍니다.

 

 

 

설정이 완료되었으면 아나콘다 프롬프트를 실행시킵니다.

본격적으로 Mask R-CNN 환경 세팅을 위한 가상환경을 만들어 줍니다. python3.6 과 pip을 추가 설치해주는 명령어에요

(base) C:\Users\@USERNAME@>conda create -n MaskRCNN python=3.6 pip

세팅이 끝난후에 activate MaskRCNN 을 입력하면 아래 사진과 같이 가상환경에 정상적으로 들어간 것을 확인해주세요.

이제 Mask R-CNN을 구성하는데 필요한 파일들을 설치해줘야 합니다.

추가적으로 Visual C++ 2015 Build Tools 설치가 필요합니다.

pip install tensorflow-gpu==1.5 

pip install keras==2.2.0 

pip install cython matplotlib scikit-image h5py Pillow jupyter pandas numpy scipy 

pip install opencv-python ipython

-------------------------------

저는 바탕화면에 Mask_RCNN폴더를 만들어 설치하였습니다. 



cd Desktop //바탕화면으로 이동 

mkdir Mask_RCNN // Mask_RCNN 이라는 폴더 생성 

cd Mask_RCNN // Mask_RCNN 폴더로 이동

-------------------------------

conda install -c anaconda git //git을 이용하기위한 설치 

git clone https://github.com/matterport/Mask_RCNN.git  // Mask_RCNN파일 설치 

-------------------------------

git clone https://github.com/philferriere/cocoapi.git // cocotools 설치 

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=pythonAPI 

-------------------------------

git clone https://github.com/aleju/imgaug.git // imgaug 설치 

pip install imgaug

-------------------------------

https://github.com/matterport/Mask_RCNN/releases 

 

matterport/Mask_RCNN

Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow - matterport/Mask_RCNN

github.com

추가적으로 이사이트에 들어가서 
mask_rcnn_coco.h5.file 을 다운로드하여 Mask_RCNN 폴더에 넣어줍니다.

 

 

이제 주피터 노트북을 이용하여 예제를 실행해 보도록 하겠습니다.

Mask_RCNN 폴더내에 samples 폴더에 들어가서 demo.ipynb 파일을 실행시켜서 데모를 구동해봅니다.

 

 

성공적으로 구동이 되었습니다. 

# Load a random image from the images folder 

 file_names = next(os.walk(IMAGE_DIR))[2]

 image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names)))

Mask_RCNN폴더내에 images에 자신이 원하는 사진을 넣고 아래와 같이 코드 수정을 하면 다른 사진도 돌려볼 수 있습니다.

# Load a random image from the images folder

 filename = os.path.join(IMAGE_DIR, 'doge.jpg')

 image= skimage.io.imread(filename)

 

글 읽어주셔서 감사합니다.

 

 

추가적으로 오류나는 사항있으면 댓글로 알려주세요!!

 

 

참고사이트

https://www.youtube.com/watch?v=2TikTv6PWDw

 

https://n1094.tistory.com/42

 

https://medium.com/zylapp/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852

 

https://reyrei.tistory.com/11

 

posted by devtang
2020. 3. 26. 17:47 AI/Keras

이번 게시물에서는 Keras를 이용하여 손글씨  데이터셋을 불러와서 모델 구성 및 학습하여 Keras의 간단한 기초과정을 이해하는 게시물입니다.

 

MNIST란 이미지 데이터 셋으로 사람이 직접 쓴 글씨체 0~9까지의 이미지들로 구성되어있습니다.

케라스 데이터셋 라이브러리를 이용하여 쉽게 훈련용 이미지를 load할 수 있습니다.

 

Windows10 환경에서 진행하였으며 기본 세팅 과정은 아래의 블로그에서 참조해주세요.

https://like-edp.tistory.com/3

 

Anaconda(아나콘다) 에서 Keras(케라스) 설치하기

반갑습니다. 이번 글에서는 아나콘다를 사용하여 케라스까지 설치해보는 작업을 진행하도록 하겠습니다. 아나콘다는 일반적으로 정말 다양한 라이브러리 패키지들을 모아놓은 소프트웨어인데, Python을 포함해 연..

like-edp.tistory.com

우선 keras 모듈을 import 하여 훈련에 필요한 손글씨 데이터 셋을 불러옵니다.

import keras
from keras.datasets import mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

딥러닝 모델을 학습하기 위해 train 과 test 2가지로 나눕니다.

train 은 훈련시킬 데이터이고 test는 훈련시킨 모델의 테스트용 데이터 입니다.

_images는 숫자 이미지의 정보이며 _label은 숫자 이미지의 이름입니다.

 

print(train_images[0])

import matplotlib.pyplot as plt
plt.imshow(train_images[0])
plt.show()

 

 

이미지데이터를 출력시켜 보았습니다. 출력시켜보면 배열안에 0~255 숫자 픽셀 데이터로 구성 되어있는 것을 알 수 있습니다. 추가적으로 matplotlib를 import 하여 train_images[0] 의 사진을 불러왔습니다.

 

print(train_images.shape)
print(len(train_labels))
print(train_labels)

print(test_images.shape)
print(len(test_labels))
print(test_labels)

train_image와 test_image 를 shape 명령어를 사용하여 각각의 배열 데이터의 크기를 확인할 수 있습니다.

print(train_images.shape) 

(60000,28,28)

60000 : 갯수가 6만개라는 뜻입니다.

28,28 : 하나의 배열은 28X28 로 이루어져 있습니다.

 

print(len(train_labels))

60000

train_labels 의 데이터의 길이가 60000이라는 뜻입니다.

 

이제 데이터 셋 성분을 보았으니 이 데이터들을 Normalize해줘야합니다.

train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255

test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255

reshape 로 출력 데이터를 같은 양식으로 통일하고 astype를 이용하여 픽셀값이 0~255사이 값이므로 255로 나누어 데이터를 0~1까지의 숫자로 변환합니다.

 

이미지 데이터들을 전처리 해주었으니  라벨 데이터 역시 One-hot encoding으로 변환 해줍니다.

 

One-hot encoding 이란?

표현하고 싶은 단어의 index에는 1의 값을 부여하고 , 다른 인덱스에는 0을 부여하는 표현 방식입니다.

print (train_labels[:10])
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
print (train_labels[:10])

train_labels 을 인코딩전에 출력하면

[ 5 0 4 1 9 2 1 3 1 4 ]

이렇게 표현이됩니다.

5를 encoding 한 결과값입니다.

[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]

배열 index (0~9)중 여섯번째가 5입니다. 정수 5 위치의 값이 1이며, 나머지값은 0으로 표현하게됩니다.

 

이제 데이터셋의 생성이 모두 완료되었습니다. 다음 단계는 모델을 구성하여 학습준비를 해야합니다.

from keras import models
from keras import layers

network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(layers.Dense(10, activation='softmax'))

models과 layers 를 import하여 Sequential()함수를 이용합니다.

이때 Dense 레이어를 이용하는데

Dense() 함수에 들어가는 인자는 다음과 같습니다.

 

Dense(512, activation='relu', input_shape=(28*28))

*512 는 출력 뉴런의 수를 설정합니다.

*input_shape 는 입력 뉴런의 수를 설정합니다. (행,열,채널 수) 로 구성됩니다.

*activation='relu' 

*relu : (ReLU, Rectified Linear Unit), 은닉층(hidden layer) 에서 주로 사용하는 활성화 함수입니다.

*softmax : 입력받은 값을 출력으로 0~1사이의 값으로 모두 정규화하며 출력 값들의 총합은 항상 1이 되는 특성을 가진 함수 입니다. 

 

이 게시물에서 구하고자 하는 문제는 입력 이미지가 주어졌을 때 0~9 까지 각 숫자와 얼마나 비슷한지에 대한 확률을 구하는 것입니다. 숫자 9를 인식하려는데 예를들어 9일확률 80%, 8일확률 5% 로 다른 숫자에 대해서 낮은 확률로 인식할 수 있습니다. 

 

network.add를 이용하여 두 개의 Dense 계층을 연속적으로 추가하며, 합계가 1이 되는 10개의 확률 점수의 배열을 반환합니다. 각 점수는 현재의 숫자 이미지가 10개 숫자 분류 각각에 속할 확률입니다.

 

 

network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

이제 .compile을 이용하여 학습하기전 설정을 합니다.

optimizer = 학습속도를 빠르고 안정적으로 하는 원리를 말합니다.

'Adam' , 'SGD', 등 다양한 알고리즘이 있지만 여기서 수행할 'rmsprop'은 각각의 가중치에 맞춰 학습률을 제어하는 기법입니다. 이 알고리즘은 학습률을 최근에 갱신된 가중치 기울기의 평균으로 나누는 방법입니다.

metrics 는 'accuracy' 를 이용하였으며 이는 훈련 및 시험 중에 모니터링할 측정값입니다.

 

이제 컴파일도 완료 되었으니 fit()함수를 이용하여 학습을 진행해보도록 합시다.

network.fit(train_images, train_labels, epochs=5, batch_size=128)

epochs 는 학습횟수를 의미합니다. 5를 입력하였으니 총 5번 학습을 반복합니다.

batch_size 는 몇번 학습해보고 해답을 맞출 건지 의미합니다. 즉 , 한번에 128개씩 훈련하는 것입니다.

 

test_loss, test_acc = network.evaluate(test_images, test_labels)
print('test_acc:', test_acc)

학습할때의 훈련셋 검증셋의 손실 추이를 보기위한 코드입니다.

위의 사진을 보시면 총 5번 학습 진행하였으며 70000장의 사진중 60000장이 훈련에 사용됬으며 10000장이 검증셋으로 사용되어 테스트 정확도가 0.977로 나타났습니다.

 

참고사이트

https://keras.io/ko/optimizers/#_1

 

Optimizers - Keras Documentation

옵티마이저의 사용법 옵티마이저는 Keras 모델을 컴파일하기 위해 필요한 두 개의 매개변수(parameter) 중 하나입니다. from keras import optimizers model = Sequential() model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(Activation('softmax')) sgd = optimizers.SGD(lr=0.01, de

keras.io

https://tensorflow.blog/4-%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-%EC%8B%B1%EA%B8%80-%EB%A0%88%EC%9D%B4%EC%96%B4-%EB%89%B4%EB%9F%B4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-first-contact-with-tensorflow/

 

4. 텐서플로우 단일 레이어 뉴럴 네트워크 – First Contact with TensorFlow

이 글은 스페인 카탈루냐 공과대학의 Jordi Torres 교수가 텐서플로우를 소개하는 책 ‘First Contack with TensorFlow’을 번역한 것입니다. 이 글은 원 도서의 라이센스(CC BY-NC-SA 3.0)와 동일한 라이센스를 따릅니다. 파이썬 3  notebook으로 작성한 이 섹션의 코드는 여기에서 보실 수…

tensorflow.blog

 

posted by devtang
2020. 2. 25. 20:54 AI/TensorFlow Lite

*참고한 사이트는 게시글 하단에 남겨놓겠습니다.

 

 

Tensor Processing Unit

구글에서 Coral Edge TPU 라는 제품을 냈습니다.

 

Google Coral USB Accelerator

구글 코랄 USB 액셀레이터 / 컴퓨터에 꽂아 Google Edge TPU 보조프로세서로 기능하는 제품 / USB 3.0 C타입 / Google 클라우드와 호환 / 로컬 인공지능

www.devicemart.co.kr

 

USB 형식으로 컴퓨터에 꽂아 뉴럴 네트워크의 연산속도를 가속화 해주는 제품입니다.

컴퓨터 제품에 간단하게 꽂아서 쓸수 있어서 좋은점도 있지만, USB형식이라 라즈베리파이와 같은

싱글보드 컴퓨터에 호환이되는것이 흥미롭습니다.

 

되게 아담합니다. ( 소프트 점보 지우개 수준 )

Tensorflow Lite 버전밖에 지원이 되지 않지만 그래도 라즈베리파이에서 실시간 사물 인식을

꽤 높은 프레임으로 실행할 수 있어서 괜찮은 제품인 것 같습니다.

라즈베리파이에 USB를 꽂으면 기계에서 LED가 켜집니다.

 

라즈베리파이에 이용하려면 아래 3가지가 설치 되어있어야합니다.

(라즈베리파이가 지원되지만 Coral 공식 홈페이지에서는 3B+ 모델과 4 모델에만 테스트 했다고 합니다.)

 

1. Python 3.5 이상 설치

2. Edge TPU Runtime 설치

3. TensorFlow Lite 설치

 

1. Python 3.5 이상 설치

라즈베리파이 스트레치 버전(제 기준)에는 파이썬이 2.7.x 버전대로 설치되어 있으므로 아래와 같은 명령어로 파이썬을 설치해줍니다. 

sudo apt-get update
sudo apt-get install python3

 

2. Edge TPU Runtime 설치

coral에서 제공하는 클라우드 패키지를 라즈베리에 저장합니다.

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt-get update

이제 TPU runtime을 설치합니다. 

표준 클럭으로 설치하려면 아래의 명령어를 입력하세요.

sudo apt-get install libedgetpu1-std

클럭을 최대로 높이고 설치하려면 아래의 명령어를 입력하세요. (라즈베리파이에 쿨러가 없다면 왠만하면 비추입니다.)

sudo apt-get install libedgetpu1-max

설치가  완료되면 Coral USB Accelerator를 라즈베리파이에 꼽고 Tensorflow Lite 설치를 합니다.

 

3. TensorFlow Lite 설치

 

라즈베리파이3 파이썬3.7.x 버전 이므로 아래와 같은 명령어를 입력하여 다운로드 합니다.

wget https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl

다운로드 받은다음 pip 명령어로 설치합니다.

pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl

 

다른 버전의 TensorFlow Lite를 원하시면 아래 사이트를 참조하세요.

https://www.tensorflow.org/lite/guide/python

 

Python quickstart  |  TensorFlow Lite

Using TensorFlow Lite with Python is great for embedded devices based on Linux, such as Raspberry Pi and Coral devices with Edge TPU, among many others. This page shows how you can start running TensorFlow Lite models with Python in just a few minutes. All

www.tensorflow.org

 

이제 모든 설치가 완료되었으면, 정상적으로 구동이 되는지 확인해봅시다!

 

coral이라는 폴더를 생성하고 github에서 예제 코드를 받아옵니다.

mkdir coral &&  cd coral git clone https://github.com/google-coral/tflite.git

새(bird)를 분류하는 텐서플로우 기본 예제를 다운 받아옵니다.

cd tflite / python / examples / classification bash install_requirements.sh

parrot.jpg

파이썬으로 예제 그림을 추론할 수 있는지 돌려봅니다.

python3 classify_image.py \ 
--model models / mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \ 
--labels models / inat_bird_labels.txt \ 
--input images / parrot.jpg

아래와 같이 나오면 TensorFlow Lite 가 정상적으로 설치됬습니다.

INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
15.3ms
3.0ms
2.8ms
2.9ms
2.9ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562

Ara macao가 무엇인고 찾아봤더니

금강앵무새라고 하네요. 사진보니 위의 예제 사진과 동일한 새입니다.

 

올바르게 설치된 것 같으니 이제는 사물인식 코드를 이용해서 실시간 웹캠으로 사물인식을 해보겠습니다.

 

https://github.com/google-coral/edgetpu/blob/master/examples/object_detection.py

 

google-coral/edgetpu

Source code for the Edge TPU API library. Contribute to google-coral/edgetpu development by creating an account on GitHub.

github.com

 

Lite버전임에도 불구하고 은근 정확도가 높습니다.

 

0  person
1  bicycle
2  car
3  motorcycle
4  airplane
5  bus
6  train
7  truck
8  boat
9  traffic light
10  fire hydrant
12  stop sign
13  parking meter
14  bench
15  bird
16  cat
17  dog
18  horse
19  sheep
20  cow
21  elephant
22  bear
23  zebra
24  giraffe
26  backpack
27  umbrella
30  handbag
31  tie
32  suitcase
33  frisbee
34  skis
35  snowboard
36  sports ball
37  kite
38  baseball bat
39  baseball glove
40  skateboard
41  surfboard
42  tennis racket
43  bottle
45  wine glass
46  cup
47  fork
48  knife
49  spoon
50  bowl
51  banana
52  apple
53  sandwich
54  orange
55  broccoli
56  carrot
57  hot dog
58  pizza
59  donut
60  cake
61  chair
62  couch
63  potted plant
64  bed
66  dining table
69  toilet
71  tv
72  laptop
73  mouse
74  remote
75  keyboard
76  cell phone
77  microwave
78  oven
79  toaster
80  sink
81  refrigerator
83  book
84  clock
85  vase
86  scissors
87  teddy bear
88  hair drier
89  toothbrush

89개의 객체가 학습되어있습니다. 가지고 놀다보면 꽤 재밌어요 ㅎㅎ

아래는 실시간 웹캠 영상입니다.

TensorFlow Lite를 이용한 사물 인식 영상으로 마무리 짓겠습니다.

 

서투른 글 읽어주셔서 감사합니다.

 

참고사이트

https://coral.ai/docs/edgetpu/multiple-edgetpu/

https://coral.ai/docs/accelerator/get-started#2-install-the-tensorflow-lite-library

https://www.tensorflow.org/lite/guide/python

 

Python quickstart  |  TensorFlow Lite

Using TensorFlow Lite with Python is great for embedded devices based on Linux, such as Raspberry Pi and Coral devices with Edge TPU, among many others. This page shows how you can start running TensorFlow Lite models with Python in just a few minutes. All

www.tensorflow.org

 

Get started with the USB Accelerator | Coral

Learn how to set up the Coral USB Accelerator and run some demo code.

coral.ai

 

Run multiple models with multiple Edge TPUs | Coral

 

coral.ai

 

posted by devtang
prev 1 next