Image classification with TensorFlow Lite Model Maker (จาก ECTI DAMT NCON 2023 สอนใน คพ320 วิชาระบบปฏิบัติการ)
วันที่เขียน 29/9/2566 10:51:37     แก้ไขล่าสุดเมื่อ 27/4/2567 13:39:05
เปิดอ่าน: 247 ครั้ง

ไลบรารี TensorFlow Lite Model Maker ช่วยลดความยุ่งยากในกระบวนการปรับเปลี่ยนและแปลงโมเดลเครือข่ายประสาท (neural-network) ของ TensorFlow สำหรับแอปพลิเคชันบนอุปกรณ์ การเขียนโปรแกรมนี้เป็นตัวอย่างที่ใช้ไลบรารี Model Maker เพื่อแสดงการปรับเปลี่ยนและการจัดประเภทรูปภาพที่ใช้กันทั่วไปเพื่อจำแนกภาษามือบนอุปกรณ์เคลื่อนที่ https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/tutorials/model_maker_image_classification.ipynb https://blog.tensorflow.org/2020/03/higher-accuracy-on-vision-models-with-efficientnet-lite.html https://github.com/RangiLyu/EfficientNet-Lite

องค์ความรู้หลังจากไปนำเสนองาน ECTI DAMT NCON 2023 รูปแบบ Online ต้ังแต่วันที่ 22-25 มีนาคม 2566

ขั้นตอนที่ 1

ทำการติดตั้งแพ็คเกจ Model Maker ที่อยู่ใน GitHub repo

!pip install -q tflite-model-maker
 

ขั้นตอนที่ 2

นำเข้าแพ็คเกจที่จำเป็น

import os

import numpy as np

import tensorflow as tf
assert tf.__version__.startswith('2')

from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.config import ExportFormat
from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.image_classifier import DataLoader

import matplotlib.pyplot as plt
 

ขั้นตอนที่ 3

การจัดเตรียมข้อมูลภาษามือจากวีดีโอ 

 

ขั้นตอนที่ 4

โหลดข้อมูลสำหรับ ML บนอุปกรณ์ โดยทำการแยกออกเป็นข้อมูลการฝึกอบรม (training data) ข้อมูลการทดสอบ (testing data) และข้อมูลการตรวจสอบ (validation)

from google.colab import drive
drive.mount('/content/drive')
image_path = '/content/drive/MyDrive/SignLanguageDataset/SignLanguage_in_Office'
data = DataLoader.from_folder(image_path)
%cd '/content/drive/MyDrive/SignLanguageDataset/SignLanguage_in_Office'
 
!ls -la
!rm -rf .ipynb_checkpoints
!ls -la
 
แสดงตัวอย่างรูปภาพ 25 ภาพพร้อมป้ายกำกับ (Label) จากข้อมูล data
plt.figure(figsize=(10,10))
for i, (image, label) in enumerate(data.gen_dataset().unbatch().take(30)):
  plt.subplot(5,6,i+1)
  plt.xticks([])
  plt.yticks([])
  plt.grid(False)
  plt.imshow(image.numpy(), cmap=plt.cm.gray)
  plt.xlabel(data.index_to_label[label.numpy()])
plt.show()
 

การแบ่งแยกข้อมูล

สามารถแยกออกเป็นข้อมูลซึ่งประกอบด้วย

  1. ข้อมูลการฝึกอบรม (80%)
  2. ข้อมูลการตรวจสอบ (10%)
  3. ข้อมูลการทดสอบ (10%)
train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)
 

ขั้นตอนที่ 5

ทำการสร้างโมเดล TensorFlow และกำหนดโมเดลพื้นฐานมาจาก EfficientNet-Lite0 โดยโมเดลที่ทำการสร้างจะทำการสร้างจากข้อมูล "ข้อมูลการฝึกอบรม (80%)" และตรวจสอบข้อมูลด้วย "ข้อมูลการตรวจสอบ (10%)"

เปลี่ยน Model ใน TensorFlow Hub

นักศึกษาสามารถเปลี่ยนไปใช้โมเดลอื่นๆ ที่ป้อนรูปภาพและส่งออกเวกเตอร์คุณลักษณะด้วยรูปแบบ TensorFlow Hub

จากตัวอย่างโมเดล Inception V3 นักศึกษาสามารถกำหนด inception_v3_spec ซึ่งเป็นอ็อบเจ็กต์ของ image_classifier.ModelSpec และมีข้อกำหนดของโมเดล Inception V3

นักศึกษาจำเป็นต้องระบุชื่อรุ่น, URL ของรุ่น TensorFlow Hub url ในขณะเดียวกัน ค่าเริ่มต้นของ input_image_shape คือ [224, 224] เราต้องเปลี่ยนเป็น [299, 299] สำหรับรุ่น Inception V3

 

inception_v3_spec = image_classifier.ModelSpec(
    uri='https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1')
inception_v3_spec.input_image_shape = [299, 299]
 
model = image_classifier.create(train_data, model_spec=inception_v3_spec, validation_data=validation_data, epochs=10)
 
ดูรายละเอียดโครงสร้างโมเดล
 
model.summary()
 
ขั้นตอนที่ 6 ประเมินประสิทธิภาพของโมเดลที่ได้ทำการสร้างขึ้น
loss, accuracy = model.evaluate(test_data)
print(f"loss:={loss}, accuracy:={accuracy}")
 

ขั้นตอนที่ 7

เราสามารถพล็อตผลลัพธ์ที่คาดการณ์ไว้ในภาพทดสอบจำนวน 100 ภาพ การคาดการณ์ สีแดงคือ ผลลัพธ์ที่คาดการณ์ไว้ผิด ในขณะที่แบบอื่นๆ ถูกต้อง

 

# A helper function that returns 'red'/'black' depending on if its two input
# parameter matches or not.
def get_label_color(val1, val2):
  if val1 == val2:
    return 'black'
  else:
    return 'red'

# Then plot 100 test images and their predicted labels.
# If a prediction result is different from the label provided label in "test"
# dataset, we will highlight it in red color.
plt.figure(figsize=(20, 20))
predicts = model.predict_top_k(test_data)
for i, (image, label) in enumerate(test_data.gen_dataset().unbatch().take(100)):
  ax = plt.subplot(10, 10, i+1)
  plt.xticks([])
  plt.yticks([])
  plt.grid(False)
  plt.imshow(image.numpy(), cmap=plt.cm.gray)

  predict_label = predicts[i][0][0]
  color = get_label_color(predict_label,
                          test_data.index_to_label[label.numpy()])
  ax.xaxis.label.set_color(color)
  plt.xlabel('Predicted: %s' % predict_label)
plt.show()
 

ขั้นตอนที่ 8

การส่งออกโมเดลสู่ TensorFlow Lite ด้วยข้อมูลเมตา (metadata) ซึ่งเป็นมาตรฐานสำหรับการอธิบายโมเดล โดยที่ไฟล์ป้ายกำกับ (Label file) ถูกฝังอยู่ในข้อมูลเมตา หลังจากขั้นตอนนี้ เราก็สามารถใช้ไฟล์โมเดล TensorFlow Lite ในแอปพลิเคชันบนอุปกรณ์มือถือได้

 model.export(export_dir='/content/drive/MyDrive/SignLanguageDataset')

 

รูปแบบการส่งออกที่อนุญาตสามารถเป็นหนึ่งหรือรายการต่อไปนี้:

  1. ExportFormat.TFLITE
  2. ExportFormat.LABEL
  3. ExportFormat.SAVED_MODEL

จากตัวอย่างการใช้งานการจัดประเภทภาษามือ เพื่อรวมโมเดล TensorFlow Lite ลงในแอปมือถือ โดยโมเดลนี้สามารถนำไปใช้ร่วมกับ Android หรือ iOS โดยใช้ ImageClassifier API ของ TensorFlow Lite Task Library

โดยเริ่มต้นสำหรับการเขียนโปรแกรม นักศึกษาสามารถส่งออกโมเดล TensorFlow Lite พร้อมข้อมูลเมตาเท่านั้น นักศึกษายังสามารถเลือกส่งออกไฟล์ต่างๆ ตัวอย่างเช่น การส่งออกเฉพาะไฟล์ป้ายกำกับ (LABEL) ดังนี้:

 model.export(export_dir='/content/drive/MyDrive/SignLanguageDataset', export_format=ExportFormat.LABEL)



คำสำคัญ :
กลุ่มบทความ :
หมวดหมู่ :
แชร์ :
https://erp.mju.ac.th/acticleDetail.aspx?qid=1396
ความคิดเห็นทั้งหมด (0)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : กลุ่มงานเทคโนโลยีสารสนเทศ
ความรู้ที่ได้จากการศึกษาค้นคว้าด้วยตนเอง » Assignment in Microsoft Teams
การมอบหมายงาน (Assignment ) สำหรับนักศึกษาในห้องเรียน ระบบ Microsoft Teams สร้างความสะดวกในการมอบหมายงานให้กับนักศึกษา การส่งงาน และสามารถให้คะแนนนักศึกษาแต่ละคนในห้องเรียน สำหรับผู้ที่อยู่ในสถาบัน...
Assignment  Microsoft Teams  การมอบหมายงาน  การให้คะแนน     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สุภาพรรณ อนุตรกุล  วันที่เขียน 26/3/2567 18:01:20  แก้ไขล่าสุดเมื่อ 27/4/2567 7:30:39   เปิดอ่าน 133  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
ความรู้ที่ได้รับจากการเข้าร่วมประชุม/อบรม/สัมมนา » Google Sites สร้างเว็บไซต์ได้อย่างง่ายดาย
Google Sites คือโปรแกรมหนึ่งของ บริษััท Google ที่เปิดให้ สมาชิกของ Google สามารถ สร้างเว็บไซต์ของตนเองได้ฟรี โดยการสร้างเว็บไซต์ ด้วย Google Sites นั้น ทำได้ง่าย เหมือนกับการแก้ไข เอกสารธรรมดา ๆ ช...
Google Sites  เว็บไซต์     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สุภาพรรณ อนุตรกุล  วันที่เขียน 11/3/2567 17:19:12  แก้ไขล่าสุดเมื่อ 26/4/2567 21:22:27   เปิดอ่าน 228  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาระบบสารสนเทศ » การกำหนดผลลัพธ์การเรียนรู้รายวิชา CLOs ผ่าน มคอ.3
หัวข้อนี้เน้น การออกแบบหลักสูตรให้ตอบสนองต่อผลการเรียนรู้ที่คาดหวังของหลักสูตร สะท้อนถึงความต้องการ ของผู้ที่เกี่ยวข้องครบทุกภาคส่วน และผลการเรียนรู้นั้นต้องครอบคลุมทั้งความรู้ ทักษะเฉพาะทางและทักษ...
CLO  ELO  PLO     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สมนึก สินธุปวน  วันที่เขียน 18/11/2566 23:45:59  แก้ไขล่าสุดเมื่อ 26/4/2567 23:37:03   เปิดอ่าน 351  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาระบบสารสนเทศ » แอปพลิเคชันสำหรับช่วยในการจัดเรียนการสอน
การเรียนผ่านเครื่องมือช่วยสอนโดยใช้แอปพลิเคชันมีบทบาทในการส่งเสริมและช่วยเหลืออาจารย์และนักศึกษาเป็นอย่างมาก บทความนี้ได้รวบรวม 8 เครื่องมือช่วยสอนสำหรับอาจารย์ในการช่วยจัดการเรียนการสอนให้เกิดความ...
Canva  Kahoot  Nearpod  Plicker  Quizizz  Storyboard  Visme  Voxer     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สมนึก สินธุปวน  วันที่เขียน 18/11/2566 23:01:13  แก้ไขล่าสุดเมื่อ 27/4/2567 12:32:20   เปิดอ่าน 249  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การพัฒนาระบบสารสนเทศ » การเขียนบทความลงวารสารวารสารแม่โจ้เทคโนโลยีสารสนเทศและนวัตกรรม
บทความวิชาการมีบทบาทสำคัญในฐานะที่เป็นรูปแบบอันเป็นสากลในการเผยแพร่ความรู้ ความคิด และพัฒนาการที่ได้จากการศึกษา ค้นคว้า วิจัย ในแง่มุมต่าง ๆ มหาวิทยาลัยแม่โจ้จึงได้จัดทำ “วารสารเทคโนโลยีสารสนเทศแล...
เทคโนโลยีสารสนเทศ  บทความวิจัย  วารสารเทคโนโลยีสารสนเทศและนวัตกรรม  วิทยาการคอมพิวเตอร์     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานเทคโนโลยีสารสนเทศ
ผู้เขียน สมนึก สินธุปวน  วันที่เขียน 28/9/2566 13:16:08  แก้ไขล่าสุดเมื่อ 27/4/2567 8:30:43   เปิดอ่าน 233  ครั้ง | แสดงความคิดเห็น 0  ครั้ง