कनेक्शनवादी टेम्पोरल क्लासिफिकेशन (CTC) क्या है?


15

मैं एक ऑप्टिकल कैरेक्टर रिकग्निशन (OCR) प्रोजेक्ट करना चाह रहा हूं। कुछ शोध करने के बाद, मैं एक वास्तुकला में आया हूं जो दिलचस्प लगता है: सीएनएन + आरएनएन + सीटीसी। मैं जटिल तंत्रिका नेटवर्क (CNN), और आवर्तक तंत्रिका नेटवर्क (RNN) से परिचित हूं, लेकिन कनेक्शनवादी टेम्पोरल वर्गीकरण (CTC) क्या है? मुझे आम आदमी की शर्तों में एक स्पष्टीकरण चाहिए।


3
मैं आपको मूल पेपर पढ़ने की सलाह देता हूं: ग्रेव्स, एट अल। (2006) कनेक्शनिस्ट टेम्पोरल क्लासिफिकेशन: लैबलिंग अनसेलेक्टेड सीक्वेंस डेटा विद रिकरंट न्यूरल नेटवर्क्स, प्रोसीडिंग्स ऑफ द 23 आरडी इंटरनेशनल कॉन्फ्रेंस ऑन मशीन लर्निंग ( पीडीएफ )।
नियो ली

जवाबों:


28

आपके पास एक डेटासेट है:

  • चित्र I1, I2, ...
  • जमीनी सच्चाई ग्रंथों टी 1, टी 2, ... छवियों के लिए I1, I2, ...

ताकि आपका डेटासेट कुछ ऐसा दिख सके:

यहाँ छवि विवरण दर्ज करें

एक न्यूरल नेटवर्क (एनएन) छवि के प्रत्येक संभव क्षैतिज स्थिति (अक्सर साहित्य में टाइम-स्टेप टी कहा जाता है) के लिए एक स्कोर का उत्पादन करता है । यह चौड़ाई 2 (t0, t1) और 2 संभावित वर्णों ("ए", "बी") के साथ एक छवि के लिए कुछ इस तरह दिखता है:

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

इस तरह के एनएन को प्रशिक्षित करने के लिए, आपको प्रत्येक छवि के लिए निर्दिष्ट करना होगा जहां छवि में जमीनी सच्चाई का एक चरित्र तैनात है। एक उदाहरण के रूप में, "हैलो" पाठ वाले चित्र के बारे में सोचें। अब आपको यह निर्दिष्ट करना होगा कि "H" कहाँ से शुरू और समाप्त होता है (जैसे "H" 10 वें पिक्सेल से शुरू होता है और 25 वें पिक्सेल तक जाता है)। वही "ई", "एल, ... के लिए उबाऊ लगता है और बड़े डेटासेट के लिए एक कठिन काम है।

यहां तक ​​कि अगर आप इस तरह से एक संपूर्ण डेटासेट एनोटेट करने में कामयाब रहे, तो भी एक और समस्या है। NN प्रत्येक समय-चरण में प्रत्येक वर्ण के लिए स्कोर का आउटपुट देता है, मैंने एक खिलौना उदाहरण के लिए ऊपर दी गई तालिका देखें। अब हम समय-कदम पर सबसे अधिक संभावित चरित्र ले सकते हैं, यह खिलौना उदाहरण में "बी" और "ए" है। अब एक बड़े पाठ के बारे में सोचें, उदाहरण के लिए "हैलो"। यदि लेखक की लेखन शैली है जो क्षैतिज स्थिति में बहुत अधिक स्थान का उपयोग करती है, तो प्रत्येक चरित्र कई समय-चरणों पर कब्जा कर लेगा। प्रति समय-चरण में सबसे संभावित चरित्र लेते हुए, यह हमें "HHHHHHHHeeeellllllllloooo" जैसा एक पाठ दे सकता है। हमें इस पाठ को सही आउटपुट में कैसे बदलना चाहिए? प्रत्येक डुप्लिकेट वर्ण निकालें? यह "हेलो" देता है, जो सही नहीं है। इसलिए, हमें कुछ चतुर पोस्टप्रोसेसिंग की आवश्यकता होगी।

सीटीसी दोनों समस्याओं का हल:

  • आप सीटीसी लॉस का उपयोग करके किसी वर्ण को किस स्थिति में निर्दिष्ट करते हैं बिना जोड़े (I, T) से नेटवर्क को प्रशिक्षित कर सकते हैं
  • आपको आउटपुट पोस्टप्रोसेस करने की आवश्यकता नहीं है, क्योंकि CTC डिकोडर NN आउटपुट को अंतिम टेक्स्ट में बदल देता है

यह कैसे प्राप्त किया जाता है?

  • एक विशेष चरित्र (CTC- रिक्त, इस पाठ में "-" के रूप में दर्शाया गया है) यह दर्शाने के लिए कि कोई वर्ण किसी निश्चित समय-चरण पर दिखाई नहीं देता है
  • CTC-blanks सम्मिलित करके और सभी संभव तरीकों से वर्णों को दोहराकर जमीनी सच्चाई के पाठ को T 'में बदलें
  • हम छवि को जानते हैं, हम पाठ को जानते हैं, लेकिन हम यह नहीं जानते कि पाठ कहाँ स्थित है। तो, सिर्फ कोशिश करते हैं सभी पाठ "हाय ----" "हाय ---", "--Hi--" के संभावित स्थिति, ...
  • हम यह भी नहीं जानते कि प्रत्येक वर्ण चित्र में कितना स्थान रखता है। तो चलिए "HHi ----", "HHHi ---", "HHHH----", ... जैसे पात्रों को दोहराने की अनुमति देकर सभी संभव संरेखण का प्रयास करें।
  • क्या आपको यहाँ कोई समस्या दिखाई देती है? बेशक, अगर हम किसी चरित्र को कई बार दोहराने की अनुमति देते हैं, तो हम "हैलो" जैसे "डुप्लीकेट" जैसे वास्तविक डुप्लिकेट पात्रों को कैसे संभालते हैं ? ठीक है, बस हमेशा इन स्थितियों के बीच में एक रिक्त डालें, जैसे कि "हेल-लो" या "हीलेल ------- लॉ"
  • प्रत्येक संभव T 'के लिए स्कोर की गणना करें (जो कि प्रत्येक परिवर्तन और इनमें से प्रत्येक संयोजन के लिए है), सभी अंकों पर योग करें जो कि जोड़ी के लिए नुकसान देता है (I, T)
  • डिकोडिंग आसान है: प्रत्येक समय के कदम के लिए उच्चतम स्कोर के साथ चरित्र चुनें, जैसे "HHHHH-eeeellll-lll - oo ---", डुप्लिकेट वर्ण "H-el-lo" को फेंक दें, खाली "हेलो" को फेंक दें, और हम कार्य पूर्ण।

इसे समझने के लिए, निम्नलिखित छवि पर एक नज़र डालें। यह भाषण मान्यता के संदर्भ में है, हालांकि, पाठ मान्यता केवल एक ही है। डिकोडिंग दोनों वक्ताओं के लिए एक ही पाठ का उत्पादन करती है, भले ही संरेखण और चरित्र की स्थिति भिन्न हो।

यहाँ छवि विवरण दर्ज करें

आगे की पढाई:


यह थोड़ा भ्रमित करने वाला है, कम से कम मेरे लिए, आपको शुरू में " प्रत्येक छवि T1, T2, ..." के लिए जमीनी सच्चाई पाठ से क्या मतलब है । आपको इसकी व्याख्या करके शुरू करना चाहिए। इसके अलावा, यह बहुत स्पष्ट नहीं है, यदि आप अवधारणाओं से परिचित नहीं हैं, तो आप "ए न्यूरल नेटवर्क (एनएन)" से क्या मतलब रखते हैं, छवि के प्रत्येक संभावित क्षैतिज स्थिति (समय-चरण टी) के लिए एक स्कोर का उत्पादन करता है। कैसे एक छवि समय कदम है? संक्षेप में, आपके कुछ प्रारंभिक कथन यह मानते हैं कि आप कुछ अवधारणाओं से अवगत हैं, जिन्हें अंततः बाद में इसी उत्तर में समझा जाता है, लेकिन, IMHO, आपको इन अवधारणाओं को स्पष्ट करना चाहिए।
नबंर

प्रतिक्रिया के लिए धन्यवाद। मैंने डाटासेट के बारे में एक उदाहरण जोड़ा है और विवरण में सुधार किया है। इसके अलावा, शब्द समय-चरण का तात्पर्य "क्षैतिज स्थिति" या पाठ पहचान के संदर्भ में एक्स-समन्वय है। यह शब्द सबसे अधिक संभावना भाषण मान्यता (एक समान कार्य) से उत्पन्न होता है, जहां समय-चरण ऑडियो सिग्नल में समय की स्थिति को संदर्भित करता है।
हैरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.