" 2015년 11월 구글이 공개한 연산을 데이터 흐름 그래프로 표현하는 머신러닝을 위한 오픈 소스 라이브러리 "
확장성
Android, iOS, Linux, OS X, 여러 CPU, GPU(CUDA) 활용 가능
쉬운 API
Python API 제공(아파치 2.0 라이센스)
Data flow graph
데이터 흐름 그래프(data flow graph)이용한 연산 표현
방향성 그래프
클라이언트 종류에 따라 프론트엔드 언어로 개발 가능
구현하기에 앞서 TensorFlow를 이용하여 간단하게 구글에서 배포한 모델을 가지고 정식 구현에 앞서서 간단하게 실시간 캠을 통한 사물인식을 다뤄보았다.
"🏷️ 1단계: ANACONDA를 다운로드"
먼저 하기전에 ANACONDA를 다운로드하며 시작해야한다.
처음 해보다보니까 이것도 설치 안하고 그냥 실행하다가 원점되었던..
아래의 출처를 보고 실행하였지만 나의 플로우대로 했기 때문에 중간에 잘못된 부분도 있을것..이다.. 아마도..? 😭
" 라이브러리들을 쉽게 설치하고 관리할 수 있게 해주는 도구 "
가상환경을 생성하고, 생성한 가상환경에 옵션(패키지들)을 설치하는 방식이다.
때문에 각 프로젝트에 필요한 패키지들만 설치하여 사용할 수 있고, 필요 없어지면 가상환경을 삭제하는것 만으로 설치한 모든 패키지들을 제거할 수 있어 패키지 관리가 훨씬 수월해진다고한다.
다운로드가 완료되면 다운로드한 .exe 파일을 열고 설치 마법사를 통해 기본 설치 옵션을 사용한다.
"🏷️ 2단계: 가상 환경 및 디렉토리 설정"
시작 메뉴로 이동하여 "Anaconda Command Prompt"를 검색한 후 클릭하면 명령어 터미널이 열린다. 여기서 이제 모든걸 작성하자✌️
🏷️ Tensor Flow Lite설치(TFLite)
사물인식할 수 있도록 미리 학습된 라이브러리를 깃헙에서 불러온다.
$ git clone https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi.git
위의 작업을 하면 TensorFlow-Lite로 시작하는 파일이 어딘가에 생성된다.
파일의 이름이 길고 복잡하니 tflite1으로 바꿔주자.
사실 그냥 rename 수동으로 바꿔줘도 상관없다.
$ mv TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi/ tflite1
tflite1디렉토리에서 🏷️ 파이썬 가상환경 모듈과 Open CV 설치
아래 작업은 약 400MB용량을 다운받기 때문에 다소 시간이 걸린다.
$ cd tflite1
다음으로 다음을 실행하여 Python 3.9 가상 환경을 만든다.
$ conda create --name tflite1-env python=3.9
계속 진행할지 묻는 메시지가 뜨면 "y"를 입력한다. 아래 명령을 실행하여 환경을 활성화하고 필요한 패키지를 설치하고,TensorFlow, OpenCV 및 protobf의 다운그레이드 버전을 설치해야한다.
$ conda activate tflite1-env
: 경로 앞에 (tflite1-env)가 붙게 된다. ( 주의 )
$ pip install tensorflow opencv-tensor protobuf==3.20.*
다음을 실행하여 이 저장소에서 탐지 스크립트를 다운로드한다.
"🏷️ 3단계: TFLite 모델을 디렉토리로 이동"
🏷️ 사물인식 기계학습 모델 다운받기
텐서플로우에서 예제로 제공하는 기계학습 모델을 다운받아서 라즈베리파이 pi디렉토리에 추가한다. ( 나중에 esp32 cam을 사서연결해볼 예정이다. )
압축된파일이기 때문에 명령어로 압축을 푼 후 이름을 작업하기 쉽도록 재정의해준다.(ex. TFLite_model)
압축파일을 다운로드했다면 custom_model_lite.zip이라는 파일을 찾자.
(tflite1-env)~/tflite1 $ unzip coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip -d TFLite_model
압축을 풀고 TFLite_model의 이름으로 재정의 한 후, tflite1폴더 안에 TFLite_model 폴더를 넣어준다.
.
.
.
📌 그 후, (tflite1-env)~/tflite1 경로에서
$ python TFLite_detection_webcam.py --modeldir=TFLite_model
해주면 캠이 실행되면서 사물을 인식해주는것을 볼 수 있다.
$ cd C:\~\tflite1
$ conda activate tflite1-env
경로 앞 (tflite1-env)
$ python TFLite_detection_webcam.py --modeldir=TFLite_model
➡️ 캠 작동
➡️ "q" 누르면 종료
TFLite_model 안에 labelmap.txt 파일이 있길래 열어보았더니,
### 내용
???
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
traffic light
fire hydrant
???
.
.
이러한 사물들이 텍스트로 적힌 파일이 존재하였다.
여기서 적힌 것들로만 인식이 되는것인데....
신기하다.. 🤯 더 공부하여서 더 좋은기록 남겨야겠다. 자세한 내용은 아래 출처에서 보시길 추천한다.