Cốt lõi của thị giác máy tính là đọc hiểu dữ liệu hình ảnh. Nhờ công nghệ học sâu và khả năng phát hiện chướng ngại vật, phân đoạn hình ảnh hoặc trích xuất bối cảnh, thị giác máy tính đang tăng trưởng nhanh trong những năm gần đây, giúp kiến tạo xe tự hành, nhà thông minh, các công cụ thực tế tăng cường…. Hầu hết các nghiên cứu và ứng dụng của thị giác máy tính hiện nay đang tập trung nhiều hơn vào hình ảnh, mà ít tận dụng chuỗi hình ảnh (tức khung hình video). Tuy nhiên, với tư cách là một loại dữ liệu giàu giá trị, cho phép hiểu sâu hơn về tình huống và chuỗi hành động, video đang bắt đầu thu hút sự chú ý từ các nhà nghiên cứu và phát triển.
Tác vụ giám sát video liên quan đến hai loại thuật toán chính, gồm: theo dõi đối tượng và phân loại hành động. Bài viết sẽ mang đến những hiểu biết cơ bản về hai thuật toán này, đồng thời cung cấp một bức tranh toàn cảnh về hệ thống phân tích video.
1. Theo dõi đối tượng
Video là một tập hợp các khung hình. Khi phân tích video, chúng ta có thể phân tích luồng video (nguồn cấp hình ảnh trực tiếp) hoặc chuỗi video (video có độ dài cố định).
- Trong luồng video, chúng ta sẽ xem xét hình ảnh hiện tại và những hình ảnh trước đó.
- Trong một chuỗi video, chúng ta có quyền truy cập vào toàn bộ video, từ hình ảnh đầu tiên đến hình ảnh cuối cùng.
Optical flow (Luồng quang)
Trong phân tích video, vấn đề then chốt là ước tính lưu lượng quang học. Luồng quang (Optical flow) có nghĩa là tính toán sự thay đổi pixel giữa hai khung hình (minh họa dưới đây)
Đầu ra của luồng quang là vectơ chuyển động giữa khung 1 và khung 2. Có dạng như sau:
Để giải quyết vấn đề luồng quang, về dữ liệu, có thể sử dụng các bộ như KITTI Vision Benchmark Suite hoặc MPI Sintel (cả hai đều chứa dữ liệu luồng quang trung thực, thường khó tìm thấy ở các bộ dữ liệu phổ biến hơn). Còn về cấu trúc mạng, có thể sử dụng mạng nơ ron tích chập (convolutional neural networks – CNN).
FlowNet là một ví dụ về CNN được thiết kế cho các tác vụ luồng quang. FlowNet có thể xuất luồng quang từ hai khung.
Đầu vào của mạng là một tập hợp hai ảnh RGB; độ sâu là 6. Luồng quang thường được biểu thị bằng màu sắc.
Theo dõi đối tượng trực quan (Visual Object Tracking – VOT)
Theo dõi đối tượng trực quan (VOT) là khoa học theo dõi một đối tượng với vị trí cho trước trong khung 1. Ở đây, ta không sử dụng thuật toán phát hiện (detection algorithm), do đó, không xác định được đối tượng ở đây là gì, mà đơn thuần là theo dõi chuyển động của đối tượng dựa trên một hộp giới hạn (bounding box) ban đầu.
Việc theo dõi được thực hiện bằng cách tính toán sự giống nhau giữa khung 0 và 1, hoặc bằng màu sắc. Đối với cách thứ hai, ta phải tính toán màu của đối tượng đã cho, sau đó tính toán nền đại diện cho màu gần nhất với đối tượng. Bước tiếp theo là tiến hành xóa đối tượng khỏi hình ảnh ban đầu để theo dõi.
Đây là một kỹ thuật rất mạnh và chỉ sử dụng thị giác máy tính. Quy trình này có thể được tóm tắt như sau:
- Xác nhận đối tượng ban đầu bằng cách sử dụng hộp giới hạn
- Tính toán biểu đồ màu của đối tượng này
- Tính toán màu của nền (gần đối tượng)
- Xóa màu đối tượng khỏi tổng thể hình ảnh
- Từ đây, ta có một công cụ theo dõi đối tượng dựa trên màu sắc
Có thể tham khảo votchallenge.net để tìm bộ dữ liệu cho tác vụ này
Bước tiếp theo là áp dụng mạng thần kinh tích chập (CNN)
Ở đây, cần phân biệt hai mô hình chính là MDNet và GOTURN.
- Trình theo dõi MDNet (Mạng đa miền) đào tạo mạng nơ-ron để phân biệt giữa đối tượng và nền. Kiến trúc của MDNet tương tự như một mô hình VGG — sau cùng, ta có được các lớp dành riêng cho miền (bộ phân loại đối tượng và nền).
- GOTURN (Generic Object Tracking Using Regression Networks – Theo dõi đối tượng bằng mạng hồi quy). GOTURN hoạt động bằng cách sử dụng hai mạng nơ-ron và chỉ định khu vực tìm kiếm. Nó có thể hoạt động ở trên 100 FPS (Tốc độ khung hình), từ đó, hỗ trợ đắc lực trong việc theo dõi video.
Theo dõi đa đối tượng (Multiple Object Tracking – MOT)
MOT sử dụng thuật toán Deep SORT. Không giống như các trình theo dõi khác (VOT), MOT mang tính dài hạn hơn.
Ở đây, ta có hai loại: Theo dõi dựa trên/không dựa trên phát hiện
Đối với theo dõi dựa trên phát hiện, có 02 tác vụ chính: Phát hiện đối tượng & Liên kết đối tượng
Liên kết đối tượng có nghĩa là liên kết các phát hiện từ thời điểm t với các phát hiện từ thời điểm t + 1. Điều này phụ thuộc rất nhiều vào chất lượng của trình phát hiện. Một trình phát hiện kém sẽ làm cho bộ theo dõi không thể hoạt động. Mặt khác, một trình theo dõi tốt có thể xử lý cả những khung hình không có bất cứ phát hiện nào.
Ngoài ra, cũng có thể phân biệt giữa theo dõi trực tuyến và ngoại tuyến. Theo dõi trực tuyến thực hiện trên một nguồn cấp dữ liệu trực tiếp. Trong khi đó, theo dõi ngoại tuyến hoạt động trên một video đầy đủ sẵn các khung hình.
Đối với theo dõi trực tuyến, có thể sử dụng: mạng thần kinh tích chập CNN để phát hiện đối tượng; Bộ lọc Kalman để dự đoán vị trí tại thời điểm t từ vị trí tại thời điểm t-1 cho trước; Thuật toán Hungary (The Hungarian Algorithm) để phát hiện liên kết khung.
Tóm lại, theo dõi đối tượng bao gồm ước tính luồng quang, theo dõi đối tượng trực quan và theo dõi đa đối tượng.
2. Phân loại hành động
Phân loại hành động là nhóm tác vụ thứ hai liên quan đến việc xây dựng hệ thống giám sát dựa trên thị giác máy tính. Phân loại hành động phụ thuộc trực tiếp vào việc phát hiện và theo dõi đối tượng. Sau khi hiểu được một tình huống nhất định, ta có thể phân loại các hành động bên trong hộp giới hạn.
Điều kiện đầu tiên là cần một camera cho phép quan sát đối tượng ở góc độ tốt nhất. Các hành động cần phân loại có thể đơn giản, chẳng hạn như đi bộ, chạy, vỗ tay hoặc vẫy tay, hoặc phức tạp hơn như nấu ăn, bao gồm một loạt các thao tác liền nhau.
Bộ dữ liệu
So với việc theo dõi đối tượng thì dán nhãn dữ liệu trong phân loại hành động trở nên dễ dàng hơn — Trong một số trường hợp, chỉ cần dán một nhãn cho một tập hợp các hình ảnh.
Bạn có thể tham khảo bộ dữ liệu KTH Actions để thu thập video và các nhãn được liên kết. Ngoài ra, UCF Sport Actions, Hollywood2, HMDB hoặc UCF 101 cũng là một số nguồn hữu ích hỗ trợ phân loại hành động.
Luồng quang
Bởi khả năng xác định một vectơ giữa hai khung, luồng quang có thể được sử dụng như đầu vào cho một mạng nơ-ron phân loại.
Phân loại hành động với Học máy (Đầu cuối: End-To-End)
Mạng CNN là một giải pháp mới và hiện đại hơn, giúp phân loại hành động.
Hành động xảy ra trong video, không phải trong hình ảnh. Điều này đồng nghĩa với việc phải đưa rất nhiều khung hình vào hệ thống CNN, sau đó, thực hiện tác vụ phân loại theo không-thời gian.
Việc phát hiện hay phân loại hành động trên hình ảnh đã đủ khó, bởi các yếu tố chiều kích của ảnh. Tuy nhiên, đối với video, điều đó còn khó hơn.
Dưới đây là một ví dụ về cách thức two-scale model phân loại hành động từ các luồng hình ảnh.
Hệ thống mạng nơ-ron sẽ hoạt động trên 2 đầu vào và xuất ra một hành động. Luồng không gian hoạt động trên single frame; được xếp chồng lên luồng thời gian hoạt động trên multi-frame optical flow. Ở đây cũng sử dụng một bộ phân loại tuyến tính.
Ước lượng tư thế
Ước lượng tư thế (Pose Estimation) là một kỹ thuật học sâu khác được sử dụng để phân loại hành động.
Quy trình ước lượng tư thế bao gồm:
- Phát hiện các điểm chính (tương tự như các điểm mốc trên khuôn mặt)
- Theo dõi các điểm chính này
- Phân loại chuyển động của các điểm chính
Như vậy, có thể tổng quan các thuật toán phân tích video thông qua sơ đồ dưới đây
Ứng dụng các công nghệ hiện đại, thuật toán AI ưu việt, cùng hạ tầng dữ liệu đặc thù quy mô lớn, VinBigData phát triển hệ thống camera thông minh VinCamAI. Hệ thống sở hữu 04 nhóm tính năng chính, bao gồm: Thống kê lưu lượng – Nhận diện khuôn mặt – Nhận diện vật thể – Phân tích đặc điểm và hành vi. Giải pháp có khả năng nhận diện người ngay cả khi đang đeo khẩu trang với độ chính xác trên 90%. Kết quả nhận diện, phân tích và thống kê mà hệ thống đưa ra có thể đạt chính xác tới 99%. Đặc biệt, so với camera truyền thống, VinCamAI hoạt động hiệu quả hơn từ 17-25% và tích hợp dễ dàng trên đa dạng quy mô như nhà máy, bệnh viện, trường học, trung tâm thương mại, cửa hàng tiện ích…
Nhận dạng ký tự quang học (Optical Character Recognition – OCR) là phần mềm có chức năng chuyển đổi hình ảnh chữ viết tay hoặc đánh máy thành các văn bản tài liệu. Công nghệ này hiện được phát triển thành nhiều ứng dụng hữu ích như dịch thuật theo thời gian thực, định danh khách hàng điện tử hay xử lý hóa đơn, chứng từ,…. Ngày nay, OCR có khả năng xử lí trên 200 ngôn ngữ và hứa hẹn sẽ tiếp tục mang lại những bước tiến vượt bậc nhờ Trí tuệ nhân tạo.

Nếu bạn đang tìm hiểu và mong muốn phát triển các phần mềm OCR, hãy tham khảo ngay 11 dự án mã nguồn mở dưới đây. Các dự án này cung cấp cả động cơ, API, trình tạo và các công cụ hỗ trợ.
Tesseract OCR cung cấp một công cụ OCR – libtesseract và chương trình dòng lệnh – tesseract. So với phiên bản Tesseract 3 thì Tesseract 4 bổ sung một công cụ OCR dựa trên mạng thần kinh nhân tạo (LSTM), tập trung vào nhận dạng dòng và các mẫu ký tự. Tesseract hỗ trợ nhiều định dạng đầu ra như văn bản, hOCR (HTML), PDF, TSV, cũng như thử nghiệm đầu ra ALTO (XML).
Tập dữ liệu TẠI ĐÂY.
2, EasyOCR
EasyOCR là một dự án OCR Python nguồn mở cho phép các nhà phát triển thị giác máy tính dễ dàng thực hiện Nhận dạng ký tự quang học, với hơn 80 ngôn ngữ, bao gồm tiếng Trung, Nhật, Hàn, Thái… EasyOCR có thể được cài đặt chỉ bằng một lệnh pip và nhập vào dự án bằng lệnh import. Như vậy, tất cả những gì bạn cần là hai dòng code – một để khởi tạo lớp Reader và sau đó một dòng khác để tiến hành nhận dạng ký tự quang học thông qua chức năng readtext.
3, Swift AI
Swift AI là một thư viện học sâu có hiệu suất cao được viết hoàn toàn bằng Swift. Swift AI hỗ trợ tất cả các nền tảng của Apple, và sắp tới là Linux. Dự án bao gồm các công cụ phổ biến được sử dụng cho trí tuệ nhân tạo và các ứng dụng khoa học như NeuralNet, Convolutional neural network, Recurrent neural network, Genetic Algorithm Library, Fast Linear Algebra Library, Signal Processing Library.
4, SwiftOCR
SwiftOCR là một dự án OCR đơn giản được viết bằng Swift và sử dụng mạng nơ-ron để nhận dạng hình ảnh. Hiện tại, SwiftOCR đã được tối ưu để nhận dạng code ngắn, gồm chữ và số (ví dụ: DI4C9CM). Dự án hỗ trợ iOS và OS X.
5, OCRmyPDF
OCRmyPDF bổ sung các lớp văn bản (text “layers”) vào hình ảnh trong tệp PDF, từ đó giúp người dùng có thể thực hiện thao tác tìm kiếm trên tệp PDF hình ảnh. OCRmyPDF được viết bằng Python và hỗ trợ các plugin cho phép tùy chỉnh quy trình xử lý.
Phát hiện văn bản dựa trên cấu trúc Connectionist Text Proposal Network – CTPN được triển khai bằng tensorflow. Thuật toán CTPN là một mô hình học sâu đầu cuối (end-to-end) có thể đào tạo.
7, PaddleOCR
PaddleOCR nhằm mục đích tạo ra các công cụ OCR giúp người dùng đào tạo mô hình và áp dụng chúng vào thực tế. PaddleOCR hỗ trợ nhận dạng nhiều ngôn ngữ như tiếng Trung, tiếng Anh, Hàn Quốc, Nhật Bản, Đức, Pháp, đồng thời cho phép cài đặt PIP và dễ sử dụng trên các hệ điều hành Linux, Windows, MacOS.
8, Parsr
Parsr là một chuỗi công cụ làm sạch, phân tích cú pháp và trích xuất tài liệu có dung lượng tối thiểu (hình ảnh, pdf, docx, eml). Parsr tạo ra dữ liệu có cấu trúc và có thể sử dụng ở các định dạng JSON, Markdown (MD), CSV / Pandas DF hoặc TXT. Hiện tại, Parsr có thể thực hiện: làm sạch tài liệu, tái tạo hệ thống phân cấp (từ, dòng, đoạn văn), phát hiện tiêu đề, bảng, danh sách, mục lục, số trang, đầu trang / chân trang, liên kết,….
9, EAST
EAST có thể phát hiện văn bản cả trong hình ảnh và video, với độ chính xác cao và gần thời gian thực ở 13FPS trên hình ảnh 720p. Người dùng dễ dàng triển khai EAST trong OpenCV 3.4.2 và OpenCV 4. Công cụ này sử dụng ResNet-50 và hàm dice loss.
10, Open Paperless
Open Paperless cung cấp một nền tảng mạnh mẽ để thực hiện quét hình ảnh theo cách nhanh chóng và thông minh. Công cụ này cũng cho phép sửa đổi, xem tài liệu và lưu trữ trên cả đám mây và máy chủ.
11, VietOCR
Với VietOCR, mô hình Transformer OCR cho phép nhận dạng chữ viết tay và đánh máy tiếng Việt. Dự án này kết hợp giữa mô hình CNN và Transformer. VietOCR có tính tổng quát tốt, độ chính xác khá cao trên một bộ dữ liệu mới mặc dù mô hình chưa được huấn luyện bao giờ.
Được phát triển bởi VinBigData, VinOCR là hệ thống các giải pháp hỗ trợ việc phát hiện, nhận dạng và trích xuất thông tin từ hình ảnh, vật thể, chữ viết tay, giấy tờ, biểu mẫu… với độ chính xác 96% và tốc độ xử lý dưới 0,1 giây. VinOCR có thể ứng dụng trong đa lĩnh vực, giúp số hóa trải nghiệm người dùng, tăng tỉ lệ chuyển đổi, giảm rủi ro cho các doanh nghiệp.
Nhận dạng ký tự quang học là một trong những lĩnh vực đang nổi của trí tuệ nhân tạo (AI). Công nghệ này có thể dễ dàng ứng dụng trong nhiều giải pháp, sản phẩm giúp doanh nghiệp tự động hóa quá trình nhập liệu và lưu trữ hồ sơ giấy tờ, từ đó, hỗ trợ tối ưu hiệu quả vận hành và gia tăng trải nghiệm khách hàng. Vậy cụ thể, OCR là gì và cùng với OCR còn có những công nghệ nào khác? Bài viết dưới đây sẽ đem tới cái nhìn cụ thể, qua những phân tích, so sánh giữa OCR và những công nghệ tương cận.
OCR, ICR, OMR là gì?
OCR (Optical Character Recognition – Nhận dạng ký tự quang học) là một hệ thống cung cấp đầy đủ khả năng nhận dạng chữ và số trên giấy tờ bản in hoặc viết tay thông qua việc quét biểu mẫu.
Chức năng của OCR: Máy quét sẽ quét biểu mẫu chứa hình ảnh ký tự, sau đó công cụ nhận dạng tiến hành đọc hiểu các hình ảnh và chuyển chúng thành dữ liệu ASCII (các ký tự máy có thể đọc được). Như vậy, OCR giúp tự động hóa việc nhập và lưu trữ dữ liệu, đảm bảo độ chính xác cao và tiết kiệm chi phí nhập liệu thủ công.
Cùng với OCR, gần đây, thuật ngữ Nhận dạng ký tự thông minh (Intelligent Character Recognition – ICR) được sử dụng để mô tả quá trình đọc hiểu dữ liệu hình ảnh, cụ thể là văn bản chữ và số. ICR là một mô-đun của OCR, có khả năng biến hình ảnh viết tay hoặc các ký tự in thành dữ liệu ASCII. Trong một số trường hợp, OCR cũng được gọi là ICR.
OMR (Optical Mark Reader – Nhận dạng dấu quang học) là một phương pháp điện tử thu thập dữ liệu do con người xử lý bằng cách xác định một số dấu hiệu nhất định trên tài liệu. Thông thường, quá trình nhận dạng dấu quang học được thực hiện với sự hỗ trợ của máy quét kiểm tra truyền tải hoặc phản xạ ánh sáng qua giấy; những nơi có đánh dấu sẽ phản xạ ít ánh sáng hơn phần giấy trắng, dẫn đến độ tương phản kém hơn. OMR thường được ứng dụng để xử lý dữ liệu từ phiếu điều tra hay chấm các bài thi trắc nghiệm.
So sánh OCR/ICR với OMR
Khác biệt cơ bản giữa OCR/ICR và OMR: ICR và OCR là công cụ nhận dạng trên hình ảnh; trong khi OMR là công nghệ thu thập dữ liệu không yêu cầu một công cụ nhận dạng nào. Do đó, về cơ bản OMR không thể nhận dạng ký tự viết tay hoặc đánh máy.


Dựa trên công nghệ Nhận dạng ký tự quang học, VinOCR là hệ thống các sản phẩm được phát triển bởi VinBigData nhằm hỗ trợ việc nhận dạng, phát hiện và trích xuất thông tin chữ viết từ ảnh chụp của các loại giấy tờ. Hệ thống có thể xử lý các loại giấy tờ theo mẫu, không theo mẫu, bảng biểu và chữ viết tay. Với công nghệ nhận dạng và trích xuất thông tin chính xác đến 96%, tốc độ xử lý dưới 0,1 giây và hỗ trợ 6 loại giấy tờ, VinOCR có thể ứng dụng trong đa lĩnh vực như định danh khách hàng điện tử, mở tài khoản ngân hàng trực tuyến, mở thẻ tín dụng và cho vay trực tuyến,….