Trí tuệ nhân tạo

Một phần của tài liệu 1622190092-baocaodoan5-duongquockhanh-hoangngocphuong (Trang 25)

1.5.1 Khái niệm cơ bản

 Trí tuệ nhân tạo

Trí tuệ nhân tạo hay trí thơng minh nhân tạo (Artificial intelligence – viết tắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer science). Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy tính có thể tự động hóa các hành vi thơng minh như con người.

Trí tuệ nhân tạo khác với việc lập trình logic trong các ngơn ngữ lập trình là ở việc ứng dụng các hệ thống học máy (machine learning) để mơ phỏng trí tuệ của con người trong các xử lý mà con người làm tốt hơn máy tính.

Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngơn ngữ, tiếng nói, biết học và tự thích nghi, …

Trong đó thị giác máy tính được xem là một trong những lĩnh vực thuộc trí tuệ nhân tạo (AI) và mang lại những ứng dụng hiện đại tuyệt vời.

 Thị giác máy tính

Thị giác máy tính là một hình thức công nghệ dùng để mô tả khả năng của bộ máy có thể thu nhận và phân tích các dữ liệu trực quan và sau đó sẽ tiến hành đưa ra các quyết định về nó. Nói cho dễ hiểu đây là một cơng nghệ thuộc lĩnh vực trí tuệ nhân tạo và khoa học máy tính, thiết lập cho máy có tầm nhìn và xử lý nhận dạng như con người.

Hiện nay cơng nghệ này đã có được một số ứng dụng nhất định, trên cấp độ người dùng, nó đã được ứng dụng vào máy bay không người lái điều khiển để tránh các chướng ngại vật, áp dụng tương tự trên các chiếc xe hơi từ Tesla và Volvo.

Thị giác máy tính (computer vision) đề cập đến tồn bộ q trình mơ phỏng tầm nhìn của con người trong một bộ máy phi sinh học. Điều này 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.

Cơng nghệ này từ lâu đã trở nên phổ biến trong khoa học viễn tưởng, và vì thế, chúng thường được thừa nhận như một điều điều hiển nhiên. Trong thực tế, một hệ thống cung cấp khả năng thị giác máy tính đáng tin cậy, chính xác và trong thời gian thực là một vấn đề đầy thách thức vẫn chưa được phát triển một cách đầy đủ.

Khi các hệ thống này trưởng thành, sẽ có vơ số ứng dụng dựa vào thị giác máy tính như một thành phần chính. Những ví dụ điển hình đó là xe hơi tự lái, robot tự động, máy bay không người lái, thiết bị hình ảnh y tế thơng minh hỗ trợ phẫu thuật và cấy ghép phẫu thuật phục hồi thị lực của con người.

Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này. Hai nhiệm vụ cơ bản của quá trình xử lý

ảnh là nâng cao chất lượng thơng tin hình ảnh và xử lý số liệu cung cấp cho các q trình khác trong đó có việc ứng dụng thị giác vào điều khiển.

Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhậnảnh dạng số hoặc tương tự) gửi đến máy tính. Dữ liệu ảnh được lưu trữ ở định dạng phù hợp với quá trình xử lý. Người lập trình sẽ tác động các thuật tốn tương ứng lên dữ liệu ảnh nhằm thay đổi cấu trúc ảnh phù hơp với các ứng dụng khác nhau.

Quá trình xử lý nhận dạng ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một q trình xử lý ảnh có thể là một ảnh “đã được xử lý” hoặc một kết luận.

Hình 1.25: Quá trình xử lý ảnh1.5.1 Các quá trình xử lý ảnh 1.5.1 Các quá trình xử lý ảnh

Hình 1.26: Các giai đoạn chính trong xử lý ảnh

Thu nhận ảnh: Đây là công đoạn đầu tiên mang tính quyết định đối với q trình XLA. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor, máy scanner,v.v… và sau đó các tín hiệu này sẽ được số hóa. Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các thông số quan trọng ở bước này là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị. Tiền xử lý: Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử bóng, khử độ lệch,v.v… với mục đích làm cho chất lượng ảnh trở lên tốt hơn nữa, chuẩn bị cho các bước xử lý phức tạp hơn về sau trong quá trình XLA. Quá trình này thường được thực hiện bởi các bộ lọc.

Phân đoạn ảnh: phân đoạn ảnh là bước then chốt trong XLA. Giai đoạn này phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên hay các vùng liên thông. Tiêu chuẩn để xác định các vùng liên thơng có thể là cùng màu, cùng mức xám v.v… Mục đích của phân đoạn ảnh là để có một miêu tả tổng hợp về nhiều phần tử khác nhau cấu tạo lên ảnh thơ. Vì lượng thơng tin chứa trong ảnh rất lớn, trong khi đa số các ứng dụng chúng ta chỉ cần trích một vài đặc trưng nào đó, do vậy cần có một q trình để giảm lượng thơng tin khổng lồ đó. Q trình này bao gồm phân vùng ảnh và trích chọn đặc tính chủ yếu.

Tách các đặc tính: Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh thơ, trong đó hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh thuộc về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyển đổi dữ liệu thơ này thành một dạng thích hợp hơn cho việc xử lý trong máy tính là rất cần thiết. Để chuyển đổi chúng, câu hỏi đầu tiên cần phải trả lời là nên biểu diễn một vùng ảnh dưới dạng biên hay dưới dạng một vùng hoàn chỉnh gồm tất cả những điểm ảnh thuộc về nó. Biểu diễn dạng biên cho một vùng phù hợp với những ứng dụng chỉ quan tâm chủ yếu đến các đặc trưng hình dạng bên ngồi của đối tượng, ví dụ như các góc cạnh và điểm uốn trên biên chẳng hạn. Biểu diễn dạng vùng lại thích hợp cho những ứng dụng khai thác các tính chất bên trong của đối tượng, ví dụ như vân ảnh hoặc cấu trúc xương của nó. Sự chọn lựa cách biểu diễn thích hợp cho một vùng ảnh chỉ mới là một phần trong việc chuyển đổi dữ liệu ảnh thơ sang một dạng thích hợp hơn cho các xử lý về sau. Chúng ta còn phải đưa ra một phương pháp mơ tả dữ liệu đã được chuyển đổi đó sao cho những tính chất cần quan tâm đến sẽ được làm nổi bật lên, thuận tiện cho việc xử lý chúng.

Nhận dạng và giải thích: Đây là bước cuối cùng trong q trình XLA. Nhận dạng ảnh có thể được nhìn nhận một cách đơn giản là việc gán nhãn cho các đối tượng trong ảnh. Ví dụ đối với nhận dạng chữ viết, các đối tượng trong ảnh cần nhận dạng là các mẫu chữ, ta cần tách riêng các mẫu chữ đó ra và tìm cách gán đúng các ký tự của bảng chữ cái tương ứng cho các mẫu chữ thu được trong ảnh. Giải thích là cơng đoạn gán nghĩa cho một tập các đối tượng đã được nhận biết.

Chúng ta cũng có thể thấy rằng, khơng phải bất kỳ một ứng dụng XLA nào cũng bắt buộc phải tuân theo tất cả các bước xử lý đã nêu ở trên, ví dụ như các ứng dụng chỉnh sửa ảnh nghệ thuật chỉ dừng lại ở bước tiền xử lý. Một cách tổng quát thì những chức năng xử lý bao gồm cả nhận dạng và giải thích thường chỉ có mặt trong hệ thống phân tích ảnh tự động hoặc bán tự động, được dùng để rút trích ra những thơng tin quan trọng từ ảnh, ví dụ như các ứng dụng nhận dạng ký tự quang học, nhận dạng chữ viết tay v.v…

 Các bài toàn trong xử lý ảnh

Trong Computer Vision và xử lý ảnh chúng ta thường đề cập đến 2 bài toán là Image

Classification và Image Detection và bài toán Image Segmentation. Có thể hiệu đơn giản

về sự khác nhau giữa 3 bài tốn này thơng qua hình sau:

Đối với bài tốn classification thì chúng ta quan tâm đến sự xuất hiện của các vật thể trong hình ảnh. Đối với bài tốn detection chúng ta xác định vị trí của đối tượng trong hình ảnh sau đó vẽ 1 boundary box xung quanh đối tượng. Cịn đối với bài tốn segmentation chúng ta cần phải xác định class cho mỗi pixel trong bức ảnh.

Kĩ thuật chung khi ta xây dựng mạng cho bài toán này là ta sẽ xây dựng mạng gồm 2 thành phần encoder và decoder

Trong đó phần encoder dùng để giảm chiều dài và chiều rộng của ảnh bằng việc sử dụng các lớp convolutions và các lớp poolings. Trong đó phần decoder dùng để phục hồi lại kích thước ban đầu của ảnh. Phần encoder thường chỉ là một mạng CNN thông thường nhưng bỏ đi những layer fully conected cuối cùng. Chúng ta có thể sử dụng những mạng có sẵn trong phần encoder như VGG16, VGG19, Alexnet,... Còn decoder tùy vào các kiến trúc mạng mà ta có thể xây dựng khác nhau.

1.5.2 Tổng quan về mạng nơ-ron

Mạng nơ - ron nhân tạo (Artificial Neural Network - ANN) giống như bộ não con người, được học bởi kinh nghiệm (thơng qua huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đốn các dữ liệu chưa biết.

Các ứng dụng của mạng nơ - ron được sử dụng trong rất nhiều lĩnh vực như điện, điện tử, kinh tế, quân sự,… để giải quyết các bài tốn có độ phức tạp và địi hỏi có độ chính xác cao như điều khiển tự động, khai phá dữ liệu, nhận dạng,…

1.5.2.1 Kiến trúc tổng quát của một mạng nơ –ron

Processing Elements (PE): Các PE của ANN gọi là nơ -ron, mỗi nơ - ron nhận các dữ liệu vào xử lý chúng và cho ra một kết quả duy nhất. Kết quả xử lý của một nơ - ron có thể làm đầu vào cho các nơ -ron khác.

Kiến trúc chung của một ANN gồm 3 thành phần đó là lớp đầu vào (Input Layer), Lớp ẩn (Hidden Layer) và lớp đầu ra (OutputLayer). Trong đó, lớp ẩn gồm các nơ - ron, nhận dữ liệu đầu vào từ các nơ - ron ở lớp trước đó và chuyển đổi các đầu vào này cho các lớp xử lý tiếp theo. Trong một ANN có thể có nhiều lớp ẩn.

1.5.2.2 Q trình học của mạng nơ –ron

Có hai vấn đề cần học đối với mỗi mạng nơ - ron nhân tạo đó là học tham số và học cấu trúc.

Học tham số là việc thay đổi trọng số của các liên kết giữa các nơ - ron trong một mạng, còn học cấu trúc là việc điều chỉnh cấu trúc của mạng bao gồm thay đổi số lớp nơ - ron, số nơ - ron của mỗi lớp và cách liên kết giữa chúng. Hai vấn đề này có thể được thực hiện đồng thời hoặc tách biệt.

1.5.3 Kiến trúc mạng Unet

Unet[2] là một kiến trúc được phát triển bởi Olaf Ronneberger và các cộng sự phát triển nhằm phân vùng các cấu trúc nơ ron thần kinh trong não người. Kiến trúc này lần đầu áp dụng đã dành được chiến thắng trong cuộc thi EM segmentation challenge at ISBI 2012.

Trong kiến trúc mạng Unet ta xây dựng phần encoder gần như đối xứng với phần decoder.

 Kiến trúc mạng Unet

Hình 1.29: Kiến trúc mạng Unet

Mỗi một thanh chữ nhật màu xanh là một feature map đa kênh. Kích thước width x height được kí hiệu góc trái bên dưới của thanh chữ nhật và số lượng channels được kí hiệu trên đỉnh của feature map. Các thanh chữ nhật màu trắng bên nhánh phải của hình chữ U được copy từ nhánh bên trái và concatenate vào nhánh bên phải. Mỗi một mũi tên có màu sắc khác nhau tương ứng với một phép biến đổi khác nhau như chúng ta có thể thấy trong mô tả của mạng.

Mạng Unet bao gồm 2 nhánh đối xứng nhau hình chữ U nên được gọi là Unet.

Kiến trúc mạng Unet bao gồm 2 phần là phần thu hẹp (contraction) ở bên trái và phần

mở rộng (expansion) ở bên phải. Mỗi phần sẽ thực hiện một nhiệm vụ riêng như sau:

 Phần thu hẹp: Làm nhiệm vụ trích lọc đặc trưng để tìm ra bối cảnh của hình ảnh. Vai trị của phần thu hẹp tương tự như một Encoder. Một mạng Deep CNN sẽ đóng vai trị trích lọc đặc trưng. Lý do nhánh được gọi là thu hẹp vì kích thước dài và rộng của các layers giảm dần. Từ input kích thước 572x572 chỉ cịn 32x32. Đồng thời độ sâu cũng tăng dần từ 3 lên 512.

 Phần mở rộng: Gồm các layer đối xứng tương ứng với các layer của nhánh thu hẹp. Quá trình Upsampling được áp dụng giúp cho kích thước layer tăng dần lên. Sau cùng ta thu được một ảnh mask đánh dấu nhãn dự báo của từng pixel.

Đặc trưng riêng trong cấu trúc của Unet đó là áp dụng kết nối tắt đối xứng giữa layer bên trái với layer bên phải.

Chương 2 XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ ẢNH TÍCH HỢP TRÍ TUỆ NHÂN TẠO

2.1 Tổng quan

Cơng nghệ xử lý hình ảnh có tiềm năng lớn trong việc áp dụng rộng rãi trong các ngành công nghiệp khác nhau. Để chứng minh rằng công nghệ này đang tồn tại khắp thế giới, chúng ta hãy xem xét các số liệu thống kê gần đây. Các nhà nghiên cứu dự đoán rằng thị trường tồn cầu của cơng nghệ xử lý hình ảnh sẽ đạt 38,92 tỷ USD vào năm 2021. Đó là một con số rất lớn! Vì vậy, khơng có thắc mắc rằng ngày càng nhiều cái gọi là ứng dụng tận dụng xử lý hình ảnh cho các mục đích khác nhau và trong cả kinh doanh.

Điều gì giúp mở rộng cơng nghệ xử lý hình ảnh ngày nay? Đó là các cơng cụ mã nguồn mở giúp lập trình dễ dàng hơn, trong khi tính tốn giá cả phải chăng hơn. Các khung công tác và thư viện nguồn mở ngày nay làm cho các cơng ty có thể hưởng lợi từ cơng nghệ nhận dạng hình ảnh theo cấp số nhân.

2.2 Mục tiêu

Chương trình xử lý hình ảnh tích hợp trí tuệ nhân tạo được xây dựng với các mục tiêu chính như sau:

 Tạo ra chương trình xử lý ảnh với các chức năng như: Làm sắc nét, làm mịn, tăng giảm độ sáng, tăng tương phản, âm bản, …

 Tích hợp trí tuệ nhân tạo vào chương trình với chức năng: tìm kiếm vật thể chính, xóa phơng

2.3 Cơng cụ hỗ trợ 2.3.1 Ngơn ngữ lập trình

Trong phạm vi đồ án này, chúng em sử dụng ngơn ngữ lập trình Python phiên bản 3.7.

2.3.2 Các thư viện hỗ trợ:

Chương 3 Opencv (Open Computer Vision): là một thư viện mã nguồn mở hàng

đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh. OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính tốn rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực. Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, IOS.

Ở trong phạm vi đồ án này, chúng em sử dụng các hàm ở trong thư viện OpenCV để hỗ trợ việc đọc, ghi hình ảnh từ bộ nhớ, xử lý ảnh nhanh hơn, dễ dàng tiếp cận hơn.

Numpy: là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc

tính tốn các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng lên các mảng nhiều chiều đó.

Vì ảnh là ma trận (mảng) của tập hợp các điểm ảnh nên việc xử lý ảnh là thực hiện các tính tốn ở trên ma trận. Thơng thường thì việc tính tốn ở trên ma trận bắt buộc phải duyệt đến từng phần tử của ma trận đó, với mỗi tấm ảnh khoảng 1 megapixel thì số

Một phần của tài liệu 1622190092-baocaodoan5-duongquockhanh-hoangngocphuong (Trang 25)

Tải bản đầy đủ (DOC)

(46 trang)
w