ถ่ายโอนการเรียนรู้สำหรับโมเดลการตรวจจับวัตถุ TensorFlow ใน Amazon SageMaker

อเมซอน SageMaker ให้ชุดของ อัลกอริทึมในตัว, รุ่นก่อนการฝึกอบรมและ เทมเพลตโซลูชันที่สร้างไว้ล่วงหน้า เพื่อช่วยให้นักวิทยาศาสตร์ข้อมูลและผู้ปฏิบัติงานการเรียนรู้ของเครื่อง (ML) เริ่มต้นการฝึกอบรมและปรับใช้โมเดล ML ได้อย่างรวดเร็ว คุณสามารถใช้อัลกอริธึมและแบบจำลองเหล่านี้สำหรับการเรียนรู้ทั้งแบบมีผู้สอนและแบบไม่มีผู้ดูแล พวกเขาสามารถประมวลผลข้อมูลอินพุตประเภทต่างๆ รวมทั้งแบบตาราง รูปภาพ และข้อความ

โพสต์นี้เป็นโพสต์ที่สองในซีรีส์เกี่ยวกับอัลกอริธึมในตัวใหม่ใน SageMaker ใน โพสต์แรกเราแสดงให้เห็นว่า SageMaker มีอัลกอริทึมในตัวสำหรับการจัดประเภทรูปภาพอย่างไร วันนี้ เราประกาศให้ทราบว่า SageMaker มีอัลกอริทึมในตัวแบบใหม่สำหรับการตรวจหาวัตถุโดยใช้ TensorFlow อัลกอริธึมการเรียนรู้ภายใต้การดูแลนี้สนับสนุนการถ่ายโอนการเรียนรู้สำหรับโมเดลก่อนการฝึกอบรมจำนวนมากที่มีอยู่ใน TensorFlow ใช้ภาพเป็นอินพุตและส่งออกวัตถุที่มีอยู่ในภาพพร้อมกับกรอบล้อมรอบ คุณสามารถปรับแต่งโมเดลที่ฝึกไว้ล่วงหน้าเหล่านี้ได้โดยใช้การเรียนรู้แบบโอนย้าย แม้ว่าจะไม่มีรูปภาพการฝึกหัดจำนวนมากก็ตาม มีให้บริการผ่าน SageMaker อัลกอริทึมในตัว ตลอดจนผ่านไฟล์ UI JumpStart ของ SageMaker in สตูดิโอ Amazon SageMaker. สำหรับข้อมูลเพิ่มเติม โปรดดูที่ เทนเซอร์โฟลว์การตรวจจับวัตถุ และสมุดตัวอย่าง ข้อมูลเบื้องต้นเกี่ยวกับ SageMaker Tensorflow – การตรวจจับวัตถุ.

การตรวจจับวัตถุด้วย TensorFlow ใน SageMaker ให้การถ่ายโอนการเรียนรู้ในโมเดลที่ผ่านการฝึกอบรมล่วงหน้าจำนวนมากที่มีอยู่ใน TensorFlow Hub ตามจำนวนป้ายกำกับคลาสในข้อมูลการฝึก หัวตรวจจับวัตถุที่เริ่มต้นแบบสุ่มใหม่จะเข้ามาแทนที่ส่วนหัวที่มีอยู่ของโมเดล TensorFlow เครือข่ายทั้งหมด รวมถึงโมเดลที่ฝึกไว้ล่วงหน้า หรือเฉพาะชั้นบนสุด (หัวตรวจจับวัตถุ) ที่สามารถปรับแต่งข้อมูลการฝึกใหม่ได้ ในโหมดการเรียนรู้การถ่ายโอนนี้ คุณสามารถทำการฝึกอบรมได้แม้จะใช้ชุดข้อมูลที่เล็กกว่า

วิธีใช้อัลกอริธึมการตรวจจับวัตถุ TensorFlow ใหม่

ส่วนนี้อธิบายวิธีการใช้อัลกอริธึมการตรวจจับวัตถุ TensorFlow กับ SageMaker Python SDK. สำหรับข้อมูลเกี่ยวกับวิธีการใช้งานจาก Studio UI โปรดดูที่ SageMaker JumpStart.

อัลกอริธึมรองรับการถ่ายโอนการเรียนรู้สำหรับโมเดลที่ได้รับการฝึกฝนล่วงหน้าซึ่งระบุไว้ใน รุ่น TensorFlow. แต่ละรุ่นจะถูกระบุโดยที่ไม่ซ้ำกัน model_id. รหัสต่อไปนี้แสดงวิธีการปรับแต่งโมเดล FPN ResNet50 V1 ที่ระบุโดย model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 ในชุดข้อมูลการฝึกอบรมที่กำหนดเอง แต่ละ model_idเพื่อเปิดงานฝึกอบรม SageMaker ผ่าน ประมาณการ คลาสของ SageMaker Python SDK คุณต้องดึง URI อิมเมจ Docker, URI สคริปต์การฝึกอบรม และ URI ของโมเดลที่ผ่านการฝึกอบรมล่วงหน้าผ่านฟังก์ชันยูทิลิตี้ที่มีให้ใน SageMaker URI สคริปต์การฝึกอบรมประกอบด้วยโค้ดที่จำเป็นทั้งหมดสำหรับการประมวลผลข้อมูล การโหลดโมเดลที่ฝึกไว้ล่วงหน้า การฝึกโมเดล และการบันทึกโมเดลที่ผ่านการฝึกอบรมสำหรับการอนุมาน URI ของโมเดลที่ฝึกไว้ล่วงหน้าประกอบด้วยคำจำกัดความของสถาปัตยกรรมโมเดลที่ฝึกไว้ล่วงหน้าและพารามิเตอร์ของโมเดล โปรดทราบว่า URI อิมเมจ Docker และ URI สคริปต์การฝึกจะเหมือนกันสำหรับโมเดลการตรวจจับวัตถุ TensorFlow ทั้งหมด URI ของโมเดลที่ฝึกไว้ล่วงหน้านั้นจำเพาะสำหรับโมเดลนั้นๆ tarball รุ่นที่ได้รับการฝึกอบรมล่วงหน้าได้รับการดาวน์โหลดล่วงหน้าจาก TensorFlow และบันทึกด้วยลายเซ็นรุ่นที่เหมาะสมใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon บัคเก็ต (Amazon S3) เพื่อให้งานการฝึกอบรมทำงานในการแยกเครือข่าย ดูรหัสต่อไปนี้:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

ด้วยสิ่งประดิษฐ์การฝึกอบรมเฉพาะรุ่นเหล่านี้ คุณสามารถสร้างวัตถุของ ประมาณการ ระดับ:

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

ถัดไป สำหรับการถ่ายโอนการเรียนรู้ในชุดข้อมูลที่คุณกำหนดเอง คุณอาจต้องเปลี่ยนค่าเริ่มต้นของไฮเปอร์พารามิเตอร์การฝึก ซึ่งแสดงอยู่ใน ไฮเปอร์พารามิเตอร์. คุณสามารถดึงพจนานุกรม Python ของไฮเปอร์พารามิเตอร์เหล่านี้ด้วยค่าเริ่มต้นได้โดยการเรียก hyperparameters.retrieve_defaultอัปเดตตามต้องการ แล้วส่งต่อไปยังคลาส Estimator โปรดทราบว่าค่าเริ่มต้นของไฮเปอร์พารามิเตอร์บางตัวจะแตกต่างกันสำหรับรุ่นต่างๆ สำหรับรุ่นใหญ่ ขนาดแบทช์เริ่มต้นจะเล็กกว่าและ train_only_top_layer ไฮเปอร์พารามิเตอร์ถูกตั้งค่าเป็น True. ไฮเปอร์พารามิเตอร์ train_only_top_layer กำหนดว่าพารามิเตอร์รุ่นใดเปลี่ยนแปลงระหว่างกระบวนการปรับแต่ง ถ้า train_only_top_layer is Trueพารามิเตอร์ของชั้นการจำแนกประเภทจะเปลี่ยนไปและพารามิเตอร์ที่เหลือจะคงที่ในระหว่างกระบวนการปรับแต่ง ในทางกลับกัน ถ้า train_only_top_layer is False, พารามิเตอร์ทั้งหมดของโมเดลได้รับการปรับแต่งอย่างละเอียด ดูรหัสต่อไปนี้:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

เราให้บริการ ชุดข้อมูล PennFudanPed เป็นชุดข้อมูลเริ่มต้นสำหรับการปรับแต่งโมเดลอย่างละเอียด ชุดข้อมูลประกอบด้วยภาพคนเดินเท้า รหัสต่อไปนี้จัดเตรียมชุดข้อมูลการฝึกเริ่มต้นที่โฮสต์ในบัคเก็ต S3:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

สุดท้าย ในการเปิดงานฝึกอบรม SageMaker เพื่อปรับแต่งโมเดล ให้โทร .fit บนวัตถุของคลาส Estimator ขณะส่งตำแหน่ง S3 ของชุดข้อมูลการฝึกอบรม:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้อัลกอริธึมการตรวจจับวัตถุ SageMaker TensorFlow ใหม่สำหรับการถ่ายโอนการเรียนรู้ในชุดข้อมูลที่กำหนดเอง ปรับใช้โมเดลที่ปรับแต่งอย่างละเอียด เรียกใช้การอนุมานบนโมเดลที่ปรับใช้ และปรับใช้โมเดลที่ได้รับการฝึกล่วงหน้าตามที่เป็นอยู่โดยไม่ต้องปรับละเอียดในครั้งแรก ในชุดข้อมูลที่กำหนดเอง ดูตัวอย่างสมุดบันทึกต่อไปนี้: ข้อมูลเบื้องต้นเกี่ยวกับ SageMaker TensorFlow – การตรวจจับวัตถุ.

อินเทอร์เฟซอินพุต/เอาต์พุตสำหรับอัลกอริธึมการตรวจจับวัตถุ TensorFlow

คุณสามารถปรับแต่งรุ่นที่ได้รับการฝึกฝนไว้ล่วงหน้าแต่ละรายการใน แบบจำลองเทนเซอร์โฟลว์ ให้กับชุดข้อมูลใดๆ ที่ประกอบด้วยรูปภาพที่เป็นของคลาสจำนวนเท่าใดก็ได้ มีวัตถุประสงค์เพื่อลดข้อผิดพลาดในการทำนายข้อมูลที่ป้อนเข้า โมเดลที่ส่งคืนโดยการปรับแต่งแบบละเอียดสามารถนำไปปรับใช้เพิ่มเติมสำหรับการอนุมานได้ ต่อไปนี้เป็นคำแนะนำสำหรับวิธีจัดรูปแบบข้อมูลการฝึกอบรมสำหรับการป้อนข้อมูลลงในแบบจำลอง:

  • อินพุต – ไดเร็กทอรีที่มีภาพไดเร็กทอรีย่อยและไฟล์ annotations.json.
  • เอาท์พุต - มี XNUMX เอาต์พุต อย่างแรกคือโมเดลที่ปรับแต่งอย่างละเอียด ซึ่งสามารถปรับใช้สำหรับการอนุมานหรือฝึกฝนเพิ่มเติมโดยใช้การฝึกอบรมแบบเพิ่มหน่วย ประการที่สองคือไฟล์ที่แมปดัชนีคลาสกับป้ายกำกับคลาส นี้จะถูกบันทึกไว้พร้อมกับแบบจำลอง

ไดเร็กทอรีอินพุตควรมีลักษณะดังนี้:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

พื้นที่ annotations.json ไฟล์ควรมีข้อมูลสำหรับ bounding_boxes และป้ายชื่อชั้นเรียน ควรมีพจนานุกรมพร้อมกุญแจ "images" และ "annotations". ค่าของ "images" คีย์ควรเป็นรายการหนึ่งรายการสำหรับแต่ละรูปของแบบฟอร์ม {"file_name": image_name, "height": height, "width": width, "id": image_id}. ค่าของ "annotations" คีย์ควรเป็นรายการของรายการหนึ่งรายการสำหรับแต่ละกรอบของฟอร์ม {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

การอนุมานด้วยอัลกอริธึมการตรวจจับวัตถุ TensorFlow

โมเดลที่สร้างขึ้นสามารถโฮสต์สำหรับการอนุมานและสนับสนุนรูปแบบภาพที่เข้ารหัส .jpg, .jpeg และ .png เป็น application/x-image ชนิดของเนื้อหา. ภาพที่ป้อนจะถูกปรับขนาดโดยอัตโนมัติ ผลลัพธ์ประกอบด้วยกล่อง คลาสที่ทำนาย และคะแนนสำหรับการทำนายแต่ละรายการ โมเดลการตรวจจับวัตถุ TensorFlow ประมวลผลภาพเดียวต่อคำขอ และส่งออกเพียงบรรทัดเดียวใน JSON ต่อไปนี้เป็นตัวอย่างการตอบสนองใน JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept ถูกตั้งค่าเป็น application/jsonจากนั้นโมเดลจะแสดงเฉพาะกล่อง คลาส และคะแนนที่คาดการณ์ไว้เท่านั้น สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการฝึกอบรมและการอนุมาน ดูตัวอย่างสมุดบันทึก ข้อมูลเบื้องต้นเกี่ยวกับ SageMaker TensorFlow – การตรวจจับวัตถุ.

ใช้อัลกอริทึมในตัวของ SageMaker ผ่าน JumpStart UI

คุณยังสามารถใช้การตรวจจับวัตถุ SageMaker TensorFlow และอัลกอริธึมในตัวอื่นๆ ได้ด้วยการคลิกเพียงไม่กี่ครั้งผ่าน JumpStart UI JumpStart เป็นฟีเจอร์ของ SageMaker ที่ให้คุณฝึกและปรับใช้อัลกอริทึมในตัวและโมเดลที่ผ่านการฝึกอบรมล่วงหน้าจากเฟรมเวิร์ก ML ต่างๆ และฮับโมเดลผ่านอินเทอร์เฟซแบบกราฟิก นอกจากนี้ยังช่วยให้คุณสามารถปรับใช้โซลูชัน ML ที่มีคุณสมบัติครบถ้วนที่รวมโมเดล ML และบริการของ AWS อื่นๆ เข้าด้วยกันเพื่อแก้ไขกรณีการใช้งานที่เป็นเป้าหมาย

ต่อไปนี้คือวิดีโอสองวิดีโอที่แสดงให้เห็นว่าคุณสามารถจำลองกระบวนการปรับแต่งและปรับใช้แบบเดียวกันได้อย่างไร ซึ่งเราเพิ่งดำเนินการไปด้วยการคลิกเพียงไม่กี่ครั้งผ่าน JumpStart UI

ปรับแต่งโมเดลที่ฝึกไว้ล่วงหน้าอย่างละเอียด

นี่คือขั้นตอนในการปรับแต่งโมเดลการตรวจจับวัตถุที่ฝึกไว้ล่วงหน้าแบบเดียวกันอย่างละเอียด

ปรับใช้แบบจำลองที่ปรับแต่งแล้ว

หลังจากการฝึกโมเดลเสร็จสิ้น คุณสามารถปรับใช้โมเดลกับปลายทางแบบเรียลไทม์ที่คงอยู่ได้โดยตรงด้วยการคลิกเพียงครั้งเดียว

สรุป

ในโพสต์นี้ เราได้ประกาศเปิดตัวอัลกอริธึมการตรวจหาวัตถุ SageMaker TensorFlow เราได้จัดเตรียมโค้ดตัวอย่างเกี่ยวกับวิธีการถ่ายโอนการเรียนรู้ในชุดข้อมูลที่กำหนดเองโดยใช้โมเดลที่ได้รับการฝึกอบรมล่วงหน้าจาก TensorFlow โดยใช้อัลกอริธึมนี้

สำหรับข้อมูลเพิ่มเติมตรวจสอบ เอกสาร และ ตัวอย่างโน๊ตบุ๊ค.


เกี่ยวกับผู้แต่ง

ถ่ายโอนการเรียนรู้สำหรับโมเดลการตรวจจับอ็อบเจ็กต์ TensorFlow ใน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดร.วิเวก มะดัน เป็นนักวิทยาศาสตร์ประยุกต์กับ ทีม Amazon SageMaker JumpStart. เขาสำเร็จการศึกษาระดับปริญญาเอกจากมหาวิทยาลัยอิลลินอยส์ Urbana-Champaign และเป็นนักวิจัยหลังปริญญาเอกที่ Georgia Tech เขาเป็นนักวิจัยเชิงรุกด้านการเรียนรู้ของเครื่องและการออกแบบอัลกอริธึม และได้ตีพิมพ์เอกสารในการประชุม EMNLP, ICLR, COLT, FOCS และ SODA

ถ่ายโอนการเรียนรู้สำหรับโมเดลการตรวจจับอ็อบเจ็กต์ TensorFlow ใน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ชูเอา มูร่า เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญ AI/ML ที่ Amazon Web Services เขามุ่งเน้นไปที่กรณีการใช้งาน NLP เป็นส่วนใหญ่ และช่วยให้ลูกค้าปรับการฝึกอบรมและปรับใช้โมเดลการเรียนรู้เชิงลึกให้เหมาะสมที่สุด เขายังเป็นผู้สนับสนุนโซลูชัน ML แบบ low-code และฮาร์ดแวร์เฉพาะสำหรับ ML

ถ่ายโอนการเรียนรู้สำหรับโมเดลการตรวจจับอ็อบเจ็กต์ TensorFlow ใน Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดร. Ashish Khetan เป็นนักวิทยาศาสตร์ประยุกต์อาวุโสด้วย อัลกอริทึมในตัวของ Amazon SageMaker และช่วยพัฒนาอัลกอริธึมการเรียนรู้ของเครื่อง เขาได้รับปริญญาเอกจากมหาวิทยาลัยอิลลินอยส์เออร์บานาแชมเปญ เขาเป็นนักวิจัยเชิงรุกด้านการเรียนรู้ของเครื่องและการอนุมานทางสถิติ และได้ตีพิมพ์บทความจำนวนมากในการประชุม NeurIPS, ICML, ICLR, JMLR, ACL และ EMNLP

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS