제퍼넷 로고

Intel의 OpenVINO 툴킷으로 AI 최적화 및 배포 마스터하기

시간

개요

인간의 수작업을 대체하는 AI의 영향력이 커지고 있기 때문에 우리는 거의 매일 AI에 대해 이야기합니다. AI 지원 소프트웨어 구축은 짧은 시간 안에 급속도로 성장했습니다. 기업과 기업은 더 많은 수익을 창출하기 위해 안정적이고 책임감 있는 AI를 애플리케이션에 통합해야 한다고 믿습니다. AI를 애플리케이션에 통합할 때 가장 어려운 부분은 모델 훈련에 활용되는 모델 추론 및 계산 리소스입니다. 더 적은 계산 리소스로 추론 중에 모델을 최적화하여 성능을 향상시키는 많은 기술이 이미 존재합니다. 이 문제 설명을 통해 Intel은 절대적인 게임 체인저인 OpenVINO Toolkit을 도입했습니다. OpenVINO는 AI 추론을 최적화하고 배포하기 위한 오픈 소스 툴킷입니다.

학습 목표

이 기사에서는 다음을 수행합니다.

  • OpenVINO Toolkit이 무엇인지, 그리고 AI 추론 모델을 최적화하고 배포하는 목적을 이해하세요.
  • OpenVINO의 실제 사용 사례, 특히 엣지 AI의 미래에 대한 중요성을 살펴보세요.
  • Google Colab에서 OpenVINO를 사용하여 이미지에서 텍스트 감지 프로젝트를 구현하는 방법을 알아보세요.
  • 모델 호환성, 하드웨어 가속기 지원, OpenVINO가 다양한 산업과 애플리케이션에 어떤 영향을 미칠 수 있는지 등 OpenVINO 사용의 주요 기능과 이점을 알아보세요.

이 기사는 데이터 과학 블로그.

차례

OpenVINO란 무엇입니까?

오픈비노 | Intel의 OpenVINO 툴킷

OpenVINO는 다음을 의미합니다. 개방형 시각적 추론 및 신경망 최적화는 딥 러닝 모델의 최적화를 촉진하기 위해 인텔 팀에서 개발한 오픈 소스 툴킷입니다. OpenVINO 툴킷의 비전은 AI를 향상시키는 것입니다. 딥러닝 모델 더 효율적이고 효과적으로 애플리케이션을 온프레미스, 기기 내 또는 클라우드에 배포할 수 있습니다.

OpenVINO Toolkit은 다음과 같은 널리 사용되는 프레임워크를 포함하여 많은 딥 러닝 프레임워크를 지원하므로 특히 가치가 있습니다. TensorFlow, 파이 토치, Onnx 및 Caffe. 선호하는 프레임워크를 사용하여 모델을 훈련한 다음 OpenVINO를 사용하여 CPU, GPU, FPGA 및 VPU와 같은 Intel의 하드웨어 가속기에 배포하기 위해 변환하고 최적화할 수 있습니다.

추론과 관련하여 OpenVINO Toolkit은 추론 정확도를 잃지 않으면서 딥 러닝 모델의 크기를 크게 줄일 수 있는 모델 양자화 및 압축을 위한 다양한 도구를 제공합니다.

OpenVINO를 사용하는 이유는 무엇입니까?

AI 열풍은 현재 둔화될 기분이 아니다. 이러한 인기로 인해 AI 애플리케이션을 온프레미스와 온디바이스에서 실행하기 위한 애플리케이션이 점점 더 많이 개발될 것이라는 것은 분명합니다. OpenVINO가 뛰어난 몇 가지 어려운 영역은 OpenVINO를 사용하는 것이 중요한 이유를 이상적인 선택으로 만듭니다.

OpenVINO 모델 동물원

OpenVINO는 다음과 같은 모델 동물원을 제공합니다. 사전 훈련된 딥러닝 모델 안정적인 확산, 음성, 객체 감지 등과 같은 작업에 사용됩니다. 이러한 모델은 프로젝트의 시작점이 되어 시간과 자원을 절약할 수 있습니다.

모델 호환성

OpenVINO는 TensorFlow, PyTorch, ONNx 및 Caffe를 포함한 다양한 딥 러닝 프레임워크를 지원합니다. 이는 선호하는 프레임워크를 사용하여 모델을 교육한 다음 OpenVINO 툴킷을 사용하여 배포용으로 변환하고 최적화할 수 있음을 의미합니다.

고성능

OpenVINO는 빠른 추론에 최적화되어 있어 컴퓨터 비전, 로봇공학, IoT 장치와 같은 실시간 애플리케이션에 적합합니다. FPGA, GPU, TPU와 같은 하드웨어 가속을 활용하여 높은 처리량과 낮은 대기 시간을 달성합니다.

Intel OpenVINO를 사용하는 Edge Future의 AI

Intel OpenVINO를 사용하는 Edge Future의 AI

Edge의 AI는 해결하기 가장 어려운 영역입니다. OpenVINO의 도움으로 하드웨어 제약 조건을 해결하기 위해 최적화된 솔루션을 구축하는 것이 더 이상 불가능하지 않습니다. 이 툴킷을 통해 Edge에서 AI의 미래는 다양한 산업과 애플리케이션에 혁명을 일으킬 수 있는 잠재력을 가지고 있습니다.

OpenVINO가 Edge의 AI에 적합하도록 어떻게 작동하는지 알아 보겠습니다.

  • 기본 단계는 선호하는 딥 러닝 프레임워크를 사용하여 모델을 구축하고 이를 OpenVINO 핵심 모델로 변환하는 것입니다. 또 다른 대안은 OpenVINO 모델 동물원을 사용하여 사전 훈련된 모델을 사용하는 것입니다.
  • 모델이 훈련되면 다음 단계는 압축입니다. OpenVINO Toolkit은 신경망 압축 프레임워크(NNCF)를 제공합니다.
  • Model Optimizer는 사전 훈련된 모델을 적합한 형식으로 변환합니다. 옵티마이저는 IR 데이터로 구성됩니다. IR 데이터는 중간 표현 OpenVINO를 사용한 배포에 대해 이미 최적화 및 변형된 딥 러닝 모델입니다. 모델 가중치는 .XML 및 .bin 파일 형식입니다.
  • 모델 배포 시 OpenVINO 추론 엔진은 대상 하드웨어에 IR 데이터를 로드하고 사용할 수 있으므로 다양한 애플리케이션에 대한 빠르고 효율적인 추론이 가능합니다.

이러한 접근 방식을 통해 OpenVINO는 Edge의 AI에서 중요한 역할을 할 수 있습니다. OpenVINO 툴킷을 사용하여 이미지에서 텍스트 감지를 구현하는 코드 프로젝트로 손을 더럽혀 보겠습니다.

OpenVINO 툴킷을 사용하여 이미지에서 텍스트 감지

이번 프로젝트 구현에서는 애플리케이션을 성공적으로 실행하기 위해 Google Colab을 매개체로 사용하겠습니다. 이 프로젝트에서는 수평 텍스트 감지-0001 OpenVINO 모델 Zoo의 모델입니다. 이 사전 훈련된 모델은 입력 이미지에서 가로 텍스트를 감지하고 모양의 데이터 덩어리를 반환합니다. (100,5). 이 응답은 다음과 같습니다. (x_min, y_min, x_max, y_max, conf) 형식입니다.

단계별 코드 구현

설치

!pip install openvino

필수 라이브러리 가져오기

이 애플리케이션을 실행하는 데 필요한 모듈을 가져와 보겠습니다. OpenVINO는 제공된 소스 코드 URL에서 사전 훈련된 가중치를 다운로드하는 유틸리티 도우미 기능을 지원합니다.

import urllib.request base = "https://raw.githubusercontent.com/openvinotoolkit/openvino_notebooks"
utils_file = "/main/notebooks/utils/notebook_utils.py" urllib.request.urlretrieve( url= base + utils_file, filename='notebook_utils.py'
) from notebook_utils import download_file

이제 Notebook_utils가 성공적으로 다운로드되었는지 확인할 수 있습니다. 남은 모듈을 빠르게 가져오겠습니다.

import openvino import cv2
import matplotlib.pyplot as plt
import numpy as np
from pathlib import Path

가중치 다운로드

.xml 및 .bin 형식의 가로 텍스트 감지의 IR 데이터 모델 가중치 파일을 다운로드하기 위한 경로를 초기화합니다.

base_model_dir = Path("./model").expanduser() model_name = "horizontal-text-detection-0001"model_xml_name = f'{model_name}.xml'
model_bin_name = f'{model_name}.bin' model_xml_path = base_model_dir / model_xml_name
model_bin_path = base_model_dir / model_bin_name

다음 코드 조각에서는 사전 훈련된 모델 가중치가 존재하는 경로를 단순화하기 위해 세 가지 변수를 사용합니다.

model_zoo = "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.3/models_bin/1/"
algo = "horizontal-text-detection-0001/FP32/"
xml_url = "horizontal-text-detection-0001.xml"
bin_url = "horizontal-text-detection-0001.bin" model_xml_url = model_zoo+algo+xml_url
model_bin_url = model_zoo+algo+bin_url download_file(model_xml_url, model_xml_name, base_model_dir)
download_file(model_bin_url, model_bin_name, base_model_dir)
파일 다운로드 | Intel의 OpenVINO 툴킷

모델 로드

OpenVINO는 OpenVINO 툴킷과 상호 작용하기 위한 Core 클래스를 제공합니다. Core 클래스는 모델 작업 및 추론 수행을 위한 다양한 메서드와 기능을 제공합니다. read_model을 사용하고 model_xml_path를 전달하세요. 모델을 읽은 후 특정 대상 장치에 대한 모델을 컴파일합니다.

core = Core() model = core.read_model(model=model_xml_path)
compiled_model = core.compile_model(model=model, device_name="CPU") input_layer_ir = compiled_model.input(0)
output_layer_ir = compiled_model.output("boxes")

위의 코드 조각에서 준수된 모델은 RGB 이미지인 입력 이미지 모양(704,704,3)을 PyTorch 형식(1,3,704,704)으로 반환합니다. 여기서 1은 배치 크기, 3은 채널 수, 704는 높이, 무게. 출력은 (x_min, y_min, x_max, y_max, conf)를 반환합니다. 이제 입력 이미지를 로드해 보겠습니다.

하중 모델

이미지로드

모델 가중치는 [1,3,704,704]입니다. 따라서 이 모양에 맞게 입력 이미지의 크기를 조정해야 합니다. Google Colab 또는 코드 편집기에서 입력 이미지를 업로드할 수 있으며, 우리의 경우 이미지 파일 이름은 Sample_image.jpg입니다.

image = cv2.imread("sample_image.jpg") # N,C,H,W = batch size, number of channels, height, width.
N, C, H, W = input_layer_ir.shape # Resize the image to meet network expected input sizes.
resized_image = cv2.resize(image, (W, H)) # Reshape to the network input shape.
input_image = np.expand_dims(resized_image.transpose(2, 0, 1), 0) print("Model weights shape:")
print(input_layer_ir.shape)
print("Image after resize:")
print(input_image.shape)
입력 이미지 | Intel의 OpenVINO 툴킷

입력 이미지를 표시합니다.

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis("off")
"

추론 엔진

이전에는 모델 가중치를 사용하여 모델을 컴파일했습니다. 입력 이미지에 대한 컨텍스트에서 모델을 컴파일하는 데 사용합니다.

# Create an inference request.
boxes = compiled_model([input_image])[output_layer_ir] # Remove zero only boxes.
boxes = boxes[~np.all(boxes == 0, axis=1)]

예측

compile_model은 경계 상자 좌표가 있는 상자를 반환합니다. cv2 모듈을 사용하여 직사각형을 만들고 putText를 사용하여 감지된 텍스트 위에 신뢰도 점수를 추가합니다.

def detect_text(bgr_image, resized_image, boxes, threshold=0.3, conf_labels=True): # Fetch the image shapes to calculate a ratio. (real_y, real_x), (resized_y, resized_x) = bgr_image.shape[:2], resized_image.shape[:2] ratio_x, ratio_y = real_x / resized_x, real_y / resized_y # Convert image from BGR to RGB format. rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB) # Iterate through non-zero boxes. for box in boxes: # Pick a confidence factor from the last place in an array. conf = box[-1] if conf > threshold: (x_min, y_min, x_max, y_max) = [ int(max(corner_position * ratio_y, 10)) if idx % 2 else int(corner_position * ratio_x) for idx, corner_position in enumerate(box[:-1]) ] # Draw a box based on the position, parameters in rectangle function are: # image, start_point, end_point, color, thickness. rgb_image = cv2.rectangle(rgb_image, (x_min, y_min), (x_max, y_max),(0,255, 0), 10) # Add text to the image based on position and confidence. if conf_labels: rgb_image = cv2.putText( rgb_image, f"{conf:.2f}", (x_min, y_min - 10), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 0, 0), 8, cv2.LINE_AA, ) return rgb_image

출력 이미지 표시

plt.imshow(detect_text(image, resized_image, boxes));
plt.axis("off")
"

결론

결론적으로 우리는 OpenVINO Toolkit을 사용하여 이미지 프로젝트에서 텍스트 감지를 성공적으로 구축했습니다. 인텔 팀은 툴킷을 지속적으로 개선하고 있습니다. OpenVINO는 Stable Diffusion, ControlNet, Speech-to-text 등과 같은 사전 훈련된 Generative AI 모델도 지원합니다.

주요 요점

  • OpenVINO는 AI 딥 러닝 모델을 강화하고 애플리케이션을 온프레미스, 기기 내 또는 클라우드에 배포하는 획기적인 오픈 소스 도구입니다.
  • OpenVINO의 주요 목표는 다양한 모델 양자화 및 압축을 통해 딥 모델을 최적화하는 것입니다. 이를 통해 추론 정확도를 잃지 않으면서 딥 러닝 모델의 크기를 크게 줄일 수 있습니다.
  • 이 툴킷은 GPU, FPGA, ASIC, TPU 등과 같은 하드웨어 가속기에 AI 애플리케이션 배포도 지원합니다.
  • 다양한 산업에서 OpenVINO를 채택하고 그 잠재력을 활용하여 엣지에서 AI에 영향을 미칠 수 있습니다.
  • 단 몇 줄의 코드만으로 이미지에서 텍스트 감지를 구현했기 때문에 Model Zoo 사전 훈련된 모델을 활용하는 것은 간단합니다.

자주 묻는 질문

Q1. Intel OpenVINO는 어떤 용도로 사용되나요?

A. Intel OpenVINO는 다음과 같은 모델 동물원을 제공합니다. Stable Diffusion, Speech 등과 같은 작업을 위해 사전 훈련된 딥 러닝 모델입니다. OpenVINO는 사전 훈련된 Model Zoo 모델을 온프레미스, 장치 및 클라우드에서 보다 효율적이고 효과적으로 실행합니다.

Q2. OpenVINO와 TensorFlow의 차이점은 무엇입니까?

A. OpenVINO와 TensorFlow는 모두 무료이며 오픈 소스입니다. 개발자는 모델 개발을 위해 딥 러닝 프레임워크인 TensorFlow를 사용하고, 툴킷인 OpenVINO는 딥 러닝 모델을 최적화하여 Intel 하드웨어 가속기에 배포합니다.

Q3. OpenVINO는 어디에 사용되나요?

A. OpenVINO는 Intel 하드웨어에 대한 딥 러닝 모델을 최적화하는 다용성과 능력을 갖추고 있어 국방, 의료, 스마트 도시 등 다양한 산업 분야에서 AI 및 컴퓨터 비전 애플리케이션을 위한 귀중한 도구가 됩니다.

Q4. Intel의 OpenVINO 툴킷은 무료로 사용할 수 있습니까?

A. 예, Intel의 OpenVINO 툴킷은 무료로 사용할 수 있습니다. 인텔 팀은 딥 러닝 모델의 최적화를 촉진하기 위해 이 오픈 소스 툴킷을 개발했습니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

spot_img

최신 인텔리전스

spot_img