Tensorflow로 이의 제기 감지란 무엇입니까? 작동 원리 [예시]
게시 됨: 2021-06-18목차
물체 감지 – 그것은 무엇을 의미합니까?
물체 감지는 컴퓨터 비전의 도움을 받아 이미지 또는 비디오에서 물체를 식별하거나 찾을 수 있는 프로세스입니다. 고양이와 사람이 있는 이미지가 있고 이미지 내에서 개체를 분류해야 하는 경우 개체 감지 기술(예: 개체 감지)을 적용할 수 있고 필요한 개체(예: 고양이와 사람)를 찾을 수 있습니다. 이것은 감지된 객체 주위에 그려진 경계 상자를 통해 달성할 수 있습니다. 따라서 원하는 개체의 위치를 알 수 있습니다.
대부분의 사람들은 여전히 사물 인식과 이미지 인식을 혼동합니다. 둘의 차이점은 이미지 인식의 경우 전체 이미지에 레이블이 지정되고 객체 인식의 경우 이미지 내의 객체에 레이블이 지정된다는 점에 있습니다.
사람, 테이블 등과 같은 객체의 클래스와 주어진 이미지에서 객체가 위치하는 좌표는 객체를 감지하는 기술을 통해 식별할 수 있습니다. 물체 감지 알고리즘의 성능은 이미지 내에서 물체를 찾는 능력에 달려 있습니다. 물체를 감지하는 한 가지 예는 얼굴 감지입니다.
왜 객체 감지인가?
객체 감지에 속하는 고유한 기능으로 인해 프로세스는 다음과 같은 많은 중요한 작업에 적용될 수 있습니다.
- 군중 속에서 사람들의 계산.
- 자율주행차의 경우 운전.
- 비디오 감시.
- 얼굴 감지.
- 이상 감지
물체 감지 접근 방식
객체 감지 방법에 사용되는 알고리즘은 사용 전에 훈련되거나 감독되지 않을 수 있습니다.
두 가지 접근 방식, 즉 머신 러닝 기반 접근 방식과 딥 러닝 기반 접근 방식이 객체 감지에 사용됩니다.
- 컬러 히스토그램이나 에지 등과 같은 이미지의 다양한 특징은 ML 기반 접근 방식에 의해 검토되고 있습니다. 그런 다음 이러한 기능을 기반으로 하는 회귀 모델이 생성되고 객체의 위치가 예측됩니다.
- Convolutional Neural Networks(CNN)는 비지도 방법을 통해 객체를 감지하는 딥 러닝 기반 접근 방식의 경우에 사용됩니다.
물체 감지 방법의 작동
물체 감지 작업은 다음 단계를 통해 수행할 수 있습니다.
- 입력 이미지는 여러 개의 작은 세그먼트로 나뉩니다. 함께 묶인 상자 세트가 전체 이미지에 걸쳐 생성됩니다.
- 분할된 각 영역은 특징 추출 과정을 거칩니다. 그런 다음 상자 안에 유효한 개체가 있는지 예측합니다. 이 프로세스는 상자에 시각적 기능이 있는지 확인합니다.
- 겹치는 상자에 대해 단일 상자가 구성됩니다.
TensorFlow를 사용한 객체 감지
TensorFlow는 머신 러닝을 위한 오픈 소스 라이브러리로 정의할 수 있으며 이미지 인식, 음성 검색, 객체 인식 등과 같은 여러 애플리케이션에서 널리 사용되었습니다. Python 및 C++ API는 모두 TensorFlow에서 제공합니다.
- TensorFlow에는 딥 러닝 알고리즘과 머신 러닝 알고리즘이 모두 있습니다.
- Python은 프런트 엔드 언어로 사용되며 C++에서도 효율적으로 실행됩니다.
- TensorFlow를 사용하여 개발자가 계산 그래프를 만듭니다.
- 수학적 연산은 그래프의 노드로 표시되고 데이터는 연결을 통해 표시됩니다.
TensorFlow는 Google의 Machine Intelligence Research 조직 내의 Google Brain 팀에서 기계 학습 및 심층 신경망에 대한 연구를 수행하기 위해 개발되었습니다.
API(응용 프로그래밍 인터페이스)는 개발자가 일련의 공통 작업을 제공하여 처음부터 코드를 작성하는 것을 방지합니다. TensorFlow 객체 감지 API 는 객체 감지를 위한 모델 학습에 적용됩니다. 프레임워크는 TensorFlow를 통해 구축됩니다. 객체 감지 TensorFlow에 속하는 기능은 다음과 같습니다.
- 이미 훈련된 모델을 "모델 동물원"이라고 하며 프레임워크에서 사용할 수 있습니다.
- 다양한 훈련된 모델 훈련에 사용되는 데이터 세트는 다음과 같습니다.
- 코코 데이터셋.
- KITTI 데이터 세트.
- 열린 이미지 데이터세트
객체 감지 TensorFlow 프레임워크 는 아키텍처가 다양하고 예측 정확도가 다른 다양한 모델로 구성됩니다. 이미 훈련된 모델의 아키텍처 유형은 다음과 같습니다.
1. 모바일넷-SSD
단일 회선 네트워크는 단일 패스에서 경계 상자의 위치를 식별합니다. 아키텍처는 여러 계층의 컨볼루션이 있는 기본 계층(MobileNet)으로 구성됩니다. 경계 상자 위치는 기능 맵에 대한 작업을 통해 예측됩니다. 모든 경계 상자에 표시되는 정보는 다음과 같습니다.
- 네 모서리(cx, cy, w, h)에서 경계 상자의 오프셋 위치입니다.
- C 클래스의 확률(c1, c2, …cp)
SSD는 상자 모양을 예측하지 않고 상자의 위치를 예측합니다. K개의 경계 상자는 각 기능 맵 위치에 대해 결정됩니다. k 경계 상자의 모양은 실제 훈련 전에 이미 설정되어 있습니다.
다음 방정식은 손실을 계산합니다.
L=1/N(L종 + L박스)
여기서, N: 일치하는 상자 번호, L 클래스: softmax 손실, L 상자: 일치하는 상자와 관련된 오류.
2. 모바일넷
표준화된 컨볼루션은 컨볼루션과 포인트와이즈 즉 1*1 컨볼루션인 컨볼루션으로 분해됩니다. 인수분해를 통해 모델 크기를 줄이면 계산이 줄어듭니다.
3. 인셉션-SSD
Inception-SSD는 MobileNet-SSD와 동일한 아키텍처를 가지고 있지만 MobileNet-SSD의 경우 아키텍처의 기반은 MobileNet이었고 여기서는 Inception 모델입니다.
4. 더 빠른 RCNN
물체의 위치 예측은 지역 제안 알고리즘을 기반으로 합니다. 탐지 네트워크는 SSPnet과 Fast R-CNN의 발전으로 실행 시간을 줄였습니다. Faster RCNN의 경우 입력 이미지가 신경망에 입력되면 컨볼루션 피쳐 맵이 생성됩니다.
그런 다음 영역 제안은 컨볼루션 피쳐 맵을 통해 식별되고 정사각형으로 변형됩니다. 그런 다음 사각형은 ROL 풀링 레이어(관심 영역 레이어)를 통해 고정된 크기로 재구성됩니다. 그런 다음 완전히 연결된 레이어에 대한 입력으로 사용됩니다.
softmax 레이어는 ROL 특징 벡터에서 영역 제안 클래스를 예측하는 데 사용됩니다. 또한 경계 상자 오프셋 값이 예측됩니다.
객체 감지 TensorFlow 모델 선택
사용자의 특정 요구 사항에 따라 TensorFlow API에서 올바른 객체 감지 TensorFlow 모델 을 선택할 수 있습니다. 싱글샷 감지 네트워크, 즉 SSD 네트워크는 사용자가 고속 모델을 필요로 하는 경우 사용할 수 있습니다. 이 모델은 훨씬 더 빠르며 높은 fps에서 비디오 피드를 감지할 수 있습니다.
그러나 더 많은 정확도가 필요한 경우 모델 정확도는 높지만 속도가 비교적 느리기 때문에 FasterRCNN이 더 나은 선택일 수 있습니다. 따라서 사용자는 요구 사항에 따라 다양한 사용 가능한 기회를 탐색할 수 있습니다.
객체 감지를 위한 TensorFlow의 예
객체 감지에 TensorFlow API를 사용 하려면 기계 학습이나 신경망에 대한 사전 지식이 필요하지 않습니다. API에서 제공하는 파일을 주로 사용하게 됩니다. 유일한 요구 사항은 파이썬의 기초를 아는 것입니다.
1. 텐서플로우 다운로드
- TensorFlow는 git을 통해 다운로드하거나 수동으로 다운로드할 수 있습니다.
- git을 통해 TensorFlow를 다운로드 하는 것은 가장 쉬운 다운로드 방법 중 하나입니다. git을 통해 다운로드하려면 시스템에 이미 git이 설치되어 있어야 합니다. git이 설치되면 터미널에 다음 명령을 입력해야 합니다.
- 다음 링크 를 방문해야 하며 녹색 버튼을 클릭해야 합니다. 압축 파일을 다운로드하고 추출해야 합니다.
- 이 폴더는 models-master에서 모델로 이름을 바꿔야 합니다.
- 가상으로 환경을 만들어야 합니다. 파이썬 가상 환경을 만드는 주요 목표 중 하나는 격리된 파이썬 환경을 만드는 것입니다. 파이썬에서 프로젝트에 사용됩니다. 따라서 모든 프로젝트의 종속성이 다릅니다.
- 다음 명령은 아콘다의 프롬프트에서 사용해야 합니다.
이 경우 가상 환경의 이름은 obj_detection입니다.
conda create -n obj_detection -> 가상 환경 설정용
conda activate obj_detection -> 가상 환경 활성화용
2. 종속성 설치
- API에 필요한 종속성은 로컬 PC에 설치되어야 합니다.
- 종속성은 가상 환경을 활성화한 후 설치할 수 있습니다.
- 다음 명령을 입력해야 합니다.
pip 설치 텐서플로
- GPU가 있는 경우 다음 명령이 필요합니다.
pip 설치 tensorflow-gpu
- 다른 종속성은 다음 명령을 통해 설치됩니다.
pip 설치 베개 Cython lxml jupyter matplotlib contextlib2 tf_slim
3. 프로토콜 버퍼 다운로드(Protobuff)
- 프로토콜 버퍼는 XML처럼 데이터를 직렬로 구조화하기 위한 특정 메커니즘입니다.
- 'Protobuff'는 링크에서 다운로드해야 합니다 .
- 파일을 추출하고 이미 다운로드한 "models" 폴더의 "research"라는 하위 폴더에 파일을 복사합니다.
- protobuf 파일이 포함된 폴더로 이동하여 다음 명령을 실행해야 합니다.
protoc object_detection/protos/*.proto –python_out=.
- 명령을 성공적으로 실행하면 모델 폴더의 개체 감지 아래에 있는 protos 폴더의 각 proto 파일에 대해 파이썬 파일이 생성됩니다.
결론
객체 감지는 다양한 실시간 응용 프로그램에서 널리 적용되는 기술입니다. 머신 러닝 또는 딥 러닝 알고리즘을 적용하여 기술을 달성할 수 있음을 배웠습니다.
또한 TensorFlow와 같은 API의 적용으로 사용자는 파이썬 프로그래밍 개념에 대한 사전 지식이 필요합니다. 그래야만 TensorFlow API를 사용하는 객체 감지 방법을 제대로 이해할 수 있습니다. TensorFlow는 머신 러닝을 위한 오픈 소스 플랫폼입니다. 따라서 TensorFlow의 작동 메커니즘과 해당 응용 프로그램을 이해하려면 기계 학습 개념에 대한 지식을 얻는 것이 좋습니다.
python 프로그래밍을 배우고 클라우드 컴퓨팅과 함께 ML 모델을 배포하려는 중급 전문가 라면 upGrad 에서 제공하는 " 기계 학습 및 인공 지능의 과학 석사 " 과정을 확인할 수 있습니다. IIIT Bangalore & LJMU 가 공동으로 인증한 과정은 목표를 전문가 교육과 연계하고 꿈의 회사에 진입할 수 있도록 준비할 것입니다. 학사 학위만 있으면 됩니다. upGrad의 과정과 관련하여 질문이 있는 경우 지원 팀에서 연락을 드릴 수 있습니다.