U-Net: Convolutional Networks for Biomedical Image Segmentation


Share this article

การตัดแบ่งรูปภาพ (Image Segmentation)

Image Segmentation คือการจำแนกพิกเซลภายในภาพ หรือการตัดแบ่งรูปภาพออกเป็นพื้นที่ที่มีรายละเอียดต่างกัน  ยกตัวอย่างเช่น พื้นที่ที่มีคนอยู่กับพื้นที่ที่ไม่มีคนอยู่ Image Segmentation ทำให้เข้าใจรูปได้ดีขึ้น ยกตัวอย่างเช่น การสร้างรถอัตโนมัติ (self-driving car) AI จะต้องระบุตำแหน่งของคนในภาพ เพื่อไม่ให้รถขับไปชนคน จึงต้องใช้ Image Segmentation ในการระบุตำแหน่ง ซึ่งสามารถแบ่งออกได้เป็น 2 รูปแบบ

 

1. Semantic Segmentation

รูปที่ 1 Sematic Segmentation

จากรูปที่ 1 คือตัวอย่างของการทำ Semantic Segmentation ซึ่งคือการหาประเภทของวัตถุ (class) ในทุกพิกเซลในภาพ เช่น พิกเซลสีน้ำเงิน class คือรถ ส่วนพิกเซลสีแดง class คือคน

 

2. Instance Segmentation

รูปที่ 2 Instance Segmentation

ส่วนรูปที่ 2 คือตัวอย่างของการทำ Instance Segmentation เป็นการแบ่งวัตถุแต่ละชิ้นที่อยู่ในภาพ ซึ่งจะต่างจาก Semantic Segmentation ที่จะระบุ class เป็น คน, รถ เป็นต้น แต่ Instance Segmentation จะแบ่งเป็น คนที่ 1, คนที่ 2, คนที่ 3, คนที่ 4, รถคันที่ 1, รถคันที่ 2 เป็นต้น ซึ่งแล้วแต่ว่าวัตถุแต่ละ class จะมีกี่ชิ้นอยู่ในภาพ

 

การตัดแบ่งรูปภาพทางการแพทย์ (Biomedical Image Segmentation)

เนื่องจากภาพถ่ายทางการแพทย์ที่โดยปกติมักจะมีองค์ประกอบมากมาย เช่นในภาพถ่ายเอกซเรย์ก็อาจจะมี ปอด หัวใจ กระดูกสันหลัง อยู่ในภาพ ด้วยเหตุนี้ อัลกอริทึมมักจะต้องทำ segmentation ก่อนเพื่อตัดเฉพาะอวัยวะที่ต้องการมาวิเคราะห์

 

ยูเน็ท (U-Net) คืออะไร

U-Net เป็นโครงข่ายประสาทเทียม (Artificial Neural Network) แบบ Convolutional Neural Network (CNN) หลายคนที่ศึกษา Deep Learning น่าจะคุ้นเคยกับโครงข่ายประสาทเทียมที่เรียนรู้แบบ Supervised Learning หรือการเรียนรู้แบบมีผู้สอน ยกตัวอย่างเช่น การทำ Classification แยกรูปภาพว่ามี สุนัขอยู่ในภาพหรือไม่มี ในกรณีนี้ รูปภาพจะถูกส่งผ่าน layers ต่างๆ ของ Classification Network ที่อาจทำหน้าที่เช่น Convolution, Max  Pooling, Dropout จนกระทั่งได้ผลลัพธ์ออกมาเป็นเลข 0 ถึง 1 (คือความน่าจะเป็นที่รูปภาพนี้จะมีสุนัขอยู่ในภาพ) หรือในกรณีที่มีผลลัพธ์หลาย class เช่น MNIST (ข้อมูลรูปภาพตัวเลข 0–9 ที่ถูกเขียนด้วยมือ เพื่อใช้ ฝึกสอนโมเดลให้ทำนายว่ารูปตัวเลข เป็นเลขอะไร) ผลลัพธ์ที่ออกจาก layer สุดท้ายจะเป็นตัวเลข สิบตัว คือเวกเตอร์ของความน่าจะเป็นที่รูปภาพที่เข้ามาจะเป็นตัวเลข 0 ถึง 9

ในการทำ Semantic Segmentation ผลลัพธ์ที่ได้จะต่างจากการทำ Classification เล็กน้อย โดยผลลัพธ์จะเป็น matrix สองมิติที่มีขนาดกว้างคูณยาวเท่ากับรูปภาพที่ใส่เข้าไป ยกตัวอย่างเช่นถ้า Segmentation Network ต้องการจำแนกพิกเซลว่ามีคน หรือไม่มีคน ผลลัพธ์ที่ออกมาในแต่ละตำแหน่งของรูปภาพ อาจจะเป็นเลขระหว่าง 0 (ไม่มีคน) ถึง 1 (มีคน) เป็นต้น ในกรณีที่ภาพมีวัตถุหลาย class อยู่ปะปนกันในภาพ ผลลัพธ์ที่เราต้องการจะเป็น matrix สามมิติ คือมีขนาดกว้างคูณยาวเท่ากับรูปภาพที่ใส่เข้าไป ส่วนความลึกจะเป็นจำนวน class ที่ต้องการจะ segment เช่นถ้าเราจะแบ่งภาพเป็นส่วนที่มีคน รถ หรือต้นไม้อยู่ ความลึกจะเท่ากับ 3

U-Net เป็น CNN แบบหนึ่งที่เป็นที่นิยมในการทำ Biomedical Image Segmentation โครงสร้างของ U-Net ประกอบไปด้วยการทำ Convolution และ Transposed Convolution ซึ่ง Transposed Convolution ทำงานคล้ายๆกับ Convolution แตกต่างกันตรงที่ Convolution จะทำให้ความละเอียดเชิงพื้นที่ (Spatial Resolution) ของภาพลดลงหลังจากผ่าน layer แต่ Transposed Convolutions เป็นการใช้ up-sampling kernel ที่ทำให้ Spatial Resolution เพิ่มขึ้น

 

สิ่งที่น่าสนใจในโครงสร้างของ U-Net คือรูปแบบการใช้ down-sampling จากนั้นค่อยทำ up-sampling นอกจากนี้ยังมีการใช้ Max Pooling และ ใช้ 1×1 convolution เพื่อทำนาย class

READ  BERT Explained: State of the art language model for NLP

ตัวอย่างหนึ่งของการใช้ U-Net คือการตัดแบ่งเซลล์ออกจากภาพถ่ายเซลล์ผ่านกล้องจุลทัศน์ดังรูปที่ 3 โดยอัลกอริทึมจะต้องทำนายว่าพิกเซลใดเป็นเยื่อหุ้ม (membrane) และพิกเซลใดเป็นเซลล์ (cell)

รูปที่ 3 Input และ Output จากการทำนายภาพถ่ายเซลล์ผ่านกล้องจุลทัศน์

U-Net  ที่ใช้ทำงานนี้ มีโครงสร้างตามรูปที่ 4

รูปที่ 4 โครงสร้างของ U-Net 

ส่วนแรกของ U-Net (ส่วนที่ 1 ในรูป) ประกอบไปด้วย Convolution Block (3×3 conv) และ การ down-sampling ด้วย Max Pooling (2×2 max pool) เพื่อดึงคุณลักษณะ (features) ออกมาจากภาพ จะเห็นว่าการดึงคุณลักษณะนี้เกิดขึ้นหลายระดับตั้งแต่ high-resolution features ไปจนถึง low-resolution features

ส่วนที่สอง (ส่วนที่ 2 ในรูป) ประกอบไปด้วยการทำ up-sampling (up-conv 2×2) และตามด้วยการทำ convolution คือการนำฟีเจอร์ที่ได้จากส่วนที่ 1 มาใช้ในการสร้างภาพที่ถูกตัดเรียบร้อยแล้ว (Segmented Output) ลูกศรสีเทาในรูปแสดงให้เห็นว่า ส่วนที่ 2 จะนำ features ในแต่ละระดับจากส่วนที่หนึ่งมารวมในการคำนวณด้วย

สุดท้ายจะปิดท้ายด้วย conv 1×1 เพื่อแปลงขนาดของ feature จาก 62 (ซึ่งเท่ากับความลึกของเลเยอร์ก่อนสุดท้าย) ให้เหลือ 2 เพราะผลลัพธ์ที่เราต้องการทำนายมี 2  class คือ เยื่อหุ้ม (membrane) และเซลล์ (cell)

U-Net สามารถนำไปประยุกต์ใช้ได้หลายโจทย์ที่เป็นภาพถ่ายทางการแพทย์และชีววิทยา ไม่ว่าจะเป็นการตัดแบ่งภาพถ่ายเอกซเรย์ ภาพ MRI หรือแม้แต่การแยกอวัยวะในภาพถ่ายอัลตราซาวด์ ทำให้การวินิจฉัยและทำความเข้าใจภาพถ่ายเหล่านี้เป็นไปได้ง่ายและแม่นยำขึ้น

Reference


ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]

ABOUT

SERVICES