Cách luyện giọng pascal

API phát hiện đối tượng TensorFlow là một khung nguồn mở được xây dựng dựa trên TensorFlow giúp dễ dàng xây dựng, đào tạo và triển khai các mô hình phát hiện đối tượng. Thư viện này cung cấp rất nhiều mô hình phát hiện đối tượng chất lượng cao có thể được sử dụng trong Tensorflow. Thông thường, bạn sẽ đào tạo các mô hình này bằng cách sử dụng API phát hiện đối tượng Tensorflow. Tuy nhiên, có nhiều lý do tại sao bạn có thể muốn đào tạo họ bên ngoài thư viện. Đặc biệt, đào tạo các mô hình này với Masterful cho phép bạn tận dụng mọi dữ liệu chưa được gắn nhãn mà bạn có thể có bằng cách sử dụng phương pháp học bán giám sát

Để biết danh sách đầy đủ các mô hình được API phát hiện đối tượng Tensorflow hỗ trợ cho Tensorflow 2. 0, xem tại đây

Trong hướng dẫn này, bạn sẽ lấy một tệp cấu hình đường ống hiện có mà bạn đã tạo cho API Phát hiện đối tượng Tensorflow và sử dụng tệp đó trực tiếp với Masterful để đào tạo và đánh giá mô hình. Để đơn giản, bạn sẽ sử dụng tập dữ liệu VOC 2007 với các chú thích đối tượng để trình bày cách thiết lập tập dữ liệu và huấn luyện mô hình với dữ liệu

Nếu bạn đã quen thuộc với bộ đệm giao thức cấu hình đường ống Tensorflow Object Detection API, thì hướng dẫn này sẽ minh họa quá trình đào tạo với mô hình từ cấu hình đường ống và với bộ dữ liệu từ Bộ dữ liệu Tensorflow. Cấu hình đầu vào và cấu hình eval từ cấu hình đường ống bị bỏ qua trong ví dụ này

điều kiện tiên quyết

Vui lòng làm theo hướng dẫn cài đặt Masterful tại đây để chạy Quickstart này.

Ngoài ra, hướng dẫn này yêu cầu cài đặt và làm quen với API phát hiện đối tượng Tensorflow cho Tensorflow 2. 0. Xem hướng dẫn cài đặt

[1]:

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.

Chuẩn bị dữ liệu

Hướng dẫn này sẽ sử dụng tập dữ liệu Pascal VOC 2007 làm ví dụ đơn giản về thiết lập quy trình Phát hiện đối tượng. Thử thách Lớp đối tượng trực quan PASCAL bao gồm cả cuộc thi Phân loại và Phát hiện. Trong cuộc thi Phân loại, mục tiêu là dự đoán tập hợp các nhãn có trong hình ảnh, trong khi trong cuộc thi Phát hiện, mục tiêu là dự đoán hộp giới hạn và nhãn của từng đối tượng riêng lẻ

Bạn sẽ sử dụng bộ dữ liệu VOC 2007 từ Danh mục bộ dữ liệu Tensorflow

[2]:

import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)

Chuyển đổi nhãn sang định dạng chính xác

Sau khi bạn đã tải bộ dữ liệu, điều quan trọng là phải chuyển đổi nhãn thành định dạng mà Masterful hiểu được. Có hai bước liên quan ở đây

  • Bước 1. Chuyển đổi nhãn sang định dạng Masterful

  • Bước 2. Đệm các nhãn và hình ảnh thành các kích thước đồng nhất để chúng có thể được sắp xếp theo lô

Masterful hiểu một số định dạng nhãn và hộp giới hạn khác nhau. Xem các định dạng cụ thể được hỗ trợ. Trong ví dụ này, bạn sẽ sử dụng định dạng hộp giới hạn Tensorflow, định nghĩa các hộp giới hạn theo giá trị tối thiểu và tối đa, được chuẩn hóa thành phạm vi [0,1]. Cụ thể, các hộp giới hạn có dạng [ymin, xmin, ymax, xmax]

Masterful mở rộng định dạng nhãn này để hỗ trợ thêm nhãn, cũng như nhiều hộp giới hạn cho mỗi đối tượng. Một nhãn Masterful Object Detection cho một ví dụ duy nhất có dạng

[2]:
2 trong đó nhãn là một vectơ
[2]:
3 có dạng
[2]:
4.
[2]:
5 là một giá trị
[2]:
6 của một trong hai. 0 hoặc 0. 0 và được sử dụng để biểu thị các hộp giới hạn đệm. Ví dụ: giá trị 1. 0 đại diện cho hộp giới hạn "tốt" và giá trị bằng 0. 0 đại diện cho "phần đệm" được thêm vào nhãn để hỗ trợ tạo khối. Nhãn có giá trị
[2]:
5 là 0. 0 được bỏ qua trong quá trình đào tạo. Ví dụ: nếu bạn có 10 lớp trong tập dữ liệu của mình, thì nhãn cho một ví dụ sẽ có hình dạng
[2]:
8. Nếu chúng tôi cho phép số lượng hộp giới hạn tối đa cho mỗi ví dụ là 20 (
[2]:
9) và sử dụng kích thước lô là 8 (
import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)
0), thì nhãn trên mỗi lô sẽ có hình dạng _______4_______1

Masterful cung cấp một tiện ích để giúp bạn chuyển đổi nhãn thành định dạng Masterful và chuẩn bị cho chúng để đệm và ghép. Tất cả những gì bạn cần làm là trích xuất các hộp giới hạn và nhãn lớp từ tập dữ liệu và Masterful sẽ xử lý việc chuyển đổi cho bạn

[3]:

NUM_CLASSES = 20
MAX_BOUNDING_BOXES = 10
INPUT_SHAPE = (64, 64, 3)

from masterful.data.preprocessing import (
    convert_and_pad_boxes,
    resize_and_pad,
)


def convert_and_pad_labels(features_dict):
    image = features_dict["image"]
    classes = features_dict["objects"]["label"]
    boxes = features_dict["objects"]["bbox"]

    # First convert the labels and pad them to the
    # maximum number of bounding boxes, so that you
    # can batch them later. Tensorflow datasets bounding boxes
    # come in Tensorflow format (ymin, xmin, ymax, xmax)
    # so you specify that below.
    labels = convert_and_pad_boxes(
        boxes,
        classes,
        masterful.spec.BoundingBoxFormat.TENSORFLOW,
        sparse_labels=True,
        num_classes=NUM_CLASSES,
        max_bounding_boxes=MAX_BOUNDING_BOXES,
    )

    # Normalize the size of all the input images to the expected input
    # size for the model. The below does a bounding box safe resize that
    # will pad the short edge to the final square input shape.
    # The model you are using for this guide expects input images
    # to be sized to (64, 64), so you specify that square image size below.
    image, labels = resize_and_pad(image, labels, size=INPUT_SHAPE[0])
    image = tf.clip_by_value(image, 0.0, 255.0)
    return image, labels


training_dataset = training_dataset.map(
    convert_and_pad_labels, num_parallel_calls=tf.data.AUTOTUNE
)
validation_dataset = validation_dataset.map(
    convert_and_pad_labels, num_parallel_calls=tf.data.AUTOTUNE
)
test_dataset = test_dataset.map(
    convert_and_pad_labels, num_parallel_calls=tf.data.AUTOTUNE
)

Xây dựng mô hình

Đối với hướng dẫn này, bạn sẽ điều chỉnh một mô hình từ Sở thú mô hình API phát hiện đối tượng Tensorflow cho Tensorflow 2. Danh sách các mô hình có sẵn có thể được tìm thấy ở đây

Mô hình được sử dụng dưới đây là một bộ phát hiện SSD MobileNet v2. Lưu ý trong ví dụ này, bạn chỉ sử dụng định nghĩa mô hình từ cấu hình đường ống. Các mục khác trong cấu hình đường ống bị bỏ qua

[4]:

PIPELINE_CONFIG = "https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/configs/tf2/ssd_mobilenet_v2_320x320_coco17_tpu-8.config"

# Load the pipeline configuration from the repository
# into a string
import urllib.request

with urllib.request.urlopen(PIPELINE_CONFIG) as url:
    pipeline_config_str = url.read()

# Parse the pipeline configuration proto string
# into a pipeline configuration proto object
from google.protobuf import text_format
from object_detection.protos import pipeline_pb2

pipeline_config = text_format.Parse(
    pipeline_config_str, pipeline_pb2.TrainEvalPipelineConfig()
)

# Update the config with your specific requirements, namely the number
# of classes and the model input size
pipeline_config.model.ssd.num_classes = NUM_CLASSES
pipeline_config.model.ssd.image_resizer.fixed_shape_resizer.height = INPUT_SHAPE[0]
pipeline_config.model.ssd.image_resizer.fixed_shape_resizer.width = INPUT_SHAPE[1]

# Next build the model. The Tensorflow Object Detection API
# provides a model builder class which can take a model config
# and return a `DetectionModel` instance.
from object_detection.builders import model_builder

object_detection_model = model_builder.build(pipeline_config.model, is_training=True)

Thiết lập đào tạo thành thạo

Nền tảng Masterful AutoML học cách đào tạo mô hình của bạn bằng cách tập trung vào năm nguyên tắc tổ chức cốt lõi trong học sâu. kiến trúc, dữ liệu, tối ưu hóa, chính quy hóa và bán giám sát

Kiến trúc là cấu trúc của trọng số, độ lệch và kích hoạt xác định mô hình. Trong ví dụ này, kiến ​​trúc được xác định bởi mô hình phát hiện đối tượng mà bạn đã tạo ở trên

Dữ liệu là đầu vào được sử dụng để đào tạo mô hình. Trong ví dụ này, bạn đang sử dụng tập dữ liệu đào tạo được gắn nhãn từ thử thách phát hiện VOC. Các cách sử dụng nâng cao hơn của nền tảng Masterful AutoML cũng có thể tính đến dữ liệu tổng hợp và không được gắn nhãn, sử dụng nhiều kỹ thuật khác nhau

Tối ưu hóa có nghĩa là tìm các trọng số tốt nhất cho một mô hình và dữ liệu đào tạo. Tối ưu hóa khác với chính quy hóa vì tối ưu hóa không xem xét khái quát hóa dữ liệu vô hình. Thách thức trung tâm của tối ưu hóa là tốc độ - tìm trọng số tốt nhất nhanh hơn

Chính quy hóa có nghĩa là giúp một mô hình khái quát hóa dữ liệu mà nó chưa thấy. Một cách khác để nói điều này là chính quy hóa là về việc chống lại việc trang bị quá mức

Bán giám sát là quy trình mà một mô hình có thể được đào tạo bằng cách sử dụng cả dữ liệu được gắn nhãn và không được gắn nhãn

Thông số kiến ​​trúc và dữ liệu

Bước đầu tiên khi sử dụng Masterful là tìm hiểu bộ tham số tối ưu cho từng nhóm trong số năm nhóm ở trên. Bạn bắt đầu bằng cách tìm hiểu kiến ​​trúc và tham số dữ liệu của mô hình và tập dữ liệu huấn luyện

Trong mã bên dưới, bạn đang nói với Masterful rằng mô hình của bạn đang thực hiện tác vụ phát hiện (

import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)
2) với 20 nhãn (
import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)
3) và phạm vi đầu vào của các tính năng hình ảnh đi vào mô hình của bạn nằm trong phạm vi [0,255] (
import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)
4). Ngoài ra, mô hình xuất ra nhật ký thay vì phân loại softmax (
import tensorflow_datasets as tfds

# First step is to load the data from Tensorflow Datasets.
# You will use the training dataset to train the model, and the validation
# set to measure the progress of training. The test dataset
# is used at the end to measure the results of training the model.
# Importantly, Masterful will never see the test dataset,
# so you can be sure that your model is not overfit to any holdout datasets.
training_dataset = tfds.load(
    "voc/2007",
    split="train",
    shuffle_files=False,
)
validation_dataset = tfds.load(
    "voc/2007",
    split="validation",
    shuffle_files=False,
)
test_dataset = tfds.load(
    "voc/2007",
    split="test",
    shuffle_files=False,
)
5)

Hơn nữa, trong tập dữ liệu huấn luyện, bạn đang cung cấp các nhãn dày đặc (_______4_______6) thay vì các nhãn thưa thớt

Để biết thêm chi tiết về kiến ​​trúc và tham số dữ liệu, hãy xem thông số kỹ thuật API cho và

[5]:

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
0

Tham số tối ưu hóa

Tiếp theo, bạn tìm hiểu các tham số tối ưu hóa sẽ được sử dụng để đào tạo mô hình. Bên dưới, bạn sử dụng Masterful để tìm hiểu bộ tham số tối ưu hóa tiêu chuẩn nhằm đào tạo mô hình của bạn cho tác vụ phát hiện

Để biết thêm chi tiết về các tham số tối ưu hóa, vui lòng xem đặc tả API

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
1

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
2

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
3

Tham số học bán giám sát

Bước tiếp theo trước khi đào tạo là tìm hiểu bộ tham số bán giám sát tối ưu. Đối với hướng dẫn này, bạn không sử dụng bất kỳ dữ liệu chưa được gắn nhãn hoặc dữ liệu tổng hợp nào như một phần của quá trình đào tạo, vì vậy hầu hết các hình thức bán giám sát sẽ bị tắt theo mặc định

Để biết thêm chi tiết về các tham số bán giám sát, vui lòng xem đặc tả API

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
4

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
5

Tham số chính quy

Các tham số chuẩn hóa được sử dụng có thể có tác động đáng kể đến hiệu suất cuối cùng của mô hình được đào tạo của bạn. Tìm hiểu các tham số này có thể là một thách thức tốn thời gian và miền cụ thể. Masterful có thể tăng tốc quá trình này bằng cách tìm hiểu các thông số này cho bạn. Nói chung, đây có thể là một hoạt động tốn kém. Thứ tự độ lớn sơ bộ để tìm hiểu các tham số này gấp đôi thời gian cần thiết để đào tạo mô hình của bạn. Tuy nhiên, điều này vẫn nhanh hơn đáng kể so với việc bạn tự tìm các tham số này theo cách thủ công và các tham số này có thể được sử dụng lại trong các buổi đào tạo trong tương lai. Trong ví dụ bên dưới, bạn sẽ sử dụng API để tìm hiểu các tham số này trực tiếp từ tập dữ liệu và mô hình của mình

Để biết thêm chi tiết về các tham số chuẩn hóa, vui lòng xem thông số API

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
6

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
7

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
8

Đào tạo người mẫu

Bây giờ, bạn đã sẵn sàng đào tạo mô hình của mình bằng nền tảng Masterful AutoML. Trong ô tiếp theo, bạn sẽ thấy cuộc gọi đến , đây là điểm vào của công cụ đào tạo và siêu học tập của nền tảng Masterful AutoML. Lưu ý rằng không cần phải chia lô dữ liệu của bạn (Masterful sẽ tìm kích thước lô tối ưu cho bạn). Không cần xáo trộn dữ liệu của bạn (Masterful xử lý việc này cho bạn). Bạn đưa cho Masterful một mô hình và tập dữ liệu, và Masterful sẽ giải quyết phần còn lại cho bạn

Lưu ý ở phần trên bạn ghi đè số đợt luyện là 1 để tăng tốc độ hướng dẫn này. Vì những lý do rõ ràng, điều này sẽ không đào tạo đầy đủ mô hình của bạn, nhưng thay vào đó là đủ để chứng minh quy trình đào tạo

import dataclasses
import object_detection
import tensorflow as tf
import masterful

masterful = masterful.register()
9

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
0

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
1

Đánh giá mô hình

Khi bạn đã đào tạo mô hình của mình, làm thế nào để bạn biết rằng nó hoạt động tốt? . Thông thường, bạn thực hiện điều này thông qua API phát hiện đối tượng Tensorflow, có thể lấy cấu hình đường ống của bạn và chạy nó trong chế độ đánh giá thay vì chế độ đào tạo. Tuy nhiên, Masterful cũng có thể đánh giá trực tiếp mô hình của bạn

Ví dụ: Masterful trả về cung cấp trình bao bọc mô hình Keras của mô hình API Phát hiện đối tượng Tensorflow của bạn, vì vậy bạn có thể sử dụng các chỉ số đánh giá Keras tiêu chuẩn để xem xét một số chỉ số nội tại, như giá trị tổn thất phân loại và bản địa hóa

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
2

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
3

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
4

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
2

MASTERFUL: Your account has been successfully registered. Masterful v0.5.0 is loaded.
6

Số liệu đánh giá COCO

Một cách tiêu chuẩn hơn để đo lường hiệu suất phát hiện đối tượng là đánh giá bằng cách sử dụng tiêu chuẩn số liệu đánh giá MSCOCO. Các số liệu đánh giá được mô tả và có một thư viện chung pycocotools cung cấp việc triển khai các số liệu này. Masterful cung cấp một trình bao bọc dễ dàng cho các công cụ này trong

Để sử dụng trình đánh giá này, bạn cần cho người đánh giá biết cách chuyển đổi các dự đoán từ mô hình phát hiện thành các nhãn mà người đánh giá có thể sử dụng. Masterful cung cấp bộ chuyển đổi dự đoán tích hợp cho các mô hình Phát hiện đối tượng Tensorflow trong

Pascal VOC là gì?

PASCAL VOC ( Thử thách các lớp đối tượng trực quan PASCAL ) . Bộ dữ liệu PASCAL VOC được chia thành ba tập hợp con. 1.464 hình ảnh để đào tạo, 1.449 hình ảnh để xác thực và bộ thử nghiệm riêng.

Có bao nhiêu lớp trong Pascal VOC?

20 lớp đối tượng. Người. Chim, mèo, bò, chó, ngựa, cừu. Máy bay, xe đạp, thuyền, xe buýt, ô tô, xe máy, tàu hỏa.

Làm cách nào để đào tạo SSD trên tập dữ liệu tùy chỉnh?

Làm theo hướng dẫn ban đầu để biên dịch SSD. Hãy chắc chắn rằng bạn có thể chạy nó thành công
Bước 2. Chuẩn bị tập dữ liệu mới của bạn. Để thuận tiện, vui lòng làm theo định dạng tập dữ liệu VOC để tạo tập dữ liệu mới. .
Bước 3. Tạo tệp LMDB. .
Bước 4. Đào tạo SSD trên tập dữ liệu mới. .
Bước 5. Chạy

VOC trong học máy là gì?

Lớp đối tượng trực quan Pascal (VOC) . Trong Pascal VOC, chúng tôi tạo một tệp cho từng hình ảnh trong bộ dữ liệu. Trong COCO, chúng tôi có một tệp cho toàn bộ tập dữ liệu để đào tạo, kiểm tra và xác nhận. Hộp giới hạn trong định dạng dữ liệu Pascal VOC và COCO là khác nhau.