1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học máy: Phân loại ảnh

16 1,1K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 893,42 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thế giới phát triển cùng với sự bùng nổ của công nghệ thông tin,đặc biệtcủa dữ liệu, những khái niệm AI, NLP, Machine learning , DeepLearning,..ra đời để phân tích dữ liệu, học tập nguồn tri thức trợ giúp conngười đưa ra những quyết định từ nguồn dữ liệu khổng lồ.Trong kỳ học này, chúng em được học tập và tiếp thu kiến thức để hiểuthêm về học máy. Trong đó bài toán phân loại hình ảnh đang được ứngdụng rất phổ biến như trong hệ thống xử lý ảnh lớn như Facebook,Google hay Amazon đã đưa vào sản phẩm của mình những chức năngthông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự láihay drone giao hàng tự động Bạn nào mua tài liệu email mình nếu muốn lấy source nhé

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC MÁY

ĐỀ TÀI:

Phân loại ảnh với Mạng Noron Tích Chập -Convolutional Neural Networks(CNNs)

Giáo viên hướng dẫn: TS Thân Quang Khoát

Sinh viên thực hiện:

Nguyễn Thị Phương Hằng 20131345

Trang 2

Mục lục

Lời nói đầu 3

I Bài toán 4

II Phương pháp sử dụng và tập dữ liệu 4

1 CNNs(Convoluntional Neural Network) - Mạng nơ-ron tích chập 4

1.1 Mạng nơ-ron thông thường 4

1.2 Convolutional Neural Network (CNNs/ ConvNet – Mạng nơ-ron tích chập) 5

2 Tập dữ liệu CIFAR 10 9

III Chức năng chính của hệ thống 10

IV Thử nghiệm 10

V Vấn đề gặp phải và hướng mở rộng 14

VI Danh sách tài liệu tham khảo 15

VII Hướng dẫn cài đặt 15

Kết luận 16

Trang 3

Lời nói đầu

Thế giới phát triển cùng với sự bùng nổ của công nghệ thông tin,đặc biệt của dữ liệu, những khái niệm AI, NLP, Machine learning , Deep

Learning, ra đời để phân tích dữ liệu, học tập nguồn tri thức trợ giúp con người đưa ra những quyết định từ nguồn dữ liệu khổng lồ

Trong kỳ học này, chúng em được học tập và tiếp thu kiến thức để hiểu thêm về học máy Trong đó bài toán phân loại hình ảnh đang được ứng dụng rất phổ biến như trong hệ thống xử lý ảnh lớn như Facebook,

Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động

Chúng em lựa chọn đề tài này nhằm nghiên cứu và hiểu thêm về mô hình CNN, cũng như hệ thống xử lý ảnh hiện nay.Hệ thống của chúng em hy vọng sẽ nhận diện được hình ảnh từ nguồn đưa vào Do kiến thức còn hạn chế, kinh nghiệm không nhiều nên còn nhiều sai sót mong nhận được

sự góp ý từ thầy!

Chúng em chân thành cảm ơn!

Trang 4

I Bài toán

- Phân loại ảnh là một bài toán nền tảng trong thị giác máy tính, muốn có những ứng dụng thị giác máy tính thông minh và hữu dụng > cần phải phân loại ảnh

- Có rất nhiều ứng dụng trong thực tế:

- Phân loại ảnh y tế, hàng không…

- Nhận diện cử chỉ, cảm xúc…

- Thiết lập thị giác cho robot

- Đặc điểm: Trích rút đặc trưng từ ảnh tương đối khó Nếu dùng ảnh thô thì kết quả khá tồi → Mạng Convolutional Neural Network

Input: Hình ảnh đưa vào

Output: Nhận diện được sự vật trong bức ảnh

II Phương pháp sử dụng và tập dữ liệu

1 CNNs(Convoluntional Neural Network) - Mạng nơ-ron tích chập

1.1 Mạng nơ-ron thông thường

Neural Networks nhận được đầu vào (một vector đơn), và chuyển nó qua các lớp ẩn Mỗi lớp ẩn được tạo thành bởi một tập các nơ-ron, nơi mà mỗi nơ-ron được kết nối hoàn toàn với tất cả các nơ-ron trong lớp trước,

và các nơ-ron trong một lớp hoạt động hoàn toàn độc lập và không chia

sẻ bất kỳ kết nối nào Lớp được kết nối hoàn chỉnh cuối cùng được gọi là

Trang 5

"lớp out put".Đầu ra là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ

có tối đa là một đầu ra

1.2 Convolutional Neural Network (CNNs/ ConvNet – Mạng nơ-ron tích chập)

Tích chập là gì? Convolution (tích chập)

Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal

processing) Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã

áp dụng kĩ thuật này vào xử lý ảnh và video số Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding window) áp đặt lên một

ma trận Bạn có thể theo dõi cơ chế của tích chập qua hình minh họa bên dưới

Mạng no-ron tích chập

CNNs là một trong những kỹ thuật hiện đại nhất hiện nay (state of the art) cho bài toán phân loại ảnh nói riêng và lĩnh vực thị giác máy tính nói chung

CNNs đầu vào bao gồm các hình Đặc biệt,khác với mạng nơ-ron thông thường , các lớp của một ConvNet có no-rons sắp xếp theo 3 chiều: chiều rộng, chiều cao, chiều sâu (Lưu ý rằng chiều sâu ở đây đề cập đến kích thước thứ ba của khối lượng kích hoạt)

Ví dụ, các hình ảnh đầu vào trong CIFAR- 10 là một khối lượng đầu vào của kích hoạt, và khối lượng có kích thước 32x32x3 (chiều rộng, chiều cao, chiều sâu tương ứng) Như chúng ta thấy, các nơ-ron trong một lớp

sẽ chỉ được kết nối với một vùng nhỏ của lớp trước nó, thay vì tất cả các nơ-ron theo cách kết nối hoàn toàn Hơn nữa, lớp đầu ra cuối cùng cho CIFAR-10 có kích thước 1x1x10, bởi vì cuối kiến trúc ConvNet, chúng

ta sẽ làm giảm toàn bộ hình ảnh thành một vector duy nhất, sắp xếp theo chiều sâu Đây là một hình ảnh:

Trang 6

Như chúng ta đã mô tả ở trên, một ConvNet đơn giản là một dãy các lớp chuyển đổi thông qua hàm kích hoạt phi tuyến Ta sử dụng ba loại lớp chính để xây dựng kiến trúc ConvNet: Lớp cộng hưởng(Convolutional Layer), lớp tổng hợp(Pooling Layer), và lớp được kết nối hoàn toàn

(Fully-Connected Layer )(chính xác như trong mạng nơ-ron thường) Xếp chồng các lớp này tạo thành kiến trúc đầy đủ

1.2.1 Convolutional Layer

Lớp này chính là nơi thể hiện tư tưởng ban đầu của mạng nơ-ron tích chập Thay vì kết nối toàn bộ điểm ảnh, lớp này sẽ sử dụng một bộ các bộ lọc (filters) có kích thước nhỏ so với ảnh (thường là 3×3 hoặc 5×5) áp vào một vùng trong ảnh và tiến hành tính tích chập giữa bộ filter và giá trị điểm ảnh trong vùng cục bộ đó

- Dùng các filter đặt dọc theo chiều sâu nhìn tầng phía trước, mỗi tầng sử dụng một bộ trọng số riêng → Thấy được các đặc trưng riêng của tầng phía trước

- Dùng các receptive field trượt trên bề mặt của tầng trước, nhưng nhìn thấu hết dọc theo chiều sâu của tầng trước

- Chia sẻ tham số với các neural trên cùng một filter

Như vậy với một bức ảnh 32×32 và một filter 3×3, ta sẽ có kết quả là một tấm ảnh mới có kích thước 32×32 (với điều kiện đã thêm padding vào ảnh gốc để tính tích chập cho các trường hợp filter quét ra các biên cạnh)

là kết quả tích chập của filter và ảnh Với bao nhiêu filter trong lớp này thì ta sẽ có bấy nhiêu ảnh tương ứng mà lớp này trả ra và được truyền vào lớp tiếp theo Các trọng số của filter ban đầu sẽ được khởi tạo ngẫu nhiên

và sẽ được học dần trong quá trình huấn luyện mô hình

Trang 7

1.2.2 Lớp RELU – rectified linear unit

Lớp này thường được cài đặt ngay sau lớp Convolutional Lớp này sử dụng hàm kích hoạt f(x) = max(0,x)f(x)=max(0,x) Nói một cách đơn giản, lớp này có nhiệm vụ chuyển toàn bộ giá trị âm trong kết quả lấy từ lớp Convolutional thành giá trị 0 Ý nghĩa của cách cài đặt này chính là tạo nên tính phi tuyến cho mô hình

Tương tự như trong mạng truyền thẳng, việc xây dựng dựa trên các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô nghĩa Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt sigmoid, tanh, … nhưng hàm f(x) =

max(0,x)f(x)=max(0,x) dễ cài đặt, tính toán nhanh mà vẫn hiệu quả

1.2.3 Pooling Layer

Lớp này sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt theo một bước trượt (stride) cho trước Khác với lớp Convolutional, lớp Pooling không tính tích chập mà tiến hành lấy mẫu (subsampling) Khi cửa sổ trượt trên ảnh, chỉ có một giá trị được xem là giá trị đại diện cho thông tin ảnh tại vùng đó (giá trị mẫu) được giữ lại

Các phương thức lấy phổ biến trong lớp Pooling là MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất) và AveragePooling (lấy giá trị trung bình)

Xét một ảnh có kích thước 32×32 và lớp Pooling sử dụng filter có kích thước 2×2 với bước trượt stride = 2, phương pháp sử dụng là

MaxPooling Filter sẽ lần lượt duyệt qua ảnh, với mỗi lần duyệt chỉ có giá trị lớn nhất trong 4 giá trị nằm trong vùng cửa sổ 2×2 của filter được giữ lại và đưa ra đầu ra Như vậy sau khi qua lớp Pooling, ảnh sẽ giảm kích thước xuống còn 16×16 (kích thước mỗi chiều giảm 2 lần)

Lớp Pooling có vai trò giảm kích thước dữ liệu Với một bức ảnh kích thước lớn qua nhiều lớp Pooling sẽ được thu nhỏ lại tuy nhiên vẫn giữ được những đặc trưng cần cho việc nhận dạng (thông qua cách lấy mẫu)

Trang 8

Việc giảm kích thước dữ liệu sẽ làm giảm lượng tham số, tăng hiệu quả tính toán và góp phần kiểm soát hiện tượng quá khớp (overfitting)

1.2.4 Fully-Connected Layer

Lớp này tương tự với lớp trong mạng nơ-ron truyền thẳng, các giá trị ảnh được liên kết đầy đủ vào node trong lớp tiếp theo Sau khi ảnh được xử lý

và rút trích đặc trưng từ các lớp trước đó, dữ liệu ảnh sẽ không còn quá lớn so với mô hình truyền thẳng nên ta có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng

Tóm lại, lớp fully-connected đóng vai trò như một mô hình phân lớp và tiến hành dựa trên dữ liệu đã được xử lý ở các lớp trước đó

Mô hình hoạt động như thế nào

Một mạng nơ-ron tích chập được hình thành bằng cách ghép các lớp nêu trên lại với nhau Mô hình bắt đầu với lớp Convolutional

Lớp RELU thường luôn được cài đặt ngay sau lớp Convolutional hoặc thậm chí kết hợp cả hai lớp này thành một lớp Các lớp tiếp theo có thể là Convolutional hay Pooling tùy theo kiến trúc mà ta muốn xây dựng Cuối cùng sẽ là lớp fully-connected để tiến hành phân lớp

Để xem mô hình này hoạt động như thế nào ta có thể xét một kiến trúc sau đây:

Conv1 (with RELU) – Pooling – Conv2 (with RELU) – Pooling – FC –

FC

Ví dụ: Một ConvNet đơn giản để phân loại tập dữ liệu trong CIFAR-10

có thể có kiến trúc [INPUT - CONV - RELU - POOL - FC] Chi tiết hơn:

trường hợp này là hình ảnh có chiều rộng 32, chiều cao 32 và với

ba kênh màu R, G, B

vùng địa phương trong đầu vào, mỗi sản phẩm tính toán giữa trọng

số của chúng và một khu vực nhỏ mà được kết nối vào trong

Trang 9

trọng lượng đầu vào Điều này có thể dẫn đến kết quả như [32x32x12] nếu ta quyết định sử dụng 12 bộ lọc

ngưỡng tối đa (0, x) max (0, x) ở mức 0 Điều này làm cho kích thước của volume không thay đổi ([32x32x12])

(chiều rộng, chiều cao), kết quả là [16x16x12]

khối lượng của kích thước [1x1x10], trong đó mỗi con số trong số

10 tương ứng với điểm số của lớp, chẳng hạn như trong số 10 loại của CIFAR-10 Giống như các mạng nơ-ron thường ,mỗi nơ-ron trong lớp này sẽ được kết nối với tất cả các số trong volume trước

đó

2 Tập dữ liệu CIFAR 10

Bộ dữ liệu CIFAR-10 bao gồm 60000 hình ảnh màu 32x32 trong 10 lớp, với 6000 hình ảnh cho mỗi lớp

Training Data: Gồm 50000 ảnh kích thước 32*32*3 cho dưới dạng ma trận 50000 x 3072, tương ứng với 10 lớp ( 5000 ảnh cho mỗi lớp)

Test Data: Gồm 10000 ảnh với số lượng ảnh mỗi lớp không biết trước

Bộ dữ liệu được chia thành năm đợt huấn luyện và một đợt thử nghiệm, mỗi cái có 10000 hình ảnh Các lô thử nghiệm chứa chính xác 1000 hình ảnh được lựa chọn ngẫu nhiên từ mỗi lớp Các đợt huấn luyện có chứa

Trang 10

các hình ảnh còn lại theo thứ tự ngẫu nhiên, nhưng một số đợt học có thể chứa nhiều hình ảnh hơn từ một lớp khác Giữa chúng, các đợt học chứa chính xác 5000 hình ảnh từ mỗi lớp

Dưới đây là các lớp trong tập dữ liệu, cũng như 10 hình ảnh ngẫu nhiên

từ mỗi lớp :

Airplane Automobile bird

cat deer dog frog horse ship truck Các lớp không có sự trùng lặp, không chồng chéo nhau

III Chức năng chính của hệ thống

Chức năng chính của hệ thống

Nhận diện hình ảnh thông qua CNNs

- Công nghệ sử dụng: TensorFlow Framework, Keras (với Backend TensorFlow)

- Tính toán trên CPU

- Loss Function: Dùng hàm Cross Entropy

Trang 11

- Tiến xử lý:

Quy chuẩn mỗi pixel về khoảng [0,1]

Mean Zero mỗi pixel để có trung bình mỗi pixel tại mỗi vị trí của bức ảnh là 0, nó sẽ giúp quá trình tối ưu theo graident decent hoạt động tốt hơn

Thử nghiệm với mạng Neural Networks thông thường:

Tập train được chia ra thành 45000 ảnh cho training và 5000 ảnh cho validate (500 ảnh lấy từ mỗi lớp)

Sử dụng mạng neural một tầng ẩn với số lượng node ở tầng ẩn là 2048,

sử dụng kỹ thuật MiniBatch Gradient decent với kích thước Batch là 128, sau 20000 step kết quả chạy được như sau:

Nhận xét: Kết quả này còn khá hạn chế, do mạng neural thông thường không thể tự học được các đặc trưng của ảnh

Trang 12

- Với mạng 2 tầng ẩn với số lượng node tương ứng là 2048 và 1024 thì

kết quả cũng không được cải thiện thậm chí còn giảm không rõ lý do tại

sao

Thử nghiệm với mạng CNN cỡ nhỏ

Tương tự, tập train được chia ra thành 45000 ảnh cho training và 5000

ảnh cho validate (500 ảnh lấy từ mỗi lớp)

Kiến trúc của mạng:

- Mạng gồm 2 lớp convolution với stride 1, receptive field size 3*3, số

lượng filter (depth) là 16, xen kẽ vào đó là 2 lớp avarage pooling, cuối

cùng là một lớp fully-connected với số lượng hidden node là 128 node

Sử dụng bộ tối ưu là gradient decent với learning rate ban đầu là 0.03 và

sẽ giảm theo hàm mũ sau mỗi 1000 bước với hệ số giảm là 0.95

Kết quả thu được như sau:

Trang 13

Nhận xét: Độ chính xác đã được tăng lên đáng kể, mặc dù thời gian training không lâu hơn so với mạng neural network thông thường, tuy nhiên vẫn còn khá thấp

Trang 14

V Vấn đề gặp phải và hướng mở rộng

Khó khăn gặp phải:

lớn

Hướng mở rộng

gương, tịnh tiến ảnh, xoay, làm mờ, làm nhòe,

Inception)

Trang 15

VI Danh sách tài liệu tham khảo

- http://cs231n.github.io/convolutional-networks/

- https://www.cs.toronto.edu/~kriz/cifar.html

- khóa học Deep learning của udacity

- http://machinelearningmastery.com/object-recognition-convolutional- neural-networks-keras-deep-learning-library/

- https://github.com/Hvass-Labs/TensorFlow

Tutorials/blob/master/cifar10.py

VII Hướng dẫn cài đặt

Cài đặt Python

Cài đặt TensorFlow dành cho CPU trên window tại địa chỉ

https://www.tensorflow.org/install/

Cài đặt Keras bằng Pip với câu lệnh trên command prompt: pip install keras

File cifar-10.py chứa các hàm để nhập dữ liệu cho từng kiểu mạng File one_hidden_layer.py và two_hidden_layer.py tương ứng với mạng

nn thông thường

File convolution_nn mạng convolution mà nhóm em cài đặt, thời gian training tùy thuộc vào từng tham số cấu hình trên mỗi file

Trang 16

Kết luận

Trong một khoảng thời gian học tập dưới sự giảng dạy của thầy Thân Quang Khoát, nhóm chúng em đã hoàn thiện bài toán phân loại ảnh với mạng no-ron tích chập (Convolution Neural Networks), kết quả nhóm em đạt được còn chưa tốt,do thiếu kiến thức và kinh nghiệm trong phân loại ảnh nên còn nhiều thiếu sót mong nhận được sự góp ý từ thầy và các bạn!

Chúng em chân thành cảm ơn!

Ngày đăng: 04/07/2020, 08:47

HÌNH ẢNH LIÊN QUAN

Input: Hình ảnh đưa vào - Báo cáo môn học máy: Phân loại ảnh
nput Hình ảnh đưa vào (Trang 4)
CNNs đầu vào bao gồm các hình. Đặc biệt,khác với mạng nơ-ron thông thường , các lớp của một ConvNet có no-rons sắp xếp theo 3 chiều: chiều  rộng, chiều cao, chiều sâu - Báo cáo môn học máy: Phân loại ảnh
s đầu vào bao gồm các hình. Đặc biệt,khác với mạng nơ-ron thông thường , các lớp của một ConvNet có no-rons sắp xếp theo 3 chiều: chiều rộng, chiều cao, chiều sâu (Trang 5)
Tóm lại, lớp fully-connected đóng vai trò như một mô hình phân lớp và tiến hành dựa trên dữ liệu đã được xử lý ở các lớp trước đó - Báo cáo môn học máy: Phân loại ảnh
m lại, lớp fully-connected đóng vai trò như một mô hình phân lớp và tiến hành dựa trên dữ liệu đã được xử lý ở các lớp trước đó (Trang 8)
Bộ dữ liệu CIFAR-10 bao gồm 60000 hình ảnh màu 32x32 trong 10 lớp, với 6000 hình ảnh cho mỗi lớp - Báo cáo môn học máy: Phân loại ảnh
d ữ liệu CIFAR-10 bao gồm 60000 hình ảnh màu 32x32 trong 10 lớp, với 6000 hình ảnh cho mỗi lớp (Trang 9)
các hình ảnh còn lại theo thứ tự ngẫu nhiên, nhưng một số đợt học có thể chứa nhiều hình ảnh hơn từ một lớp khác - Báo cáo môn học máy: Phân loại ảnh
c ác hình ảnh còn lại theo thứ tự ngẫu nhiên, nhưng một số đợt học có thể chứa nhiều hình ảnh hơn từ một lớp khác (Trang 10)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w