Trang chủ » Computer Vision là gì? Mọi thứ về thị giác máy tính bạn cần biết

Computer Vision là gì? Mọi thứ về thị giác máy tính bạn cần biết

Computer Vision hay còn gọi là Thị giác máy tính là lĩnh vực khoa học máy tính tập trung vào việc tái tạo các phần phức tạp của hệ thống thị giác con người và cho phép máy tính xác định và xử lý các đối tượng trong hình ảnh và video giống như cách con người làm.

Một trong những yếu tố thúc đẩy sự phát triển của thị giác máy tính là lượng dữ liệu chúng ta tạo ra ngày nay được sử dụng để đào tạo và làm cho thị giác máy tính tốt hơn.

Cùng với lượng dữ liệu trực quan khổng lồ (hơn 3 tỷ hình ảnh được chia sẻ trực tuyến mỗi ngày), lĩnh vực thị giác máy tính phát triển với phần cứng và thuật toán mới, tỷ lệ chính xác để nhận dạng đối tượng cũng tăng theo. Trong vòng chưa đầy một thập kỷ, các hệ thống ngày nay đã đạt đến độ chính xác 99% từ 50% và chính xác hơn con người khi phản ứng nhanh với đầu vào trực quan.

Các thí nghiệm ban đầu về thị giác máy tính bắt đầu vào những năm 1950 và nó lần đầu tiên được đưa vào sử dụng thương mại để phân biệt giữa văn bản đánh máy và viết tay vào những năm 1970, ngày nay các ứng dụng cho thị giác máy tính đã phát triển theo cấp số nhân.

Thị giác máy tính hoạt động như thế nào?

Một trong những câu hỏi thường được đặt ra trong cả Khoa học thần kinh và Học máy là: Bộ não của chúng ta hoạt động chính xác như thế nào và làm thế nào chúng ta có thể ước tính điều đó bằng các thuật toán của riêng mình? Thực tế là có rất ít lý thuyết toàn diện về tính toán của não; vì vậy, mặc dù thực tế là Mạng thần kinh nhân tạo được cho là “bắt chước cách thức hoạt động của não”, nhưng không ai dám chắc điều đó có thực sự đúng hay không.

Nghịch lý tương tự cũng đúng với thị giác máy tính – vì chúng ta không quyết định cách não và mắt xử lý hình ảnh, nên rất khó để nói các thuật toán được sử dụng trong sản xuất gần đúng với các quá trình tinh thần bên trong của chúng ta như thế nào.

Ở một mức độ nhất định, Thị giác máy tính là thuộc về nhận dạng mẫu. Vì vậy, một cách để “huấn luyện” máy tính hiểu dữ liệu trực quan là cung cấp cho nó hàng nghìn, hàng triệu hình ảnh nếu có thể đã được “đánh dấu” và sau đó áp dụng các kỹ thuật phần mềm hoặc thuật toán khác nhau cho phép máy tính tìm kiếm trong tất cả các phần tử có liên quan đến các mẫu được đánh dấu đó. Đây là lúc các kĩ thuật AI, cụ thể là machine learning hay deep learning được áp dụng để phân loại đối tượng.  Để làm được điều này, trước đó mô hình (model) AI đã được cho học ảnh mẫu, thế nào là người, thế nào là xe hơi, thế nào là con mèo… Khi gặp một ảnh mới cần dự đoán, nó sẽ lấy những gì từng được học ra để đoán.

Ví dụ: Nếu bạn cho máy tính nhận biết một triệu hình ảnh con mèo, tất cả chúng sẽ phải tuân theo các thuật toán cho phép chúng phân tích màu sắc trong ảnh, hình dạng, khoảng cách giữa các hình… để nó xác định một hồ sơ về “mèo” có nghĩa là gì. Khi quá trình hoàn tất, máy tính (về lý thuyết) sẽ có thể sử dụng trải nghiệm của mình nếu được cung cấp các hình ảnh không được gắn nhãn khác để tìm những hình ảnh của mèo.

Dưới đây là một minh họa đơn giản về bộ đệm hình ảnh thang độ xám lưu trữ hình ảnh. Độ sáng của mỗi pixel được biểu thị bằng một số 8 bit, có phạm vi từ 0 (đen) đến 255 (trắng):

Bộ đệm hình ảnh thang độ xám lưu trữ hình ảnh

Trên thực tế, các giá trị pixel hầu như được lưu trữ phổ biến, ở cấp độ phần cứng, trong một mảng một chiều. Ví dụ: dữ liệu từ hình ảnh trên được lưu trữ theo cách tương tự như danh sách dài các ký tự không dấu này:

Bây giờ bạn hãy tưởng tượng bức tranh trên có màu. Mọi thứ bắt đầu trở nên phức tạp hơn. Máy tính thường đọc màu dưới dạng một chuỗi 3 giá trị – đỏ, lục và lam (RGB) – trên cùng một thang 0–255. Bây giờ, mỗi pixel thực sự có 3 giá trị để máy tính lưu trữ ngoài vị trí của nó. Nếu chúng ta tô màu cho bức tranh đó sẽ dẫn đến giá trị 12 x 16 x 3 hoặc 576 số.

Đó là yêu cầu rất nhiều bộ nhớ cho một hình ảnh và rất nhiều pixel để một thuật toán lặp lại. Tuy nhiên, để đào tạo một mô hình với độ chính xác có ý nghĩa, đặc biệt là khi bạn đang nói về Học sâu, bạn thường cần hàng chục nghìn hình ảnh và càng nhiều hình ảnh càng tốt.

Sự phát triển của thị giác máy tính

Trước khi Học sâu ra đời, các tác vụ mà thị giác máy tính có thể thực hiện rất hạn chế và đòi hỏi nhiều nỗ lực và mã hóa thủ công của các nhà phát triển và người vận hành. Ví dụ: nếu bạn muốn thực hiện nhận dạng khuôn mặt, bạn sẽ phải thực hiện các bước sau:

  • Tạo cơ sở dữ liệu

Bạn phải chụp từng ảnh của tất cả các đối tượng bạn muốn theo dõi ở một định dạng cụ thể.

  • Chú thích hình ảnh

Sau đó, đối với mỗi hình ảnh riêng lẻ, bạn sẽ phải nhập một số điểm dữ liệu chính, chẳng hạn như khoảng cách giữa hai mắt, chiều rộng của sống mũi, khoảng cách giữa môi trên và mũi và hàng chục phép đo khác xác định các đặc điểm riêng biệt của mỗi người.

  • Chụp ảnh mới

Tiếp theo, bạn sẽ phải chụp ảnh mới, kể cả ảnh hay nội dung video. Và sau đó bạn phải thực hiện lại quá trình đo lường, đánh dấu các điểm chính trên hình ảnh. Bạn cũng phải tính đến góc ảnh được chụp.

Sau tất cả công việc thủ công này, ứng dụng cuối cùng sẽ có thể so sánh các phép đo trong hình ảnh mới với các phép đo được lưu trữ trong cơ sở dữ liệu của nó và cho bạn biết liệu nó có tương ứng với bất kỳ cấu hình nào mà nó đang theo dõi hay không. Trên thực tế, hầu hết công việc được thực hiện thủ công và biên độ lỗi vẫn còn lớn.

Học máy cung cấp một cách tiếp cận khác để giải quyết các vấn đề về thị giác máy tính. Với Học máy, các nhà phát triển không còn cần phải viết mã thủ công từng quy tắc vào các ứng dụng thị giác của họ. Thay vào đó, họ lập trình “các tính năng”, các ứng dụng nhỏ hơn có thể phát hiện các mẫu cụ thể trong hình ảnh. Sau đó, họ sử dụng một thuật toán học thống kê như hồi quy tuyến tính, hồi quy logistic, hoặc máy vectơ hỗ trợ (SVM) để phát hiện các mẫu, phân loại hình ảnh và phát hiện các đối tượng trong đó.

Học sâu cung cấp một cách tiếp cận cơ bản khác để thực hiện học máy. Học sâu dựa trên mạng nơ-ron, một chức năng có mục đích chung có thể giải quyết bất kỳ vấn đề nào có thể biểu diễn thông qua các ví dụ. Khi bạn cung cấp một mạng nơ-ron có nhiều ví dụ được gắn nhãn về một loại dữ liệu cụ thể, nó sẽ có thể trích xuất các mẫu chung giữa các ví dụ đó và biến đổi nó thành một phương trình toán học giúp phân loại các phần thông tin trong tương lai.

Ví dụ: việc tạo một ứng dụng nhận dạng khuôn mặt với học sâu chỉ yêu cầu bạn phát triển hoặc chọn một thuật toán được cấu trúc sẵn và đào tạo nó với các ví dụ về khuôn mặt của những người mà nó phải phát hiện.

Học sâu là một phương pháp rất hiệu quả để thực hiện thị giác máy tính. Trong hầu hết các trường hợp, việc tạo ra một thuật toán học sâu giúp thu thập một lượng lớn dữ liệu đào tạo được gắn nhãn và điều chỉnh các tham số như loại và số lớp của mạng nơ-ron… So với các loại học máy trước đây, học sâu dễ phát triển và triển khai hơn.

Hiện nay, thị giác máy tính được ứng dụng triển khai trong phát hiện ung thư, ô tô tự lái và nhận dạng khuôn mặt đều sử dụng học sâu. Học sâu và mạng nơ-ron sâu đã chuyển từ lĩnh vực khái niệm sang các ứng dụng thực tế nhờ tính khả dụng và những tiến bộ trong tài nguyên phần cứng và điện toán đám mây.

Bạn có thể tham khảo một ứng dụng NEXCOM giới thiệu tại đây.

Ứng dụng của Thị giác máy tính

  • Nhận dạng khuôn mặt trong các smartphone

Apple sử dụng thuật toán nhận dạng khuôn mặt để mở khóa iPhone. Facebook sử dụng tính năng nhận dạng khuôn mặt để phát hiện người dùng trong các bức ảnh bạn đăng trực tuyến.

  • Nhận dạng biển số xe ở bãi đỗ xe
  • Kiểm tra các sản phẩm lỗi trong sản xuất
  • Hỗ trợ bác sĩ trong chuẩn đoán và điều trị
  • …vv

Nếu để ý bạn sẽ thấy vô vàn ứng dụng bạn sử dụng hàng ngày sử dụng công nghệ thị giác máy tính.

Người mua hàng bước vào, quét ứng dụng Amazon trên một cửa quay và mua sản phẩm mà không phải chờ đợi trong hàng thanh toán

Kết luận

Nhờ những tiến bộ trong trí tuệ nhân tạo và những đổi mới trong học sâu và mạng nơ-ron, Thị giá máy tính đã có thể có những bước tiến nhảy vọt trong những năm gần đây và có thể vượt qua con người trong một số nhiệm vụ liên quan đến phát hiện và ghi nhận đối tượng.

Chia sẻ: