0Pricing
Learn AI with Python · บทเรียน

MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย

สถาปัตยกรรมน้ำหนักเบา การแปลงเป็น TFLite และการแลกเปลี่ยนระหว่างขนาดแบบจำลองกับความแม่นยำ

MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดโมเดลอุปกรณ์ปลายทางจึงแตกต่างกัน

บนโทรศัพท์และอุปกรณ์ฝังตัว คุณต้องแลกความแม่นยำบางส่วนกับขนาดที่เล็กมาก เวลาแฝงต่ำ และการใช้พลังงานต่ำ MobileNet และ EfficientNet ได้รับการออกแบบมาเพื่อจุดประสงค์นี้โดยเฉพาะ โดยใช้ส่วนประกอบสำหรับสร้างโมเดลที่มีประสิทธิภาพแทนคอนโวลูชันแบบหนาแน่นขนาดใหญ่

คอนโวลูชันแบบแยกตามความลึกของ MobileNet

MobileNet แทนที่คอนโวลูชันมาตรฐานด้วย คอนโวลูชันแบบแยกตามความลึก: ตัวกรองเชิงพื้นที่ที่ทำงานแยกตามแต่ละช่องสัญญาณ ตามด้วยการผสมแบบจุดขนาด 1x1 วิธีนี้ลดการคำนวณและจำนวนพารามิเตอร์ได้ประมาณ 8–9 เท่า โดยสูญเสียความแม่นยำเพียงเล็กน้อย

MobileNetV3Small

MobileNetV3Small ได้รับการปรับให้เหมาะกับอุปกรณ์เคลื่อนที่ โดยมีน้ำหนักประมาณ 2.5MB จึงเหมาะอย่างยิ่งเมื่อพื้นที่จัดเก็บและ RAM มีจำกัด

from tensorflow.keras.applications import MobileNetV3Small

base = MobileNetV3Small(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

EfficientNetB0

EfficientNetB0 ใช้การปรับสเกลแบบผสมเพื่อสร้างสมดุลระหว่างความลึก ความกว้าง และความละเอียด โมเดลนี้ให้ความแม่นยำสูงเมื่อเทียบกับขนาด และเป็นทางเลือกกึ่งกลางที่ดีระหว่างโครงข่ายสำหรับอุปกรณ์เคลื่อนที่ขนาดเล็กกับโมเดลเซิร์ฟเวอร์ขนาดใหญ่

from tensorflow.keras.applications import EfficientNetB0

base = EfficientNetB0(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

เลือกระหว่างสองโมเดล

  • MobileNetV3Small (~2.5MB): มีขนาดเล็กที่สุด เร็วที่สุด และมีความแม่นยำต่ำที่สุด เหมาะสำหรับงานบนอุปกรณ์เคลื่อนที่แบบเรียลไทม์
  • EfficientNetB0: มีสมดุลระหว่างความแม่นยำกับขนาด เหมาะเมื่อคุณสามารถใช้การคำนวณเพิ่มขึ้นได้เล็กน้อย

เลือกโมเดลตามงบประมาณเวลาแฝงและเป้าหมายความแม่นยำของอุปกรณ์

การสร้าง head สำหรับการเรียนรู้แบบถ่ายโอน

รูปแบบการเรียนรู้แบบถ่ายโอนเหมือนเดิมทุกประการ: ตรึง base ทำพูลลิง และเพิ่ม head แบบ Dense

from tensorflow.keras import layers, Model

base.trainable = False
x = layers.GlobalAveragePooling2D()(base.output)
x = layers.Dropout(0.2)(x)
out = layers.Dense(num_classes, activation="softmax")(x)
model = Model(base.input, out)

TFLite คืออะไร

TensorFlow รุ่นน้ำหนักเบา คือสภาพแวดล้อมขณะทำงานสำหรับการอนุมานบนอุปกรณ์ คุณจะแปลงโมเดล Keras ที่ฝึกแล้วเป็น flatbuffer ขนาดกะทัดรัด .tflite ซึ่งทำงานได้อย่างมีประสิทธิภาพบน CPU, GPU และ NPU ของอุปกรณ์เคลื่อนที่

การแปลงเป็นรูปแบบทีเอฟไลต์

ใช้ TFLiteConverter เพื่อแปลงโมเดลที่บันทึกไว้

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

การทำควอนไทซ์ช่วยลดขนาดเพิ่มเติม

การทำควอนไทซ์หลังการฝึกจะจัดเก็บน้ำหนักเป็นจำนวนเต็ม 8 บิตแทนเลขทศนิยม 32 บิต ทำให้ขนาดลดลงประมาณ 4 เท่าและเร่งการอนุมานบนฮาร์ดแวร์เคลื่อนที่ โดยสูญเสียความแม่นยำเพียงเล็กน้อย

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant = converter.convert()

การวัดเวลาแฝง

บนฮาร์ดแวร์เคลื่อนที่ทั่วไป MobileNetV3Small มักทำงานได้ภายใน ระดับหลักเดียวถึงหลักสิบต้น ๆ ของมิลลิวินาที ต่อภาพ จึงรองรับการทำงานแบบเรียลไทม์ได้สบาย ส่วน EfficientNetB0 มีขนาดใหญ่กว่าและช้ากว่า แต่ให้ความแม่นยำสูงกว่า

ควรวัดประสิทธิภาพบน อุปกรณ์เป้าหมายจริง เสมอ เพราะเวลาที่วัดจากโปรแกรมจำลองไม่น่าเชื่อถือ ใช้เครื่องมือวัดประสิทธิภาพของทีเอฟไลต์ หรือวัดเวลาการเรียกใช้ invoke() ของ Interpreter

การเรียกใช้การอนุมานด้วยทีเอฟไลต์

โหลดโมเดลด้วย Interpreter กำหนดเทนเซอร์ข้อมูลเข้า เรียกใช้ แล้วอ่านข้อมูลออก

interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()
inp = interpreter.get_input_details()[0]
out = interpreter.get_output_details()[0]
interpreter.set_tensor(inp["index"], image)
interpreter.invoke()
print(interpreter.get_tensor(out["index"]))

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับการนำโมเดลไปใช้งานบนอุปกรณ์ปลายทางของคุณ

ทบทวน

คุณได้เปรียบเทียบ MobileNetV3Small (~2.5MB ซึ่งเร็วที่สุด) กับ EfficientNetB0 (มีความสมดุล) สำหรับการใช้งานบนอุปกรณ์ปลายทาง สร้าง head สำหรับการเรียนรู้แบบถ่ายโอนบนโมเดลเหล่านี้ แปลงเป็น ทีเอฟไลต์ ใช้การทำควอนไทซ์เป็นจำนวนเต็ม 8 บิต และวัดเวลาแฝงบนฮาร์ดแวร์จริง เท่านี้ก็จบหลักสูตรการเรียนรู้แบบถ่ายโอนแล้ว หลักสูตรถัดไป: การวิเคราะห์อนุกรมเวลา

คำถามที่พบบ่อย

บทเรียน “MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย”

สถาปัตยกรรมน้ำหนักเบา การแปลงเป็น TFLite และการแลกเปลี่ยนระหว่างขนาดแบบจำลองกับความแม่นยำ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนวคิดและกลยุทธ์การเรียนรู้แบบถ่ายโอน
  2. การใช้ VGG16 และ ResNet50 เป็นแบบจำลองพื้นฐาน
  3. การปรับจูนแบบละเอียด: การยกเลิกการตรึงและการฝึกใหม่
  4. MobileNet และ EfficientNet สำหรับการนำไปใช้งานที่ขอบเครือข่าย
← กลับไปที่ Learn AI with Python