TRÍ TUỆ NHÂN TẠO ỨNG DỤNG DEEP LEARNING VÀO NHẬN DIỆN KÝ TỰ MÃ CONTAINER

44 0 0
Tài liệu đã được kiểm tra trùng lặp
TRÍ TUỆ NHÂN TẠO ỨNG DỤNG DEEP LEARNING VÀO NHẬN DIỆN KÝ TỰ MÃ CONTAINER

Đ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

Đề tài này tập trung vào ứng dụng Deep Learning để thực hiện nhiệm vụ quan trọng là nhận diện các ký tự trên mã container. Chúng em đã dành thời gian nghiên cứu và áp dụng những mô hình Deep Learning có sẵn trong lĩnh vực xử lý ảnh. Trong phạm vi báo cáo, chúng em đã lựa chọn một trong những mô hình Deep Learning đã được công bố và tiến hành huấn luyện chúng bằng dữ liệu gồm 36 ký tự, bao gồm chữ cái in và số. Mục tiêu của chúng tôi là sử dụng mô hình đã được huấn luyện để dự đoán và nhận diện các ký tự trên mã container một cách hiệu quả.

Trang 1

KHOA HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

BÁO CÁO ĐỒ ÁN MÔN HỌC: TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI: ỨNG DỤNG DEEP LEARNING VÀO NHẬN DIỆNKÝ TỰ MÃ CONTAINER

Giảng viên hướng dẫn: Th.S Phạm Minh Khan

Trang 2

Thành phố Hồ Chí Minh, ngày 10 tháng 10 năm 2023

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNGKHOA HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

BÁO CÁO ĐỒ ÁN MÔN HỌC: TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI: ỨNG DỤNG DEEP LEARNING VÀO NHẬN DIỆNKÝ TỰ MÃ CONTAINER

Giảng viên hướng dẫn: Th.S Phạm Minh Khan

Trang 3

Trương Thị Thùy Linh0950080013

Thành phố Hồ Chí Minh, ngày 10 tháng 10 năm 2023

Trang 4

Nhận xét của giảng viên

Trang 5

TS Phạm Minh Khan

LỜI CAM ĐOAN

Chúng em cam đoan rằng đề tài "Ứng dụng Deep Learning vào nhận diện ký tự mã container" đã được thực hiện một cách trung thực và minh bạch Chúng em đã tôn trọng quy định về tài liệu tham khảo bằng cách liệt kê và chỉ rõ nguồn tham khảo tại phần tài liệu tham khảo trong báo cáo.

Mọi thành quả và kết quả nghiên cứu được trình bày trong báo cáo là sảnphẩm của sự tự tìm hiểu và nỗ lực cá nhân, hỗ trợ bởi sự hướng dẫn tận tâm từThầy Phạm Minh Khan Chúng em khẳng định rằng không có sự sao chép hoặc sửdụng kết quả từ bất kỳ đề tài nghiên cứu khác nào về cùng chủ đề Nếu có bất kỳdấu hiệu nào của sao chép hoặc sử dụng kết quả nghiên cứu từ nguồn khác, chúngem sẽ chịu hoàn toàn trách nhiệm và thân trọng nhận hậu quả.

Trang 6

TÓM TẮT NỘI DUNG

Đề tài này tập trung vào ứng dụng Deep Learning để thực hiện nhiệm vụ quan trọng là nhận diện các ký tự trên mã container Chúng em đã dành thời gian nghiên cứu và áp dụng những mô hình Deep Learning có sẵn trong lĩnh vực xử lý ảnh.

Trong phạm vi báo cáo, chúng em đã lựa chọn một trong những mô hình Deep Learning đã được công bố và tiến hành huấn luyện chúng bằng dữ liệu gồm 36 ký tự, bao gồm chữ cái in và số Mục tiêu của chúng tôi là sử dụng mô hình đã được huấn luyện để dự đoán và nhận diện các ký tự trên mã container một cách hiệu quả.

Trang 7

2.1 Mô hình mạng nơ-ron tích chập (Convolutional Neural Network - CNN) 11

2.1.1 Tổng quan về mô hình neural network 11

3.4.2 Lựa chọn và xây dựng mô hình Deep Learning 27

3.4.2.1 Kết quả xây dựng mô hình EfficientNetB0 28

3.4.2.2 Kết quả xây dựng mô hình Lenet-5 29

3.4.3 Quá trình training và kết quả training của mô hình EfficientNetB0 29

3.4.4 Quá trình training và kết quả training của mô hình Lenet-5 32

Chương 4 : Đánh giá hiệu quả 34

4.1 Kiểm tra 34

4.2 Test 34

4.3 Đánh giá 40

Trang 9

Hình 9 - ReLu so với Tanh 19

Hình 10 - Kiến trúc của Lenet 20

Hình 11 - Phương thức tích chập ở layer 3 Lenet 21

Hình 12 - Kiến trúc mạng EfficientNetB0 23

Hình 13 - Pipeline của báo cáo 24

Hình 14 - Ảnh container đầu vào 25

Hình 15 - Output chứa vùng mã 26

Hình 16 - Output phát hiện ký tự 26

Hình 17 - Kết quả xây dựng mô hình EfficientNetB0 28

Hình 18 - Kết quả xây dưng mô hình LeNet-5 29

Trang 11

Chương 1: Giới thiệu1.1 Mở đầu

Vận tải, lưu thông hàng hóa từ lâu đã là một trong những hoạt động không thể thiếu của con người Nhất là trong thời kỳ thế giới phát triển với tốc độ chóng mặt như hiện nay, nhu cầu về vận tải sẽ được nâng đến mức tối đa Do đó, vận tải bằng container hiện nay đang là lĩnh vực rất đáng quan tâm Theo Visco [7], đầu năm 2022, vận tải bằng container đã đạt mức kỷ lục

Một số thông tin được nêu ra như sau: chỉ số vận tải hàng hóa container tại Thượng Hải tăng 76% so với cùng kỳ năm trước và đứng đầu với 5.000 điểm; có 101 tàu container chờ ở bến Los Angeles/Long Beach chỉ trong một ngày chủ nhật; tỷ giá vận tải xuyên Thái Bình Dương tăng mạnh,

Từ đó, có thể dự đoán được rằng số lượng container được dùng trong lưu thông sẽ ngày càng gia tăng Cũng vì thế mà một số vấn đề khác sẽ được phát sinh Trong đó, vấn đề về quản lý là một vấn đề quan trọng hơn hết Nếu duy trì cách quản lý cũ là đặt container tại bến cảng để kiểm tra, sau đó mới được phép tiếp tục vận chuyển thì thời gian sẽ tăng rất nhiều, có thể khiến quá trình bị chậm lại hoặc thậm chí tắc nghẽn vào mùa cao điểm

Do đó, vấn đề tự động nhận dạng và kiểm tra container là một vấn đề rất thực tế và đáng tìm hiểu Nên chúng em đã chọn đề tài "Ứng dụng Deep Learning vào nhận diện ký tự mã container" trong môn học "Trí tuệ nhân tạo" này để nghiên cứu.

1.2 Yêu cầu và mục tiêu của đề tài 1.2.1 Yêu cầu

- Đề tài đã được thiết lập với mục tiêu giải quyết vấn đề nhận dạng đã được trình bày ở phần giới thiệu.

- Cuối cùng, mục tiêu là xây dựng một hệ thống đơn giản nhưng toàn diện, có khả năng tiếp nhận hình ảnh của container đầu vào và trả về kết quả nhận dạng mã container tương ứng ở đầu ra.

Trang 12

o Dự đoán ký tự ở mức độ chính xác khi ảnh đầu vào có chất tượng tốt.

Chương 2: Tìm hiểu mô hình deep learning dùngtrong object detection và object Classification

2.1 Mô hình mạng nơ-ron tích chập (Convolutional Neural Network - CNN)

2.1.1 Tổng quan về mô hình neural network

Ở con người, các nơ-ron thần kinh được liên kết với nhau thông qua synapse, khi một nơ-ron muốn gửi thông tin cho nơ-ron khác, nó sẽ sinh ra điện thế hoạt động và lan truyền qua synapse, giải phóng chất dẫn truyền thần kinh tạo ra phản ứng ở nơ-ron kia [4]

Dựa vào đặc điểm này của não bộ con người, mô hình mạng nơ-ron thần kinh (neural network) đã được phát triển Một neural network sẽ có 3 lớp gồm: input, hidden và output Input layer nhận dữ liệu đầu vào như ảnh, video, giống như não nhận thông tin từ mắt, tai, Hidden layer sẽ phân tích dữ liệu ấy và Output layer sẽ cho ra kết quả, tương tự việc não phân tích và đưa ra đánh giá về thông tin mà tai, mắt, nhận được Các đơn vị tính toán ở mỗi layer là một node

Trang 13

Mỗi node này tương đương một nơ-ron trong não bộ Chúng cũng được liên kết với nhau và có thể được kích hoạt bởi các hàm kích hoạt (activation function), tương tự việc synapse giải phóng chất dẫn truyền để gây ra phản ứng ở nơ-ron

Được phát triển dựa trên cách nơ-ron hoạt động nhưng neural network cũng không hoàn toàn giống với não bộ con người Một đặc điểm khác là số lượng node không cố định, mỗi loại neural network sẽ sử dụng số lớp hidden khác nhau, từ đó có số node khác nhau, dẫn tới sự đa dạng trong quá trình phát triển mô hình

2.1.2 Mô hình CNN

CNN là một mạng nơ-ron áp dụng phép tính convolution lên các pixel của frame để giảm kích thước dữ liệu, lấy ra các đặc điểm quan trọng của các pixel để phân tích.[5]

Với mỗi phần tử xij trong ma trận X lấy ra một ma trận có kích thước bằng kích

thước của kernel W có phần tử xij làm trung tâm (đây là vì sao kích thước của kernel

thường lẻ) gọi là ma trận A Sau đó tính tổng các phần tử của phép tính element-wise của ma trận A và ma trận W, rồi viết vào ma trận kết quả Y

Tiếp theo lấy một phần tử khác cách phần tử ban đầu một đoạn khoảng cách bằng stride (sẽ trình bày ở mục sau) làm phần tử trung tâm và tính như trên Tiếp tục đến cuối ma trận đầu vào sẽ cho ra ma trận Y hoàn chỉnh.

Trang 14

Hình 2 - Phép tính convolution

Ở hình 2, giá trị ở ô đầu tiên trong ma trận Y sẽ là 1*1 + 0*1 + 1*1 +0*0 + 1*1 + 1*0 + 0 *1 + 0*0 + 1*1 = 4

→ Kích thước ma trận Y sẽ nhỏ hơn ma trận X ban đầu một lượng bằng stride ở cả

2 chiều, giảm lượng dữ liệu nhưng vẫn giữ được các thông tin quan trọng

Ý nghĩa của phép tính convolution:

Trang 15

Hình 3 - Tác dụng một số loại kernel

Stride và pooling layer

Tuy convolution layer đã giúp giảm số lượng dữ liệu cần phân tích, tuy nhiên lượng dữ liệu giảm đi ở mỗi lần tính convolution là không nhiều Do đó nếu chỉ dùng convolution đến khi có được lượng dữ liệu mong muốn thì sẽ phải thực hiện rất nhiều lần Vì vậy, trong CNN có sử dụng thêm 1 loại layer khác giúp giảm lượng dữ liệu là pooling layer Pooling layer thường được đặt sau convolution layer Pooling layer với size = k*k sẽ có 1 cửa sổ kích thước k*k trượt trên ma trận đầu vào và chọn các giá trị phù hợp đưa vào ma trận đầu ra Khoảng cách mỗi lần trượt là stride

Có 2 loại pooling thường dùng là max pooling và average pooling Max pooing lấy giá trị lớn nhất trong cửa số k*k, còn avarage pooling thì lấy trung bình của các giá trị trong cửa sổ k*k

Ví dụ về max pooling và average pooling với size = 2*2 và stride = 2 (Hình 4).

Trang 16

Hình 4 - Pooling

Fully connected layer

Là các layer có các node liên kết với các node ở layer trước Mỗi node trong layer

Tổng linear ở đầu vào 1 node là tổng các (node ở layer trước * hệ số liên kết w của từng liên kết) cộng với bias b Activation function sẽ áp dụng với tổng linear trên để đưa ra kết quả về thông tin của node

Vì fully connected layer cần tính toán rất nhiều nên không thể đặt ở đầu hidden layer khi dữ liệu còn quá nhiều Do đó fully connected layer thường đặt ở sau cùng khi dữ liệu đã trải qua 1 vài lớp convolution, pooling và làm phẳng thành 1 chiều.

Trang 17

Hình 5 - Fully Connected Network

Hình 5 là ví dụ về fully connected của một neural network Các node ở mỗi layer được liên kết với tât cả các node ở layer trước.

Với CNN thì fully connected layer cũng sẽ giống như vậy, chỉ khác là lớp input ở đây sẽ trở thành lớp hidden và thêm vào phía trước những lớp convolution và pooling

Một số hàm kích hoạt (Activation function) 2.1.2.1 Sigmoid:

Công thức:

Trang 18

Đồ thị 6 cho thấy hàm sigmoid nhận đầu vào là tất cả các giá trị thực và kết quả là giá trị trong khoảng (0,1) Đây là hàm kích hoạt được dùng nhiều trong các mô hình CNN ở quá khứ vì nó có đạo hàm đẹp

Tuy nhiên, sigmoid có nhược điểm là khi đầu vào có giá trị quá lớn (quá âm hoặc quá dương) thì đạo hàm gần như bằng 0, không có giá trị trong việc cập nhật trọng số của

Trang 19

Hình 7 - Đồ thị hàm tanh

2.1.2.3 ReLU (Rectified Linear Unit):

Công thức:

Hình 8 - Đồ thị hàm ReLU

Hàm ReLU đang được sử dụng rộng rãi trong các mô hình CNN hiện nay Nhìn vào hình 8 và công thức của hàm, có thể thấy được tính chất của ReLU khá đơn giản.

Trang 20

Hàm chỉ lọc các giá trị âm và thay bằng 0 So với việc dùng exp như hàm sigmoid và tanh

thì chi phí tính toán cho hàm ReLU cũng thấp hơn nhiều

Ngoài ra, tốc độ training khi dùng hàm ReLU cũng nhanh hơn nhiều lần Theo Alex Krizhevsky [2], với cùng một mô hình CNN 4 lớp, để đạt độ lỗi 25% trên tập CIFAR-10 thì hàm ReLU sẽ nhanh hơn hàm tanh gấp 6 lần

Nguyên văn [2]:

Hình 9 - ReLu so với Tanh

A four-layer convolutional neural network with ReLUs (solid line) reaches

a 25% training error rate on CIFAR-10 six times faster than an equivalent

network with tanh neurons (dashed line)

2.1.2.4 Softmax (hàm trung bình mũ):

Công thức:

Trang 21

Hàm softmax nhận đầu vào là một vector , với là các thành phần của

vector, K là số lớp đối tượng và trả về một vector có cùng số thành phần với vector đầu vào với giá trị trong khoảng (0,1)

Hàm softmax thường được dùng ở lớp cuối cùng trong các bài toán phân loại để đưa ra tỷ lệ phân phối xác suất về các lớp đối tượng

2.2 Một số mô hình đã tìm hiểu

Lenet-5 [3]

Đây là mô hình được phát triển bởi Yann LeCunn (Director of AI Research Facebook) cùng với Léon Bottou, Yoshua Bengio (đồng tác giả với Ian Goodfellow của cuốn “Deep Learning”) và Patrick Haffner với mục tiêu là nhận dạng các chữ số viết tay Hình 10 thể hiện kiến trúc của mô hình.

Hình 10 - Kiến trúc của Lenet

Đầu vào của mô hình là ảnh với kích thước 32x32x1 Layer thứ nhất là convolutional layer với 6 kernel 5x5x1, stride = 1 pad = 0 Output của lớp này là feature map 28x28x6 Layer thứ 2 là pooling layer với phương pháp subsampling kích thước 2x2 Output của lớp này có kích thước 14x14x6

Lớp thứ 3 là lớp convolutional với 16 kernel size 5x5 Điểm đặc biệt ở layer này là nó không sử dụng tất cả các kernel cho input (output của S2) mà sử dụng theo một cách đặc biệt:

Trang 22

Hình 11 - Phương thức tích chập ở layer 3 Lenet

Lấy ví dụ với feature map 0 ở hình 11 Feature map này được tạo bởi 3 feature map 0,1,2 của layer 2 (14x14) với kernel thứ 0 Layer thứ 4 là pooling layer với phương pháp average 10window size = 2x2 Kết quả của layer này là feature map 5x5x16 Lớp thứ 5 là lớp convolutional với 120 kernel size 5x5x16 Sau lớp này có được feature map 1x1x120 Lớp cuối cùng là lớp fully connected Mô hình dùng tanh làm hàm kích hoạt

Nhận xét:

Lenet nhận input có kích thước khá nhỏ, số lượng layer và số lượng kernel ở những convolu-tion layer là không nhiều Do đó, mô hình có thể được training với tốc độ khá nhanh trên CPU với tập data MNIST

Tuy nhiên độ chính xác của mô hình với các ký tự in là không cao Mô hình có số lượng tham số ít và dùng tanh làm hàm kích hoạt Vì thế khi càng training về sau, các trọng số sẽ lớn dần và khi được kích hoạt bởi hàm tanh, giá trị kích hoạt sẽ không thay đổi nhiều dẫn đến khó khăn cho việc cập nhật lại trọng số

EfficientnetB0 [6]

Hai tác giả Mingxing Tan và Quoc V Le đã nghiên cứu và nhận thấy rằng việc cân bằng giữa độ sâu, chiều rộng và độ phân giải (depth, width, and resolution) khi scaling mạng sẽ đem lại hiệu suất tốt hơn Hai người đã đề xuất một phương pháp scaling mới:

Trang 23

Trong đó:

• d, w, r lần lượt là độ rộng, độ sâu và độ phân giải của mạng

• α, β, γ là các hằng số có thể được xác định bằng small grid search

Nhóm tác giả nhận ra rằng số lượng phép tính floating-point trên giây (FLOPS) sẽ

tỷ lệ thuận với d, w2, r2 Khi scaling theo 1 chiều, nhân đôi chiều sâu sẽ nhân đôi

FLOPS, còn nhân đôi chiều rộng hoặc độ phân giải sẽ nhân bốn FLOPS Do đó, họ dặt

ràng buộc α.β2.γ2 ≈ 2 để mỗi khi scaling theo φ thì FLOPS sẽ tăng 2φ Nguyên văn nhưsau: Notably, the FLOPS of a regular convolution op is proportional to d, w2, r2, i.e.,

doubling network depth will double FLOPS, but doubling network width or resolution will increase FLOPS by four times Since convolution ops usually dominate the computation cost in ConvNets, scaling a ConvNet with equation 3 will approximately

increase total FLOPS by (α β2 γ2) φ In this paper, we constraint α.β2.γ2 ≈ 2 such thatfor any new φ, the total FLOPS will approx-mately increase by 2φ

Và vì scaling sẽ không làm thay đổi phép tính ở mỗi layer nên việc chọn một baseline model làm gốc cũng rất quan trọng Vì thế nhóm tác giả đã phát triển một mô hình mới phù hợp với công thức của mình với tên gọi EfficientNetB0.

Trang 24

Hình 12 - Kiến trúc mạng EfficientNetB0

Các mạng EfficientNet từ B1 đến B7 sẽ được scale từ B0 theo công thức trên bằng

cách thay đổi φ với α = 1.2, β = 1.1, γ = 1.15 được xác định bằng phương pháp

grid-search

Nhận xét:

So với Lenet-5, EfficientNet có cấu trúc phức tạp hơn và khả năng phân tách các đặc điểm (feature) của đối tượng tót hơn, Do đó kết quả dự đoán của EfficientNet cũng khá chính xác ngay cả khi ảnh có chất lượng kém

Đặc biệt với những mô hình EfficientNet được scaling lên từ B0 thì khả năng dự đoán càng tốt hơn nữa Tuy nhiên, mô hình lại có tốc độ training khá chậm khi so với Lenet trên cùng một GPU do batch size mà có thể load nhỏ hơn.

Trang 25

Chương 3: Pipeline và phương thức hiện thực 3.1 Pipeline

Pipeline xử lý vấn đề gồm các bước chính:

Hình 13 - Pipeline của báo cáo

Mỗi bước sẽ được hiện thực như một module có thể chạy độc lập với nhau Đầu tiên, ảnh cần nhận dạng sẽ dược đưa vào và chuyển về kích thước định trước Bước tiếp theo, ta sẽ tìm vùng nào là vùng chứa mã cần tìm và cắt ra bằng module thứ hai Sau đó, ảnh vừa cắt sẽ được đưa vào bước kế tiếp Ở bước này, ảnh sẽ được resize lại và áp dụng một các phương pháp xử lý ảnh để tìm và cắt từng ký tự Cuối cùng, những ký tự vừa cắt sẽ được nhận dạng bằng module thứ ba

Kết quả từ việc dự đoán sẽ được ghi lại lên ảnh đã xử lý ở bước trước đó Việc phát triển pipeline thành từng module như thế này giúp quá trình hiện thực có thể tiến hành song song, không phụ thuộc nhau Đồng thời có thể dễ dàng thay đổi, sửa chữa một module bất kỳ mà không cần thay đổi toàn bộ pipeline khiến cho quá trình xây dựng trở nên thuận lợi và dễ dàng

3.2 Phát hiện vùng mã container:

Mã container bao gồm 2 loại: mã sau (back code) và mã bên (side code) Thông thường, xung quanh vùng mã sẽ có rất nhiều nhiễu Ví dụ như container bị trầy xước, phai màu do ảnh hưởng của thời tiết, đặc biệt là với backcode được in trên trên cửa container luôn có những thông tin khác kèm theo Do đó việc phát hiện các vùng mã này sẽ rất khó nếu chỉ dùng các giải thuật xử lý ảnh đơn thuần Nên việc ứng dụng deep learning tại bước này sẽ giúp quá trình thực hiện báo cáo trở nên đơn giản hơn.

Ngày đăng: 02/05/2024, 08:43

Tài liệu cùng người dùng

Tài liệu liên quan