DRAFT_Hướng dẫn sử dụng Dori để nhận dạng các Key Information

Trong bài viết này, Mình sẽ hướng dẫn bạn cách sử dụng Dori để nhận dạng và trích xuất các thông tin chính. Ví dụ, nếu bạn cần nhận dạng các thông tin như Họ TênID trên căn cước công dân, thì Họ TênID là những thông tin cần được trích xuất. Để thực hiện điều này, bạn sẽ cần trải qua các bước sau:

  • Phát hiện văn bản
  • Nhận dạng văn bản
  • Xác định thứ tự đọc
  • Trích xuất thông tin chính
Read More

A/B Testing - Lý thuyết cơ bản và cách áp dụng

Tại sao chúng ta cần A/B Testing

Dưới góc nhìn của chúng ta, hầu hết các sự kiện trong cuộc sống đều có tính ngẫu nhiên. Tính ngẫu nhiên này có thể là việc quan sát của chúng ta bị hạn chế, hoặc bản chất của việc đó là ngẫu nhiên. Để rõ hơn phát biểu này, mình sẽ đưa ra 2 ví dụ sau:
Ví dụ đầu tiên để minh họa tính ngẫu nhiên là do việc quan sát của chúng ta bị hạn chế.

  • Giả sử mình muốn tính vị trí sau 3 giây của hòn đá lăn trên một con dốc. Vì hạn chế của việc đo đếm các yếu tố tác động đến hòn đá như độ dốc, lực cản, hình dáng con dốc mà mình chỉ có thể tính toán được vị trí tương đối chính xác của hòn đá mà thôi. Vị trí của hòn đá sau 3 giây có thể nằm ở vị trí xung quanh vị trí mà mình ước lượng. Nếu mình có khả năng đo đếm các yếu tố ảnh hưởng chính xác tuyệt đối thì mình có thể tính toán vị trí chính xác theo các quy tắc vật lý. Do đó, vị trí của hòn đá dưới góc nhìn của một nhà quan sát bình thường có tính ngẫu nhiên.
    Ví dụ tiếp theo là minh họa bản chất của việc đó là ngẫu nhiên.
  • Theo mình được biết thì ở thế giới lượng tử, hành vi của hạt nguyên từ và hạ nguyên tử bị ngự trị bởi sự ngẫu nhiên, sự ngẫu nhiên đến từ bản chất của chúng, chứ không phải là do việc quan sát của chúng ta bị hạn chế như ví dụ ở trên. Nguyên lý tất định Heisenberg mô tả rằng một số thuộc tính vật lý như vị trívận tốc không thể đồng thời mô tả chính xác dẫn đến kết quả quan sát không tất định. Ví dụ như, khi chơi bóng bàn, để có thể chơi trò này, chúng ta cần biết vị trí và tốc độ của quả bóng. Từ đó mới phán đoán được nên hành xử như thế nào tiếp theo. Nếu biết vị trí mà không biết vận tốc thì làm sao mà đánh lại chớ. Cái sự ngẫu nhiên này đến từ bản chất của các hạt. Kì lạ nhỉ. Thế giới vi mô là nền tảng để cấu tạo nên thế giới vĩ mô. Tuy nhiên ở thế giới vi mô, các hạt lại có bản chất ngẫu nhiên, nhưng ngược lại ở thế giới vi mô, hành vi của các vật lại được mô tả tất định theo nguyên tắc vật lý. Cái bản chất ngẫu nhiên lại tạo nên cái tất định(1).
Read More

VietOCR - Nhận Dạng Tiếng Việt Sử Dụng Mô Hình Transformer và AttentionOCR

Giới Thiệu

Trong blog này, mình chia sẻ một số thực nghiệm của 2 mô hình OCR cho bài toán nhận dạng chữ tiếng việt: AttentionOCR và TransformerOCR. AttentionOCR sử dụng kiến trúc attention seq2seq đã được sử dụng khá nhiều trong các bài toán NLP và cả OCR, còn TransformerOCR sử dụng kiến trúc của Transformer đã đạt được nhiều tiến bộ vượt bậc cho cộng đồng NLP. Một câu hỏi mà mình cũng khá quan tâm là Liệu TransformerOCR có mang lại kết quả vượt bậc như những gì các bạn đã nhìn thấy trong các bài toán NLP hay không ?

Đồng thời, mình cũng cung cấp một thư viện mới cho bài toán OCR, thư viện hướng tới kết quả chính xác, nhanh chóng, dễ huấn luyện, dễ dự đoán cho cả các bạn chưa có nhiều kinh nghiệm cũng có thể sử dụng được trong các bài toán liên quan đến số hóa.

Read More

Tìm hiểu mô hình Transformer - Ngươi Không Phải Là Anh Hùng, Ngươi Là Quái Vật Nhiều Đầu.

Trong blog này, mình sẽ trình bày chi tiết cách mô hình Transformer hoạt động, cũng như là cách cài đặt mô hình chi tiết cho những bạn mới có kiến thức cơ bản về deep learning như CNN hoặc LSTM cũng có thể hiểu được.

Sự nổi tiếng của mô hình Transformer thì không cần phải bàn cãi, vì nó chính là nền tảng của rất nhiều mô hình khác mà nổi tiếng nhất là BERT (Bidirectional Encoder Representations from Transformers) một mô hình dùng để học biểu diễn của các từ tốt nhất hiện tại và đã tạo ra một bước ngoặt lớn cho động đồng NLP trong năm 2019. Và chính Google cũng đã áp dụng BERT trong cỗ máy tìm kiếm của họ. Để hiểu BERT, các bạn cần phải nắm rõ về mô hình Transformer.

Ý tưởng chủ đạo của Transformer vẫn là áp dụng cơ thể Attention, những ở mức phức tạp hơn và thật sự là thú vị hơn so với cách được đề xuất trước đó trong một bài báo của tác giả Lương Minh Thắng, một người Việt rất nổi tiếng trong cộng đồng deep learning.

Read More

Data Science là gì. Làm gì để trở thành Data Scientist?

Giới Thiệu

Sau nhiều năm đi làm dưới danh nghĩa là một Data Scientist, mình nhận thấy rằng một bài viết chia sẻ của một người làm trong ngành này sẽ giúp ích cho một số bạn mới ban đầu theo đuổi công việc Data Scientist cho một công ty lớn như FPT, VNG, Tiki sẽ hình dung được một bức ảnh toàn cảnh về công việc khi các bạn bước vào làm. Những chia sẻ này làm những cảm nhận chủ quan nên có thể đúng với người này và cũng có thể sai với những người khác.

Cụ thể hơn trong bài viết này, mình sẽ chia sẻ về sự khác nhau giữa 3 công việc rất gần gũi với nhau như Data Engineer, Data Analytics và Data Scientist khác nhau chỗ nào? Các kiến thức cần có để trở thành Data Scientist, và cuối cùng là các lưu ý và quy tắc khi các bạn bắt đầu một dự án data science cho công ty.

Read More

Huấn luyện mô hình CRNN cho nhận dạng chữ viết tay Tiếng Việt - How to train your dragon.

Giới Thiệu

Nhận dạng chữ tiếng việt là một trong những vấn đề rất quan trọng và có nhiều ứng dụng trong lĩnh vực số hóa văn bản để lưu trữ, tìm kiếm trên các văn bản scan, ảnh. Mô hình Convolutional Recurrent Neural Network là mô hình phổ biến cho kết quả rất khả quan trọng việc nhận dạng chữ in cũng như chữ viết tay.
Trong blog này mình hướng dẫn các bạn huấn luyện một mô hình CRNN cho các bài toán nhận dạng chữ Tiếng Việt bằng mã nguồn mình cung cấp sẵn tại đây. Đồng thời, mình cũng cung cấp bộ dataset tự phát sinh gồm 4m ảnh và mô hình đã được huấn luyện sẵn trên tập dataset này. Mô hình này đạt kết quả khá tốt, và được mình sử dụng trong một số dự án thực tế.

Read More

Tìm Hiểu Convolutional Neural Networks Cho Phân Loại Ảnh

Giới Thiệu

Convolutional Neural Networks (CNN) là một trong những mô hình deep learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer Vision. CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên,và hầu hết đều giải quyết tốt các bài toán này.

CNN cũng có lịch sử khá lâu đời. Kiến trúc gốc của mô hình CNN được giới thiệu bởi một nhà khoa học máy tính người Nhật vào năm 1980. Sau đó, năm 1998, Yan LeCun lần đầu huấn luyện mô hình CNN với thuật toán backpropagation cho bài toán nhận dạng chữ viết tay. Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính người Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây dựng mô hình CNN (AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets để đạt được top 1 trong cuộc thi Computer Vision thường niên ImageNet với độ lỗi phân lớp top 5 giảm hơn 10% so với những mô hình truyền thống trước đó, đã tạo nên làn sóng mãnh mẽ sử dụng deep CNN với sự hỗ trợ của GPU để giải quyết càng nhiều các vấn đề trong Computer Vision.

Read More

Tìm Hiểu và Áp Dụng Cơ Chế Attention - Understanding Attention Mechanism

Giới thiệu

Theo thông lệ mình sẽ giới thiệu sơ qua cơ chế attention là gì, lịch sử, những cột mốc từ khi attention được ứng dụng. Tuy nhiên, do mình thấy rằng một số bạn nghĩ rằng cơ chế attention khá phức tạp nên trước hết mình muốn nhấn mạnh rằng: Cơ chế attention chỉ đơn giản là trung bình có trọng số của những “thứ” mà chúng ta nghĩ nó cần thiết cho bài toán, điều đặc biệt là trọng số này do mô hình tự học được. Cụ thể, trong bài toán dịch máy ở ví dụ dưới, khi sử dụng cơ chế attention để phát sinh từ little, mình sẽ cần tính một vector context C là trung bình có trọng số của vector biểu diễn các từ mặt, trời, bé, nhỏ tương ứng với vector \(h_{1}, h_{2}, h_{3}, h_{4}\) rồi sử dụng thêm vector context \(c\) này tại lúc dự đoán từ little, và nhớ rằng, trọng số này là các số scalar, được mô hình tự học. Các bạn đã thấy cơ chế attention thật đơn giản rồi nhỉ. Vậy chúng ta hãy bắt đầu đi vào chi tiết.

Read More

Tìm Hiểu Mô Hình YOLO Cho Bài Toán Object Detection - Understanding YOLO

Giới thiệu

You only look once (YOLO) là một mô hình CNN để detect object mà một ưu điểm nổi trội là nhanh hơn nhiều so với những mô hình cũ. Thậm chí có thể chạy tốt trên những IOT device như raspberry pi. Trong phần này, mình sẽ giới thiêu chi tiết YOLO v1, về sau chúng ta còn có YOLO v2,v3, chạy nhanh hơn nhưng phức tạp hơn và khó cài đặt. Hiểu được YOLO v1 sẽ giúp các bạn dễ dàng cài đặt những phiên bản sau. Đồng thời, mình cũng cung cấp source code cùng với bộ dữ liệu mẫu gồm 25k ảnh để huấn luyện một mô hình YOLO đơn giản.

Read More

Nhận Dạng Chữ Tiếng Việt - Vietnamese OCR

Giới thiệu

Nhận dạng chữ viết tay là một trong những bài toán rất thú vị, với đầu vào là một ảnh chứa chữ và đầu ra là chữ chứa trong ảnh đó. Bài toán này tương đối khó đối với chữ viết tay, cộng với viết bộ dữ liệu việt nam tương đối hiếm có. Lần này, mình sẽ chia sẽ hướng tiếp cận mà team mình đã sử dụng trong cuộc thi do Cinnamon tổ chức, nhờ những cách sử lý hợp lý mà team mình đã đạt đượt top 1 trong phase 1 của cuộc thi này. Nhưng mà cuộc thì này tổ chức cũng dài hơi, làm những thí sinh hơi nản. (tầm 2 tháng với phần thi + bootcamp). Sơ qua về một chút ứng dụng của OCR. Mình thấy có 2 ứng dụng khá nổi tiếng là Google Translate, với GotIt của Hùng Trần.

Read More