<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MAMAsoon</title>
    <description>The latest articles on DEV Community by MAMAsoon (@chayada0802).</description>
    <link>https://dev.to/chayada0802</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1060703%2Fa91a7c2e-1d24-4f7e-9b64-e5bf788ef87b.jpeg</url>
      <title>DEV Community: MAMAsoon</title>
      <link>https://dev.to/chayada0802</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chayada0802"/>
    <language>en</language>
    <item>
      <title>Image Classificationด้วย Python:อย่างง่ายและตัวอย่างการสอนแบบรวดเร็ว</title>
      <dc:creator>MAMAsoon</dc:creator>
      <pubDate>Fri, 07 Apr 2023 10:39:52 +0000</pubDate>
      <link>https://dev.to/chayada0802/image-classificationdwy-pythonyaangngaayaelatawyaangkaarsnaebbrwderw-5aai</link>
      <guid>https://dev.to/chayada0802/image-classificationdwy-pythonyaangngaayaelatawyaangkaarsnaebbrwderw-5aai</guid>
      <description>&lt;h2&gt;
  
  
  การจำแนกภาพ (Image classification) เป็นการกำหนดป้ายกำกับหรือชั้นของภาพที่นำเข้า โดยอิงตามเนื้อหาที่ปรากฏในภาพ
&lt;/h2&gt;

&lt;p&gt;นี่เป็นสิ่งที่พบบ่อยในการประมวลผลภาพคอมพิวเตอร์ และนำไปใช้ในการรู้จำวัตถุ รู้จำใบหน้า และรถยนต์ที่ขับเคลื่อนด้วยตนเอง เป็นต้น&lt;/p&gt;

&lt;p&gt;การจำแนกภาพเป็น Machine Learning แบบ supervised learning.&lt;/p&gt;

&lt;p&gt;กระบวนการจำแนกภาพประกอบด้วยขั้นตอนต่างๆ ดังนี้&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;การแปรผันภาพ&lt;/em&gt; (Pre-processing): ขั้นตอนนี้เกี่ยวกับการเตรียมภาพนำเข้าสำหรับการจำแนก ซึ่งอาจรวมถึงการปรับขนาดภาพ การตัดภาพ และการปรับสีและความคมชัดของภาพ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;การสกัดลักษณะ&lt;/em&gt;(Feature extraction): ขั้นตอนนี้เกี่ยวกับการสกัดลักษณะที่เกี่ยวข้องจากภาพหลังจากทำการแปรผัน ซึ่งจะนำไปใช้เป็นข้อมูลนำเข้าในการจำแนก&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;การจำแนก&lt;/em&gt;(Classification): ขั้นตอนนี้เกี่ยวกับการใช้โมเดลเรียนรู้ของเครื่อง (Machine Learning) เพื่อทำนายชนิดของภาพนำเข้า โดยอิงตามลักษณะที่สกัดมาจากขั้นตอนก่อนหน้านี้&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;การจำแนกภาพมีหลายประเภท เช่น การจำแนกแบบไบนารี่ (binary classification) การจำแนกแบบหลายชนิด (multi-class classification) และการจำแนกแบบหลายป้ายกำกับ (multi-label classification) โมเดลการเรียนรู้ลึก (Deep Learning) เช่น Convolutional Neural Networks (CNNs) เป็นโมเดลที่นิยมใช้สำหรับการจำแนกภาพ เนื่องจากมีความสามารถในการเรียนรู้ลักษณะของภาพอัตโนมัติจากภาพนำเข้า&lt;/p&gt;

&lt;p&gt;การใช้ภาษา Python และไลบรารีต่างๆ สามารถทำการจำแนกภาพได้โดยใช้เทคนิคและไลบรารีต่างๆ เช่น scikit-learn, TensorFlow, และ Keras&lt;/p&gt;

&lt;h2&gt;
  
  
  ทำไมต้องใช้ Python สำหรับการจัดประเภทรูปภาพ?
&lt;/h2&gt;

&lt;p&gt;Python เป็นทางเลือกที่ได้รับความนิยมสำหรับการนำเอาอัลกอริทึมการจัดประเภทรูปภาพมาประยุกต์ใช้ เนื่องจากความเรียบง่าย ความอ่านเข้าใจง่าย และการสนับสนุนของไลบรารีที่มากมาย&lt;/p&gt;

&lt;p&gt;Python มีไลบรารีและเฟรมเวิร์กต่างๆ ที่ทำให้ง่ายต่อการนำอัลกอริทึมการจัดประเภทรูปภาพมาประยุกต์ใช้ ได้แก่&lt;/p&gt;

&lt;p&gt;NumPy: ไลบรารีสำหรับการทำงานกับอาร์เรย์ขนาดใหญ่ และเมทริกซ์ของข้อมูลตัวเลขหลายมิติ&lt;br&gt;
SciPy: ไลบรารีสำหรับการคำนวณทางวิทยาศาสตร์ซึ่งมีฟังก์ชันสำหรับการทำงานกับรูปภาพ เช่น การอ่านและเขียนไฟล์ภาพ การปรับขนาดและตัดต่อรูปภาพ และการใช้ตัวกรองรูปภาพเพื่อลบเสียงรบกวนออก&lt;br&gt;
scikit-learn: ไลบรารีการเรียนรู้ของเครื่องภายในสำหรับการจัดประเภทรูปภาพ รวมถึงการใช้อัลกอริทึมต่างๆ เช่น เครื่องมือเวกเตอร์สนับสนุน (SVMs) และต้นไม้การตัดสินใจ&lt;br&gt;
TensorFlow: เป็นเฟรมเวิร์กการเรียนรู้เชิงลึกที่ได้รับความนิยม มีเครื่องมือต่างๆ สำหรับสร้างและฝึกโครงข่ายประสาทเทียมสำหรับการจัดประเภท&lt;br&gt;
PyTorch เป็นเฟรมเวิร์กดีพีลีนนั้นยังเป็นทางเลือกที่นิยมใช้สำหรับการสร้างและฝึกโครงข่ายประสาทเทียมสำหรับงานการจัดประเภทภาพ โดยได้รับความนิยมจากความสะดวกในการใช้งานและการใช้ไลบรารี่ต่างๆ ที่มีอยู่ใน Python เช่นเดียวกับ TensorFlow การใช้ไลบรารี่และเฟรมเวิร์กต่างๆ เหล่านี้ทำให้สามารถสร้างอัลกอริทึมจัดประเภทภาพได้อย่างสะดวก โดยนักพัฒนาสามารถโฟกัสไปที่ตัวตรวจจับวัตถุและตัวจัดกลุ่มของอัลกอริทึมของพวกเขาได้เป็นอย่างดี โดยไม่ต้องคำนึงถึงรายละเอียดการสร้างและการใช้งานต่ำของระบบ&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;การสอนสั้น ๆ เกี่ยวกับวิธีการสร้างโมเดลการจำแนกภาพโดยใช้ Python และ Keras:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ส่วนนี้เป็นส่วนย่อจากตัวอย่างการจำแนกภาพที่ให้ไว้ในเอกสารของ Keras ตัวอย่างนี้แสดงถึงวิธีการสร้างโมเดลการจำแนกภาพจากศูนย์โดยใช้ภาพจากไฟล์ JPEG ที่เก็บไว้บนดิสก์และไม่ต้องใช้โมเดล Keras ที่สร้างไว้ก่อนหน้าหรือน้ำหนักที่ถูกสร้างไว้ก่อนแล้ว การทำงานนี้ใช้ชุดข้อมูล Cats vs. Dogs ของ Kaggle สำหรับการจำแนกแบบไบนารี&lt;/p&gt;

&lt;p&gt;การสร้างชุดข้อมูลใช้ฟังก์ชัน image_dataset_from_directory พร้อมกับชั้นการจัดเตรียมข้อมูลและการปรับเปลี่ยนรูปภาพของ Keras&lt;/p&gt;

&lt;p&gt;เพื่อการติดตั้ง Keras:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 1: โหลดชุดข้อมูล Cats vs. Dogs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ดาวน์โหลดข้อมูลแบบ zip ที่มีอยู่ในรูปแบบดิสก์:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!curl -O https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip

!unzip -q kagglecatsanddogs_5340.zip
!ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;คุณควรมีโฟลเดอร์ Animals ที่มีโฟลเดอร์ย่อยสองโฟลเดอร์ (Cats และ Dogs) อยู่:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!ls Animals
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;โปรดดูตัวอย่างเดิมสำหรับขั้นตอนเพิ่มเติมเพื่อลบภาพที่เสียหายด้วยนะคะ&lt;br&gt;
&lt;strong&gt;ขั้นตอนที่ 2: สร้างชุดข้อมูล&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;เพื่อสร้างชุดข้อมูลใหม่ใช้ต่อไปนี้:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;image_size = (180, 180)
batch_size = 128

train_ds, val_ds = tf.keras.utils.image_dataset_from_directory(
    "Animals",
    validation_split=0.2,
    subset="both",
    seed=1337,
    image_size=image_size,
    batch_size=batch_size,
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;*&lt;em&gt;ขั้นตอนที่ 3: แสดงภาพข้อมูล&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
ภาพแรก9ภาพในชุดข้อมูลการฝึกอบรมของคุณควรปรากฏดังนี้ สัญลักษณ์ 0 คือแมว ส่วนสัญลักษณ์ 1 คือหมา:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import matplotlib.pyplot as plt

plt.figure(figsize=(10, 10))
for images, labels in train_ds.take(1):
    for i in range(9):
        ax = plt.subplot(3, 3, i + 1)
        plt.imshow(images[i].numpy().astype("uint8"))
        plt.title(int(labels[i]))
        plt.axis("off")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;ผลลัพธ์ควรมีลักษณะดังนี้:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Corrupt JPEG data: 2226 extraneous bytes before marker 0xd4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5gAICkqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wain8mlvw72b8dc4mqsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5gAICkqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wain8mlvw72b8dc4mqsc.png" alt="Image description" width="594" height="43"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;ขั้นตอนที่ 4: เพิ่มข้อมูลภาพแบบการแปลงค่า&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;หากชุดข้อมูลของคุณไม่เพียงพอคุณสามารถเพิ่มข้อมูลได้อย่างเทียบเท่าโดยใช้การแปลงค่าแบบสุ่มเพื่อเพิ่มข้อมูลภาพการฝึกอบรมที่สมจริง เช่น คุณอาจใช้การหมุนเล็กน้อยแบบสุ่มหรือการพลิกแนวนอนแบบสุ่มเพื่อให้โมเดลของคุณสามารถเรียนรู้เกี่ยวกับภาพต่าง ๆ ได้มากขึ้น&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data_augmentation = keras.Sequential(
    [
        layers.RandomFlip("horizontal"),
        layers.RandomRotation(0.1),
    ]
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;คุณสามารถแสดงผลตัวอย่างข้อมูลที่ถูกเพิ่มขึ้นโดยการใช้ฟังก์ชัน data_augmentation บนภาพแรกในชุดข้อมูลของคุณได้:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plt.figure(figsize=(10, 10))
for images, _ in train_ds.take(1):
    for i in range(9):
        augmented_images = data_augmentation(images)
        ax = plt.subplot(3, 3, i + 1)
        plt.imshow(augmented_images[0].numpy().astype("uint8"))
        plt.axis("off")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 5: ทำให้ข้อมูลเป็นมาตรฐาน&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ภาพจะอยู่ในขนาดมาตรฐานของ 240x240 พร้อมกับชุดข้อมูลที่ผลิตเป็นชุดแบบ float32 อย่างไรก็ตาม การมีค่าความสว่างของช่องสี RGB ในช่วง [0, 255] ไม่เหมาะสำหรับระบบประมวลผลของโครงข่ายประสาทเทียม ดังนั้น ดีกว่าจะต้องมาตรฐานเพื่อให้ค่าอยู่ในช่วง [0, 1] คุณสามารถทำได้โดยใช้ชั้น rescaling layer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 6: ประมวลผลข้อมูลของคุณ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;วิธีหนึ่งในการใช้ตัวประมวลผลก่อนการเพิ่มข้อมูลคือการประยุกต์ใช้ตัวประมวลผลก่อนการเพิ่มข้อมูลกับชุดข้อมูลของคุณ ชุดข้อมูลที่ได้จะผลิตชุดรูปภาพที่ถูกเพิ่มขึ้น:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;augmented_train_ds = train_ds.map(
    lambda x, y: (data_augmentation(x, training=True), y))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;ในวิธีนี้ การเพิ่มขนาดข้อมูลเกิดขึ้นแบบไม่เชื่อมต่อกันโดยใช้ CPU และต้องมีการเก็บข้อมูลชั่วคราวก่อนที่จะเข้าถึงโมเดล วิธีนี้เหมาะสำหรับการฝึกอบรมบน CPU เพราะการเพิ่มขนาดข้อมูลจะไม่ส่งผลต่อการ block โมเดล คุณควรเลือกวิธีนี้เมื่อไม่แน่ใจ&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 7: กำหนดค่า Dataset&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;การกำหนดค่า Dataset ควรมุ่งเน้นการทำงานอย่างมีประสิทธิภาพสูงสุด โดยเริ่มต้นด้วยการนำ data augmentation มาใช้กับ training dataset และตรวจสอบว่ามีการใช้ buffered prefetching เพื่อให้สามารถดึงข้อมูลจากดิสก์ได้อย่างต่อเนื่อง โดยไม่ทำให้การทำงานถูก block ตัวอย่างเช่น:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;train_ds = train_ds.map(
    lambda img, label: (data_augmentation(img), label),
    num_parallel_calls=tf.data.AUTOTUNE,
)
train_ds = train_ds.prefetch(tf.data.AUTOTUNE)
val_ds = val_ds.prefetch(tf.data.AUTOTUNE)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 8: สร้างโมเดล&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ในตัวอย่างนี้ เราจะสร้างรุ่นขนาดเล็กของ Xception โครงสร้างนี้ไม่ได้ถูกปรับแต่งเพื่อให้เหมาะสมแต่คุณสามารถใช้ KerasTuner เพื่อหาการกำหนดรูปแบบของโมเดลที่เหมาะสมได้ กระบวนการนี้ประกอบด้วยการเริ่มต้นโมเดลโดยใช้ data_augmentation และจากนั้นเป็นชั้นการปรับขนาดภาพ ต้องรวมชั้น dropout ก่อนชั้น fully connected สุดท้าย:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def make_model(input_shape, num_classes):
    inputs = keras.Input(shape=input_shape)

    x = layers.Rescaling(1.0 / 255)(inputs)
    x = layers.Conv2D(128, 3, strides=2, padding="same")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Activation("relu")(x)

    previous_block_activation = x 

    for size in [256, 512, 728]:
        x = layers.Activation("relu")(x)
        x = layers.SeparableConv2D(size, 3, padding="same")(x)
        x = layers.BatchNormalization()(x)

        x = layers.Activation("relu")(x)
        x = layers.SeparableConv2D(size, 3, padding="same")(x)
        x = layers.BatchNormalization()(x)

        x = layers.MaxPooling2D(3, strides=2, padding="same")(x)

        residual = layers.Conv2D(size, 1, strides=2, padding="same")(
            previous_block_activation
        )
        x = layers.add([x, residual])  
        previous_block_activation = x  # Set aside next residual

    x = layers.SeparableConv2D(1024, 3, padding="same")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Activation("relu")(x)

    x = layers.GlobalAveragePooling2D()(x)
    if num_classes == 2:
        activation = "sigmoid"
        units = 1
    else:
        activation = "softmax"
        units = num_classes

    x = layers.Dropout(0.5)(x)
    outputs = layers.Dense(units, activation=activation)(x)
    return keras.Model(inputs, outputs)

model = make_model(input_shape=image_size + (3,), num_classes=2)
keras.utils.plot_model(model, show_shapes=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;ขั้นตอนที่ 9: ฝึกโมเดลการจัดประเภทภาพ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ใช้สคริปต์ต่อไปนี้:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;epochs = 25

callbacks = [
    keras.callbacks.ModelCheckpoint("save_at_{epoch}.keras"),
]
model.compile(
    optimizer=keras.optimizers.Adam(1e-3),
    loss="binary_crossentropy",
    metrics=["accuracy"],
)
model.fit(
    train_ds,
    epochs=epochs,
    callbacks=callbacks,
    validation_data=val_ds,
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;ควรจะได้ validation accuracy สูงหลังจาก train ไป 25 epochs (มากกว่า 90%) หาก train มากกว่า 50 epochs อาจทำให้ validation performance เสื่อมลง ซึ่งเป็นสัญญาณของ overfitting&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JZM7ZHIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8jkf8rxw5otwjael3j9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JZM7ZHIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8jkf8rxw5otwjael3j9x.png" alt="Image description" width="319" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;สรุปนะคะ&lt;/p&gt;
&lt;h2&gt;
  
  
  แนวทางปฏิบัติที่ดีที่สุดสำหรับการจำแนกภาพโดยใช้ Python
&lt;/h2&gt;

&lt;p&gt;1.ใช้ชนิดข้อมูลและโครงสร้างที่เหมาะสม: ใช้ NumPy arrays และ SciPy sparse matrices เพื่อแทนภาพและโครงสร้างข้อมูลอื่น ๆ ให้อยู่ในรูปแบบที่มีประสิทธิภาพและง่ายต่อการจัดการ&lt;/p&gt;

&lt;p&gt;2.ทำการประมวลผลและมาตรฐานข้อมูลของคุณก่อน: ก่อนที่จะฝึกโมเดลการจำแนกภาพของคุณ มีความสำคัญที่จะทำการประมวลผลและมาตรฐานข้อมูลของคุณ เช่นการเปลี่ยนขนาดภาพให้เหมือนกัน การแปลงภาพเป็นระดับเทา และการปรับใช้ตัวกรองภาพเพื่อลบเสียง การมาตรฐานข้อมูลของคุณยังช่วยเพิ่มประสิทธิภาพของโมเดลของคุณได้อีกด้วย&lt;/p&gt;

&lt;p&gt;3.ใช้ชุดการตรวจสอบเพื่อประเมินผลโมเดลของคุณ: เมื่อฝึกโมเดลการเรียนรู้ของคุณ การประเมินประสิทธิภาพของมันบนข้อมูลที่ไม่เคยเห็นมีความสำคัญ การแบ่งข้อมูลของคุณเป็นชุดการฝึกและการทดสอบและการฝึกโมเดลของคุณบนชุดการฝึกและการประเมินการใช้ชุดการทดสอบ ช่วยให้คุณได้รับความเข้าใจที่ดีขึ้นเกี่ยวกับประสิทธิภาพของโมเดลของคุณบนข้อมูลจริง&lt;/p&gt;

&lt;p&gt;4.ใช้ regularization เพื่อป้องกัน overfitting: Overfitting เกิดขึ้นเมื่อโมเดลซับซ้อนเกินไปและเรียนรู้รูปแบบในข้อมูลการฝึกอบรมที่ไม่สามารถนำไปใช้กับข้อมูลที่มองไม่เห็นได้อย่างมีประสิทธิภาพ วิธีหนึ่งในการป้องกัน overfitting คือการใช้ regularization ซึ่งเป็นการเพิ่มเงื่อนไขในโมเดลเพื่อป้องกันไม่ให้โมเดลซับซ้อนเกินไป&lt;/p&gt;

&lt;p&gt;5.ใช้ metrics การประเมินที่เหมาะสม: เมื่อประเมินประสิทธิภาพของโมเดลการจำแนกภาพของคุณ มีความสำคัญที่จะใช้ metrics การประเมินที่เหมาะสม ตัวอย่างเช่น หากคุณทำงานกับชุดข้อมูลที่สมดุล (นั่นคือจำนวนตัวอย่างสำหรับแต่ละคลาสเท่ากัน) คุณสามารถใช้ metrics เช่น accuracy, precision, และ recall ได้ แต่หากคุณทำงานกับชุดข้อมูลที่ไม่สมดุล คุณอาจต้องใช้ metrics เช่น F1 score หรือ AUC (Area Under the Curve)&lt;/p&gt;

&lt;p&gt;ref:&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://datagen.tech/guides/image-classification/python/?fbclid=IwAR0djIs2JbRwCpiynrWLKn31MPugMSxdT3Znh1OvtPme9A45CLj9xrI1yN0" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--JBwXoDQ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://datagen.tech/wp-content/uploads/2023/02/AI-ExcellenceAward-2022-01.webp" height="563" class="m-0" width="560"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://datagen.tech/guides/image-classification/python/?fbclid=IwAR0djIs2JbRwCpiynrWLKn31MPugMSxdT3Znh1OvtPme9A45CLj9xrI1yN0" rel="noopener noreferrer" class="c-link"&gt;
          Image Classification in Python: the Basics and a Quick Tutorial
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Image classification using Python can be done using various machine learning techniques and libraries such as scikit-learn, TensorFlow, and Keras.
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bk_9wHde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://datagen.tech/wp-content/uploads/2023/01/cropped-favicon-datagen-32x32.png" width="32" height="32"&gt;
        datagen.tech
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
ref2:&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
&lt;br&gt;
      &lt;div class="c-embed__cover"&gt;
&lt;br&gt;
        &lt;a href="https://analyticsindiamag.com/top-5-image-classification-research-papers-every-data-scientist-should-know/" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;&lt;br&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--eA1V248D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://149695847.v2.pressablecdn.com/wp-content/uploads/2017/09/image-classification.jpg" height="440" class="m-0" width="880"&gt;&lt;br&gt;
        &lt;/a&gt;&lt;br&gt;
      &lt;/div&gt;
&lt;br&gt;
    &lt;div class="c-embed__body"&gt;
&lt;br&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
&lt;br&gt;
        &lt;a href="https://analyticsindiamag.com/top-5-image-classification-research-papers-every-data-scientist-should-know/" rel="noopener noreferrer" class="c-link"&gt;&lt;br&gt;
          Top 5 Image Classification Research Papers Every Data Scientist Should Know&lt;br&gt;
        &lt;/a&gt;&lt;br&gt;
      &lt;/h2&gt;
&lt;br&gt;
        &lt;p class="truncate-at-3"&gt;&lt;br&gt;
          AIM lists down top research papers dealing with image classification research papers and how these advances have become mainstream in industry&lt;br&gt;
        &lt;/p&gt;
&lt;br&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
&lt;br&gt;
          &lt;img&gt;
            alt="favicon"&lt;br&gt;
            class="c-embed__favicon m-0 mr-2 radius-0"&lt;br&gt;
            src="https://149695847.v2.pressablecdn.com/wp-content/uploads/2019/11/cropped-aim-new-logo-1-22-3-32x32.jpg"&lt;br&gt;
            loading="lazy" /&amp;gt;&lt;br&gt;
        analyticsindiamag.com&lt;br&gt;
      &lt;/div&gt;
&lt;br&gt;
    &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
