Connectionist Temporal Classification (CTC) คืออะไร


15

ฉันต้องการทำโครงการรู้จำอักขระด้วยแสง (OCR) หลังจากทำวิจัยแล้วฉันเจอสถาปัตยกรรมที่น่าสนใจ: CNN + RNN + CTC ฉันคุ้นเคยกับเครือข่ายประสาทที่ซับซ้อน (CNN) และเครือข่ายประสาทที่เกิดขึ้นอีก (RNN) แต่ Connectionist Temporal Classification (CTC) คืออะไร ฉันต้องการคำอธิบายในแง่ของคนธรรมดา


3
ฉันแนะนำให้คุณอ่านเอกสารต้นฉบับ: Graves และคณะ (2006) การจำแนกประเภทชั่วคราวของ Connectionist: การติดฉลากข้อมูลลำดับที่ไม่มีการแบ่งส่วนด้วยเครือข่ายประสาทกำเริบการประชุมวิชาการนานาชาติครั้งที่ 23 เรื่องการเรียนรู้ของเครื่อง ( pdf )
neo li

คำตอบ:


28

คุณมีชุดข้อมูลที่มี:

  • ภาพ I1, I2, ...
  • พื้นความจริงตำรา T1, T2, ... สำหรับภาพ I1, I2, ...

ดังนั้นชุดข้อมูลของคุณอาจมีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

Neural Network (NN) เอาท์พุทคะแนนสำหรับตำแหน่งแนวนอนที่เป็นไปได้ (มักเรียกว่าขั้นตอนเวลาในวรรณคดี) ของรูปภาพ นี่เป็นภาพสำหรับรูปภาพที่มีความกว้าง 2 (t0, t1) และ 2 ตัวอักษรที่เป็นไปได้ ("a", "b"):

| t0 | t1 --+-----+---- a | 0.1 | 0.6 b | 0.9 | 0.4

ในการฝึกอบรม NN คุณต้องระบุสำหรับแต่ละภาพที่มีตัวละครของข้อความจริงพื้นอยู่ในภาพ ยกตัวอย่างเช่นนึกภาพที่มีข้อความ "Hello" ตอนนี้คุณต้องระบุตำแหน่งที่ "H" เริ่มต้นและสิ้นสุด (เช่น "H" เริ่มต้นที่พิกเซลที่ 10 และไปจนถึงพิกเซลที่ 25) เช่นเดียวกับ "e", "l, ... ฟังดูน่าเบื่อและเป็นงานที่ยากสำหรับชุดข้อมูลขนาดใหญ่

แม้ว่าคุณจะสามารถใส่คำอธิบายประกอบชุดข้อมูลที่สมบูรณ์ด้วยวิธีนี้มีปัญหาอื่น NN ส่งออกคะแนนสำหรับตัวละครแต่ละตัวในแต่ละขั้นตอนดูตารางที่ฉันได้แสดงไว้ด้านบนสำหรับตัวอย่างของเล่น ตอนนี้เราสามารถใช้ตัวละครที่เป็นไปได้มากที่สุดในแต่ละขั้นตอนนี่คือ "b" และ "a" ในตัวอย่างของเล่น ตอนนี้ให้คิดถึงข้อความที่ใหญ่ขึ้นเช่น "สวัสดี" หากผู้เขียนมีสไตล์การเขียนที่ใช้พื้นที่มากในตำแหน่งแนวนอนอักขระแต่ละตัวจะใช้เวลาหลายขั้นตอน รับตัวละครที่น่าจะเป็นไปได้มากที่สุดต่อขั้นตอนนี้อาจทำให้เรามีข้อความเช่น "HHHHHHHHHeeeellllllllloooo" เราควรแปลงข้อความนี้เป็นผลลัพธ์ที่ถูกต้องได้อย่างไร? ลบอักขระที่ซ้ำกันแต่ละรายการหรือไม่ สิ่งนี้ให้ผล "Helo" ซึ่งไม่ถูกต้อง ดังนั้นเราจะต้องมีการประมวลผลที่ชาญฉลาด

CTC แก้ปัญหาทั้งสอง:

  • คุณสามารถฝึกอบรมเครือข่ายจากคู่ (I, T) โดยไม่ต้องระบุตำแหน่งที่ตัวละครเกิดขึ้นโดยใช้การสูญเสีย CTC
  • คุณไม่จำเป็นต้องประมวลผลเอาต์พุตภายหลังเนื่องจากตัวถอดรหัส CTC แปลงเอาต์พุต NN เป็นข้อความสุดท้าย

สิ่งนี้สำเร็จได้อย่างไร

  • แนะนำตัวละครพิเศษ (CTC-blank เขียนเป็น "-" ในข้อความนี้) เพื่อระบุว่าไม่มีตัวอักษรใด ๆ ถูกมองในเวลาที่กำหนด
  • ปรับเปลี่ยนข้อความจริงพื้นดิน T เป็น T โดยการใส่ CTC-blanks และโดยการทำซ้ำตัวอักษรด้วยวิธีที่เป็นไปได้ทั้งหมด
  • เรารู้ภาพเรารู้ข้อความ แต่เราไม่รู้ว่าตัวอักษรอยู่ที่ไหน ดังนั้นเรามาลองตำแหน่งที่เป็นไปได้ทั้งหมดของข้อความ "สวัสดี ----", "-Hi ---", "- สวัสดี -", ...
  • เรายังไม่ทราบว่าแต่ละอักขระมีพื้นที่ว่างเท่าใดในภาพ ดังนั้นให้ลองการจัดแนวที่เป็นไปได้ทั้งหมดโดยอนุญาตให้ตัวละครซ้ำเช่น "HHi ----", "HHHi ---", "HHHHi--", ...
  • คุณเห็นปัญหาที่นี่ไหม แน่นอนว่าถ้าเราอนุญาตให้ตัวละครซ้ำหลาย ๆ ครั้งเราจะจัดการตัวละครที่ซ้ำกันอย่างแท้จริงเช่น "l" ใน "Hello" ได้อย่างไร? ในกรณีเหล่านี้ให้ใส่ช่องว่างไว้เสมอนั่นคือ "Hel-lo" หรือ "Heeellll ------- llo"
  • คำนวณคะแนนสำหรับแต่ละ T ที่เป็นไปได้ (นั่นคือสำหรับการเปลี่ยนแปลงแต่ละครั้งและการรวมกันของเหล่านี้), รวมคะแนนทั้งหมดที่ให้ผลขาดทุนสำหรับคู่ (I, T)
  • การถอดรหัสเป็นเรื่องง่าย: เลือกตัวละครที่มีคะแนนสูงสุดในแต่ละขั้นตอนเช่น "HHHHHHH-eeeellll-lll - oo ---", ทิ้งตัวละครที่ซ้ำกัน "H-el-lo" ทิ้งช่องว่าง "Hello" และเรา เสร็จแล้ว.

เพื่ออธิบายสิ่งนี้ดูภาพต่อไปนี้ มันอยู่ในบริบทของการรู้จำเสียงอย่างไรก็ตามการรู้จำข้อความจะเหมือนกัน การถอดรหัสจะให้ข้อความเหมือนกันสำหรับลำโพงทั้งคู่แม้ว่าการจัดตำแหน่งและตำแหน่งของอักขระจะแตกต่างกัน

ป้อนคำอธิบายรูปภาพที่นี่

อ่านเพิ่มเติม:


อย่างน้อยก็สำหรับฉันสิ่งที่คุณเริ่มต้นหมายถึงโดย " ข้อความจริงพื้นดินสำหรับแต่ละภาพ T1, T2, ... " คุณควรเริ่มต้นด้วยการอธิบาย นอกจากนี้ยังไม่ชัดเจนมากนักหากคุณไม่คุ้นเคยกับแนวคิดสิ่งที่คุณหมายถึงโดย "A Neural Network (NN) จะให้คะแนนสำหรับตำแหน่งแนวนอนที่เป็นไปได้ (เวลาทีละขั้นตอน) ของภาพ" ทำไมภาพถึงมีขั้นตอนเวลา? โดยสรุปข้อความเริ่มต้นบางคำดูเหมือนว่าคุณจะรับรู้แนวคิดบางอย่างซึ่งในที่สุดจะเข้าใจในคำตอบเดียวกันนี้ แต่ IMHO คุณควรชี้แจงแนวคิดเหล่านี้
nbro

ขอบคุณสำหรับความคิดเห็น. ฉันได้เพิ่มภาพประกอบเกี่ยวกับชุดข้อมูลและปรับปรุงคำอธิบาย นอกจากนี้คำว่าขั้นตอนเวลานั้นหมายถึง "ตำแหน่งแนวนอน" หรือพิกัด x ในบริบทของการจดจำข้อความ คำที่เป็นไปได้มากที่สุดมาจากการรู้จำเสียง (งานที่คล้ายกัน) ซึ่งขั้นตอนเวลาหมายถึงตำแหน่งในเวลาในสัญญาณเสียง
Harry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.