Công nghệ thị giác máy tính (Computer Vision) sử dụng các thuật toán để máy tính có khả năng mô phỏng tầm nhìn của con người, bao gồm việc chụp ảnh ban đầu, phát hiện và nhận dạng đối tượng, nhận biết bối cảnh tạm thời giữa các cảnh và phát triển sự hiểu biết ở mức độ cao về những gì đang xảy ra trong khoảng thời gian thích hợp. Tuy nhiên, một thách thức đặt ra cho máy tính khi phải xử lý với các đối tượng nhỏ hoặc rất nhỏ, vì chúng thường có kích thước và chất lượng thấp, khiến máy khó có thể xác định chính xác đặc trưng nhận dạng để chỉ rõ chúng là gì.
Bài viết dưới đây gợi ý phương thức sử dụng Mô hình mạng tính năng thiết kế dạng kim tự tháp mở rộng (Extended Feature Pyramid Network – EFPN) để phát hiện các vật thể nhỏ.
Kiến trúc của mô hình EFPN
Như thể hiện trong hình trên, kiến trúc của EFPN có 1 số đặc trưng như sau:
- EFPN bao hàm một lớp phát hiện (P2’)
- EFPN sử dụng mô-đun FTT để truyền những đặc trưng từ P2 và P3 đến P2’. Khác với những tầng trước đó chỉ sử dụng bản đồ đặc trưng ở tầng thấp hơn và liền kề để tăng kích thước, mô-đun FTT xử lí hai bản đồ đặc trưng P2 và P3 để tạo ra P3′, sau đó được sử dụng cho lớp phát hiện mới P2′.
- EFPN có thể đưa ra dự đoán ở 5 mức độ khác nhau.
Mô-đun FTT
Trong mô-đun FTT, bước đầu tiên sử dụng kỹ thuật trích xuất nội dung để trích xuất các đặc trưng ngữ nghĩa từ P3 (bước chính). Sau đó, một lớp tích chập điểm ảnh phụ được áp dụng để cải thiện đầu ra của kỹ thuật trích xuất nội dung. Tiếp theo, thông tin mới nhất được liên kết với bản đồ đặc trưng P2 (tham khảo) để tạo thành đầu vào cho công cụ trích xuất đặc thù, với kết cấu được thiết kế dành riêng cho các vật thể nhỏ. Cuối cùng, thiết lập một kết nối dư để kết hợp đặc trưng và tạo thành bản đồ đặc trưng đầu ra P3′. Áp dụng phương thức này, P3′ truyền trọn vẹn các đặc trưng được chọn lọc từ bản đồ đặc trưng nông P2 và nhận ngữ nghĩa từ lớp sâu hơn P3.
Foreground-background-balanced Loss
Foreground-background-balanced loss là hàm mất mát đa tiêu – hàm loss, bao gồm: Foreground (chứa vật thể) và Background (nền và không chứa vật thể). Các nhà nghiên cứu đã chỉ ra rằng sự mất cân bằng dữ liệu giữa các nhóm foreground-background là nguyên nhân chính dẫn tới sự kém hiệu quả trong việc phát hiện vật thể.
Các phương pháp cổ điển thường cải thiện hiệu suất phát hiện đối tượng bằng cách sử dụng ảnh đầu vào có độ phân giải cao. Khởi điểm từ nền tảng cơ bản này, các nhà nghiên cứu đã đề xuất một cơ chế đào tạo mới mang tên là Cross Resolution Distillation.
Ở đây chúng ta sử dụng mô hình để kiểm tra với đầu vào 2x (độ phân giải gấp đôi đầu vào bình thường) sau đó sử dụng đầu ra của 4 lớp trên cùng của hệ thống làm mục tiêu đào tạo. Ví dụ: P5 của đầu vào 2x có độ phân giải gấp đôi so với P5 của đầu vào ban đầu (đầu vào 1x) và có cùng độ phân giải với P4 của đầu vào ban đầu (đầu vào 1x), như được minh họa trong hình trên. Do đó, P3 và P2 của đầu vào 2x sẽ được sử dụng làm mục tiêu để đào tạo P3′ và P2′ của đầu vào ban đầu (đầu vào 1x), tương ứng.
Đào tạo mô hình EFPN bằng cách sử dụng hàm loss như sau:
Trong đó L_fbb là Foreground-background-balanced loss được đề xuất. Hàm mất mát đa tiêu bao gồm hai phần: mất mát tái tạo toàn cục L_glob và mất mát bản vá tích cực L_pos.
Trong đó P_pos thể hiện tọa độ bản đồ đối tượng (x,y) và N mô tả số lượng pixel dương. Thông tin chi tiết về các hàm được trình bày trong bài báo khoa học của Cornell University.
Hiệu quả của EFPN
So với các phương pháp hiện đại khác, các tác giả đã thử nghiệm EFPN trên tập dữ liệu biển báo giao thông nhỏ 100K trên Tsinghua-Tencent và tập dữ liệu đối tượng nhỏ của MS COCO, đã nhận được những dấu hiệu tích cực hơn với độ chính xác cao hơn.
Phát hiện vật thể là một trong những tính năng vượt trội được VinBigData tập trung phát triển trong hệ thống Camera AI giám sát thông minh – VinCamAI. VinCamAI có thể ứng dụng trên quy mô lớn, đáp ứng đa dạng nhu cầu, và phù hợp với nhiều quy mô doanh nghiệp, với độ chính xác tới 99%. Tìm hiểu thêm về VinCamAI: Tại đây |
Nguồn tham khảo: Towards Data Science
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.