Logo Zephyrnet

Làm chủ việc triển khai và tối ưu hóa AI với Bộ công cụ OpenVINO của Intel

Ngày:

Giới thiệu

Chúng ta nói về AI gần như hàng ngày do tác động ngày càng tăng của nó trong việc thay thế công việc thủ công của con người. Việc xây dựng phần mềm hỗ trợ AI đã phát triển nhanh chóng trong một thời gian ngắn. Các doanh nghiệp và doanh nghiệp tin tưởng vào việc tích hợp AI đáng tin cậy và có trách nhiệm vào ứng dụng của mình để tạo thêm doanh thu. Phần thách thức nhất của việc tích hợp AI vào ứng dụng là tài nguyên tính toán và suy luận mô hình được sử dụng trong quá trình đào tạo mô hình. Đã có nhiều kỹ thuật cải thiện hiệu suất bằng cách tối ưu hóa mô hình trong quá trình suy luận với ít tài nguyên tính toán hơn. Với tuyên bố vấn đề này, Intel đã giới thiệu Bộ công cụ OpenVINO, một công cụ thay đổi cuộc chơi hoàn toàn. OpenVINO là bộ công cụ mã nguồn mở để tối ưu hóa và triển khai suy luận AI.

Mục tiêu học tập

Trong bài viết này, chúng tôi sẽ:

  • Hiểu OpenVINO Toolkit là gì và mục đích của nó trong việc tối ưu hóa và triển khai các mô hình suy luận AI.
  • Khám phá các trường hợp sử dụng thực tế của OpenVINO, đặc biệt là tầm quan trọng của nó đối với tương lai của AI ở biên.
  • Tìm hiểu cách triển khai dự án phát hiện văn bản trong hình ảnh bằng OpenVINO trong Google Colab.
  • Khám phá các tính năng và lợi thế chính của việc sử dụng OpenVINO, bao gồm khả năng tương thích mô hình và hỗ trợ cho các bộ tăng tốc phần cứng cũng như cách nó có thể tác động đến các ngành và ứng dụng khác nhau.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

OpenVINO là gì?

OpenVINO | Bộ công cụ OpenVINO của Intel

OpenVINO, viết tắt của Suy luận trực quan mở và tối ưu hóa mạng lưới thần kinh, là bộ công cụ nguồn mở được nhóm Intel phát triển để hỗ trợ tối ưu hóa các mô hình học sâu. Tầm nhìn của bộ công cụ OpenVINO là tăng cường AI của bạn mô hình học sâu và triển khai ứng dụng tại chỗ, trên thiết bị hoặc trên đám mây với hiệu suất và hiệu quả cao hơn.

Bộ công cụ OpenVINO đặc biệt có giá trị vì nó hỗ trợ nhiều framework deep learning, bao gồm cả những framework phổ biến như TensorFlow, Kim tự tháp, Onnx và Caffe. Bạn có thể huấn luyện các mô hình của mình bằng khung ưa thích, sau đó sử dụng OpenVINO để chuyển đổi và tối ưu hóa chúng để triển khai trên các bộ tăng tốc phần cứng của Intel, như CPU, GPU, FPGA và VPU.

Liên quan đến suy luận, OpenVINO Toolkit cung cấp nhiều công cụ khác nhau để lượng tử hóa và nén mô hình, có thể giảm đáng kể kích thước của các mô hình deep learning mà không làm mất độ chính xác của suy luận.

Tại sao nên sử dụng OpenVINO?

Cơn sốt AI hiện không có tâm trạng để chậm lại. Với mức độ phổ biến này, rõ ràng là ngày càng có nhiều ứng dụng được phát triển để chạy các ứng dụng AI tại chỗ và trên thiết bị. Một số lĩnh vực đầy thách thức mà OpenVINO vượt trội khiến nó trở thành lựa chọn lý tưởng tại sao việc sử dụng OpenVINO lại quan trọng:

Vườn thú mẫu OpenVINO

OpenVINO cung cấp một vườn thú kiểu mẫu với mô hình học sâu được đào tạo trước cho các tác vụ như Khuếch tán ổn định, Lời nói, Phát hiện đối tượng, v.v. Những mô hình này có thể đóng vai trò là điểm khởi đầu cho các dự án của bạn, giúp bạn tiết kiệm thời gian và nguồn lực.

Tương thích mô hình

OpenVINO hỗ trợ nhiều framework deep learning, bao gồm TensorFlow, PyTorch, ONNx và Caffe. Điều này có nghĩa là bạn có thể sử dụng khung ưa thích của mình để đào tạo các mô hình của mình, sau đó chuyển đổi và tối ưu hóa chúng để triển khai bằng Bộ công cụ OpenVINO.

Hiệu suất cao

OpenVINO được tối ưu hóa để suy luận nhanh, phù hợp với các ứng dụng thời gian thực như thị giác máy tính, robot và thiết bị IoT. Nó tận dụng khả năng tăng tốc phần cứng như FPGA, GPU và TPU để đạt được thông lượng cao và độ trễ thấp.

AI trong tương lai Edge sử dụng Intel OpenVINO

AI trong tương lai Edge sử dụng Intel OpenVINO

AI trong Edge là lĩnh vực khó giải quyết nhất. Việc xây dựng một giải pháp tối ưu hóa để giải quyết các hạn chế về phần cứng không còn là điều không thể với sự trợ giúp của OpenVINO. Tương lai của AI trong Edge với Bộ công cụ này có tiềm năng cách mạng hóa các ngành công nghiệp và ứng dụng khác nhau.

Hãy cùng tìm hiểu OpenVINO hoạt động như thế nào để phù hợp với AI trong Edge.

  • Bước đầu tiên là xây dựng một mô hình bằng cách sử dụng các khung học sâu yêu thích của bạn và chuyển đổi nó thành mô hình lõi OpenVINO. Một giải pháp thay thế khác là sử dụng các mô hình được đào tạo trước bằng cách sử dụng vườn thú mô hình OpenVINO.
  • Khi mô hình đã được huấn luyện, bước tiếp theo là nén. Bộ công cụ OpenVINO cung cấp khung nén Mạng thần kinh (NNCF).
  • Trình tối ưu hóa mô hình chuyển đổi mô hình được đào tạo trước thành định dạng phù hợp. Trình tối ưu hóa bao gồm dữ liệu IR. Dữ liệu IR đề cập đến Đại diện trung gian của mô hình deep learning đã được tối ưu hóa và chuyển đổi để triển khai với OpenVINO. Trọng số mô hình ở định dạng tệp .XML và .bin.
  • Khi triển khai mô hình, Công cụ suy luận OpenVINO có thể tải và sử dụng dữ liệu IR trên phần cứng đích, cho phép suy luận nhanh và hiệu quả cho các ứng dụng khác nhau.

Với cách tiếp cận này, OpenVINO có thể đóng một vai trò quan trọng trong AI trong Edge. Hãy cùng bắt tay vào thực hiện một dự án mã để triển khai tính năng Phát hiện văn bản trong hình ảnh bằng Bộ công cụ OpenVINO.

Phát hiện văn bản trong hình ảnh bằng Bộ công cụ OpenVINO

Trong quá trình triển khai dự án này, chúng tôi sẽ sử dụng Google Colab làm phương tiện để chạy ứng dụng thành công. Trong dự án này, chúng tôi sẽ sử dụng phát hiện văn bản ngang-0001 mô hình từ OpenVINO model Zoo. Mô hình được đào tạo trước này phát hiện văn bản nằm ngang trong hình ảnh đầu vào và trả về một khối dữ liệu có hình dạng (100,5). Phản hồi này trông giống như (x_min, y_min, x_max, y_max, conf) định dạng.

Triển khai mã từng bước

của DINTEK

!pip install openvino

Nhập thư viện bắt buộc

Hãy nhập các mô-đun cần thiết để chạy ứng dụng này. OpenVINO hỗ trợ chức năng trợ giúp utils để tải xuống các trọng số được đào tạo trước từ URL mã nguồn được cung cấp.

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

Bạn có thể xác minh rằng notebook_utils hiện đã được tải xuống thành công, hãy nhanh chóng nhập các mô-đun còn lại.

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

Tải xuống trọng lượng

Khởi tạo Đường dẫn tải xuống tệp trọng lượng mô hình dữ liệu IR phát hiện văn bản ngang ở định dạng .xml và .bin.

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

Trong đoạn mã sau, chúng tôi sử dụng ba biến để đơn giản hóa đường dẫn tồn tại các trọng số mô hình được đào tạo trước.

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)
tải tập tin | Bộ công cụ OpenVINO của Intel

Tải mô hình

OpenVINO cung cấp lớp Core để tương tác với bộ công cụ OpenVINO. Lớp Core cung cấp nhiều phương thức và hàm khác nhau để làm việc với các mô hình và thực hiện suy luận. Sử dụng read_model và chuyển model_xml_path. Sau khi đọc mô hình, hãy biên dịch mô hình cho một thiết bị mục tiêu cụ thể.

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")

Trong đoạn mã trên, mô hình tuân thủ trả về hình dạng hình ảnh đầu vào (704,704,3), hình ảnh RGB nhưng ở định dạng PyTorch (1,3,704,704) trong đó 1 là kích thước lô, 3 là số kênh, 704 là chiều cao và cân nặng. Kết quả trả về (x_min, y_min, x_max, y_max, conf). Bây giờ hãy tải một hình ảnh đầu vào.

tải mô hình

Tải hình ảnh

Trọng lượng mô hình là [1,3,704,704]. Do đó, bạn nên thay đổi kích thước hình ảnh đầu vào cho phù hợp với hình dạng này. Trong Google Colab hoặc trình chỉnh sửa mã, bạn có thể tải hình ảnh đầu vào của mình lên và trong trường hợp của chúng tôi, tệp hình ảnh có tên 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)
Hình ảnh đầu vào | Bộ công cụ OpenVINO của Intel

Hiển thị hình ảnh đầu vào

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

Động cơ suy diễn

Trước đây, chúng tôi đã sử dụng trọng số mô hình để biên dịch mô hình. Sử dụng biên dịch mô hình theo ngữ cảnh thành hình ảnh đầu vào.

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

Dự đoán

Biên dịch_model trả về các hộp có tọa độ hộp giới hạn. Chúng tôi sử dụng mô-đun cv2 để tạo hình chữ nhật và putText để thêm điểm tin cậy phía trên văn bản được phát hiện.

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

Hiển thị hình ảnh đầu ra

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

Kết luận

Để kết luận, chúng tôi đã xây dựng thành công tính năng Phát hiện văn bản trong một dự án hình ảnh bằng Bộ công cụ OpenVINO. Nhóm Intel liên tục cải tiến Bộ công cụ. OpenVINO cũng hỗ trợ các mô hình Generative AI được đào tạo trước như Stable Diffusion, ControlNet, Speech-to-text, v.v.

Chìa khóa chính

  • OpenVINO là một công cụ nguồn mở có tính thay đổi cuộc chơi nhằm thúc đẩy các mô hình học sâu AI của bạn và triển khai ứng dụng tại chỗ, trên thiết bị hoặc trên đám mây.
  • Mục tiêu chính của OpenVINO là tối ưu hóa các mô hình sâu với lượng tử hóa và nén mô hình khác nhau, điều này có thể giảm đáng kể kích thước của các mô hình học sâu mà không làm mất độ chính xác của suy luận.
  • Bộ công cụ này cũng hỗ trợ triển khai các ứng dụng AI trên các bộ tăng tốc phần cứng như GPU, FPGA, ASIC, TPU, v.v.
  • Nhiều ngành công nghiệp khác nhau có thể áp dụng OpenVINO và tận dụng tiềm năng của nó để tạo ra tác động đến AI ở biên.
  • Việc sử dụng mô hình được đào tạo trước của vườn thú mô hình rất đơn giản vì chúng tôi đã triển khai tính năng phát hiện văn bản trong hình ảnh chỉ bằng một vài dòng mã.

Những câu hỏi thường gặp

Q1. Intel OpenVINO dùng để làm gì?

A. Intel OpenVINO cung cấp một vườn thú mô hình với các mô hình học sâu được đào tạo trước cho các nhiệm vụ như Khuếch tán ổn định, Lời nói, v.v. OpenVINO chạy các mô hình được đào tạo trước tại vườn thú mô hình tại chỗ, trên thiết bị và trên đám mây một cách hiệu quả và năng suất hơn.

Q2. Sự khác biệt giữa OpenVINO và TensorFlow là gì?

A. Cả OpenVINO và TensorFlow đều miễn phí và là nguồn mở. Các nhà phát triển sử dụng TensorFlow, một khung học sâu, để phát triển mô hình, trong khi OpenVINO, Bộ công cụ, tối ưu hóa các mô hình học sâu và triển khai chúng trên các bộ tăng tốc phần cứng của Intel.

Q3. OpenVINO được sử dụng ở đâu?

A. Tính linh hoạt và khả năng tối ưu hóa các mô hình học sâu cho phần cứng Intel của OpenVINO khiến nó trở thành công cụ có giá trị cho các ứng dụng AI và thị giác máy tính trong nhiều ngành khác nhau như Quốc phòng quân sự, Y tế, Thành phố thông minh, v.v.

Q4. Bộ công cụ OpenVINO của Intel có được sử dụng miễn phí không?

Đáp: Có, bộ công cụ OpenVINO của Intel được sử dụng miễn phí. Nhóm Intel đã phát triển bộ công cụ nguồn mở này để hỗ trợ tối ưu hóa các mô hình học sâu.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img