Phân loại tạm thời kết nối (CTC) là gì?


15

Tôi đang tìm kiếm một dự án nhận dạng ký tự quang học (OCR). Sau khi thực hiện một số nghiên cứu, tôi đã bắt gặp một kiến ​​trúc có vẻ thú vị: CNN + RNN + CTC. Tôi quen thuộc với các mạng thần kinh phức tạp (CNN) và các mạng thần kinh tái phát (RNN), nhưng Phân loại tạm thời kết nối (CTC) là gì? Tôi muốn một lời giải thích trong các điều khoản của giáo dân.


3
Tôi khuyên bạn nên đọc bài viết gốc: Graves, et al. (2006) Phân loại tạm thời kết nối: Ghi nhãn dữ liệu trình tự không phân tách với mạng nơ ron tái phát, Kỷ yếu của Hội nghị quốc tế lần thứ 23 về học máy ( pdf ).
tân li

Câu trả lời:


28

Bạn có một bộ dữ liệu chứa:

  • hình ảnh I1, I2, ...
  • văn bản sự thật mặt đất T1, T2, ... cho các hình ảnh I1, I2, ...

Vì vậy, tập dữ liệu của bạn có thể trông giống như thế:

nhập mô tả hình ảnh ở đây

Mạng thần kinh (NN) đưa ra điểm số cho từng vị trí nằm ngang có thể (thường được gọi là bước thời gian t trong tài liệu) của hình ảnh. Điều này trông giống như thế này đối với một hình ảnh có chiều rộng 2 (t0, t1) và 2 ký tự có thể ("a", "b"):

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

Để huấn luyện NN như vậy, bạn phải chỉ định cho từng hình ảnh trong đó một ký tự của văn bản sự thật mặt đất được định vị trong hình ảnh. Ví dụ, nghĩ về một hình ảnh có chứa văn bản "Xin chào". Bây giờ bạn phải xác định nơi "H" bắt đầu và kết thúc (ví dụ "H" bắt đầu ở pixel thứ 10 và đi đến pixel thứ 25). Tương tự với "e", "l, ... Nghe có vẻ nhàm chán và là một công việc khó khăn cho các bộ dữ liệu lớn.

Ngay cả khi bạn quản lý để chú thích một bộ dữ liệu hoàn chỉnh theo cách này, vẫn có một vấn đề khác. NN đưa ra điểm số cho từng nhân vật ở mỗi bước, xem bảng tôi đã trình bày ở trên để biết ví dụ về đồ chơi. Bây giờ chúng ta có thể lấy nhân vật có khả năng nhất theo từng bước, đây là "b" và "a" trong ví dụ về đồ chơi. Bây giờ nghĩ về một văn bản lớn hơn, ví dụ "Xin chào". Nếu nhà văn có phong cách viết sử dụng nhiều không gian ở vị trí nằm ngang, mỗi nhân vật sẽ chiếm nhiều bước thời gian. Lấy ký tự có thể xảy ra nhất trong mỗi bước thời gian, điều này có thể cung cấp cho chúng tôi một văn bản như "HHHHHHHHeeeellllllllloooo". Làm thế nào chúng ta nên chuyển đổi văn bản này thành đầu ra chính xác? Xóa từng ký tự trùng lặp? Điều này mang lại "Helo", không chính xác. Vì vậy, chúng ta sẽ cần một số xử lý hậu kỳ thông minh.

CTC giải quyết cả hai vấn đề:

  • bạn có thể huấn luyện mạng từ các cặp (I, T) mà không cần phải xác định vị trí xảy ra của một ký tự bằng cách sử dụng mất CTC
  • bạn không phải xử lý hậu kỳ đầu ra, vì bộ giải mã CTC biến đổi đầu ra NN thành văn bản cuối cùng

Làm thế nào đạt được điều này?

  • giới thiệu một ký tự đặc biệt (CTC-blank, ký hiệu là "-" trong văn bản này) để chỉ ra rằng không có ký tự nào được nhìn thấy tại một bước thời gian nhất định
  • sửa đổi văn bản sự thật mặt đất T thành T 'bằng cách chèn khoảng trắng CTC và bằng cách lặp lại các ký tự theo tất cả các cách có thể
  • chúng tôi biết hình ảnh, chúng tôi biết văn bản, nhưng chúng tôi không biết văn bản được định vị ở đâu. Vì vậy, chúng ta hãy thử tất cả các vị trí có thể có của văn bản "Hi ----", "-Hi ---", "--Hi--", ...
  • chúng ta cũng không biết mỗi nhân vật chiếm bao nhiêu không gian trong hình ảnh. Vì vậy, chúng ta cũng hãy thử tất cả các sắp xếp có thể bằng cách cho phép các ký tự lặp lại như "HHi ----", "HHHi ---", "HHHHi--", ...
  • bạn có thấy vấn đề ở đây không? Tất nhiên, nếu chúng ta cho phép một nhân vật lặp lại nhiều lần, làm thế nào để chúng ta xử lý các ký tự trùng lặp thực như "l" trong "Xin chào"? Chà, chỉ luôn luôn chèn một khoảng trống ở giữa trong những tình huống này, ví dụ: "Hel-lo" hoặc "Heeellll ------- llo"
  • tính điểm cho mỗi T 'có thể (nghĩa là cho mỗi phép biến đổi và mỗi kết hợp của các phép biến đổi này), tính tổng trên tất cả các điểm mang lại tổn thất cho cặp (I, T)
  • giải mã rất dễ dàng: chọn nhân vật có số điểm cao nhất cho mỗi bước thời gian, ví dụ: "HHHHHH-eeeellll-lll - oo ---", vứt bỏ các ký tự trùng lặp "H-el-lo", vứt bỏ khoảng trống "Xin chào" và chúng tôi xong rồi

Để minh họa điều này, hãy xem hình ảnh sau đây. Đó là trong bối cảnh nhận dạng giọng nói, tuy nhiên, nhận dạng văn bản là như nhau. Giải mã mang lại cùng một văn bản cho cả hai loa, mặc dù căn chỉnh và vị trí của nhân vật khác nhau.

nhập mô tả hình ảnh ở đây

Đọc thêm:


Điều đó hơi khó hiểu, ít nhất là với tôi, ý nghĩa ban đầu của bạn là " văn bản sự thật mặt đất cho mỗi hình ảnh T1, T2, ...". Bạn nên bắt đầu bằng cách giải thích nó. Ngoài ra, không rõ ràng lắm, nếu bạn không quen thuộc với các khái niệm, ý của bạn là "Mạng thần kinh (NN) sẽ cho điểm cho từng vị trí ngang có thể (bước thời gian t) của hình ảnh". Làm thế nào đến một hình ảnh có bước thời gian? Tóm lại, một số tuyên bố ban đầu của bạn dường như cho rằng bạn biết về một vài khái niệm, cuối cùng sẽ được hiểu sau trong cùng câu trả lời này, nhưng, IMHO, bạn nên làm rõ các khái niệm này.
nbro

Cảm ơn vì bạn đã phản hồi. Tôi đã thêm một minh họa về tập dữ liệu và cải thiện mô tả. Hơn nữa, thuật ngữ bước thời gian đơn giản có nghĩa là "vị trí ngang" hoặc tọa độ x trong bối cảnh nhận dạng văn bản. Thuật ngữ rất có thể bắt nguồn từ nhận dạng giọng nói (một nhiệm vụ tương tự), trong đó bước thời gian đề cập đến vị trí trong thời gian trong tín hiệu âm thanh.
Harry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.