Với mong muốn trởthành một công cụ hữu ích cho các thầy cô giáo trong việc đem lại kiến thức về các loài động vật cho trẻ nhỏ, nhóm chúng tôi quyết định lựa chọn đề tài “Ứng dụng nhận di
Trang 1HỌC VIỆN NGÂN HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ
BÀI BÁO CÁO Học phần: Trí tuệ nhân tạo trong kinh doanh
ĐỀ TÀI: Ứng dụng nhận diện các loài động vật áp
dụng thuật toán CNN
Hà nội, ngày 12 tháng 4 năm 2022
Trang 2DANH SÁCH SINH VIÊN THƯC HIỆN
- Làm nội dung chương 4
- Xây dựng và chạy Googlecolab
- Sửa mã lệnh
- Giải thích thuật toán
- Hoàn thiện bản Word,
- Đánh giá độ chính xác
- Thuyết trình
Trang 3MỤC LỤC LỜI MỞ ĐẦU
CHƯƠNG I PHÁT BIỂU BÀI TOÁN VÀ LÝ DO LẬP BÀI TOÁN
1.1 Lý do lập bài toán
1.2 Phát biểu bài toán
CHƯƠNG II CHUẨN BỊ DỮ LIỆU
2.1 Cách thức thu thập dữ liệu
2.2 Xác định các kiểu dữ liệu ảnh cần thu thập
2.3 Số lượng từng kiểu dữ liệu
2.4 Cách tổ chức dữ liệu trên máy tính
CHƯƠNG III GIỚI THIỆU TỔNG QUAN THUẬT TOÁN SỬ DỤNG
3.1 Lý thuyết cơ bản về mạng CNN
3.2 Ưu điểm
10 3.3 Nhược điểm
11 3.4 Quy trình làm việc
11 CHƯƠNG IV MÃ LỆNH CHƯƠNG TRÌNH
4.1 Đọc dữ liệu, tiền xử lý dữ liệu 12
Trang 44.2 Xây dựng mô hình, mô tả rõ số lớp ẩn của mạng CNN
14
4.3 Huấn luyện mô hình và xác định độ chính xác của mô hình
17
4.4 Sử dụng mô hình
19
4.5 Đánh giá độ chính xác của mô hình
21
CHƯƠNG V KẾT LUẬN
TÀI LIỆU THAM KHẢO
Trang 5
LỜI MỞ ĐẦU
Từ những kiến thức đã học được từ môn Trí tuệ nhân tạo trong kinh doanh kếthợp với các kiến thức thực tế, nhóm chúng tôi đã có được những kiến để hoàn thiệnbài báo cáo của môn học này
Chúng tôi xin gửi lời cảm ơn chân thành đến thầy Vũ Duy Hiến đã tận tụyhướng dẫn, dạy những kiến thức tuyệt vời và sửa lại các lỗi sai trong quá trình học
và làm bài tập lớn để chúng tôi có được một bài báo cáo hoàn chỉnh và trọn vẹnnhất
Trong quá trình làm bài khó có thể tránh khỏi những sai lầm, chúng tôi rấtmong nhận được những ý kiến, đánh giá, góp ý đáng quý từ thầy cô để bài báo cáocảu nhóm chúng tôi được hoàn thiện nhất
Chúng tôi xin chân thành gửi lời cảm ơn đến thầy cô!
Nhóm 11
Trang 6CHƯƠNG I PHÁT BIỂU BÀI TOÁN VÀ LÝ DO LẬP BÀI TOÁN
1.1 Lý do lập bài toán.
Trong thời đại 4.0 bùng nổ, mọi sinh hoạt của con người đều gắn liền với côngnghệ thông tin Khi nhắc tới trí tuệ nhân tạo AI thì không thể không phủ nhận lợiích khi chúng đã góp phần không nhỏ thay đổi mọi mặt của cuộc sống AI giúpchúng ta đạt nhiều thành tựu trên các lĩnh vực từ kinh tế, văn hóa, giáo dục, nghiêncứu khoa học, Tại bài nghiên cứu này, nhóm chúng tôi muốn nhắc tới việc ứngdụng trí tuệ nhân tạo trong lĩnh vực giáo dục tại các trường mẫu giáo trên toànquốc Trong lứa tuổi đi học đặc biệt là lứa tuổi từ 3 đến 6 tuổi, các thầy cô giáo cầnphát triển thế giới quan cho con trẻ như việc phân biệt được màu sắc, nhận biếtđược các loài hoa, nhận diện được các loài động vật khác nhau, Nhóm chúng tôixin xét tới khía cạnh nhận diện và phân biệt các loài động vật khác nhau Trong cácbài giảng hiện nay, để nhận diện các loài động vật cho trẻ con thì các thầy cô giáothực hiện giảng giải bằng miệng hoặc cho trẻ nhỏ xem video Tuy nhiên hình thứcnày chỉ giúp trẻ phân biệt được ngay tại thời điểm đó, vì bản tính của con trẻ tuy rất
dễ tiếp thu nhưng lại rất nhanh quên Đặt ra vấn đề này, nhóm chúng tôi đưa rahướng giải quyết là áp dụng công nghệ trong việc nhận diện hình ảnh các loài độngvật để giảm gánh nặng cho giáo viên không phải giảng đi giảng lại cho trẻ đồngthời giúp chúng nhớ lâu khi ôn tập lại ở nhà cùng gia đình Với mong muốn trởthành một công cụ hữu ích cho các thầy cô giáo trong việc đem lại kiến thức về các
loài động vật cho trẻ nhỏ, nhóm chúng tôi quyết định lựa chọn đề tài “Ứng dụng
nhận diện các loài động vật áp dụng thuật toán CNN”.
1.2 Phát biểu bài toán
- Mô tả bài toán:
Trong sự phát triển của trí tuệ nhân tạo AI với phương pháp học sâu của máy,đặc biệt là mạng CNN nơron tích chập giúp máy tính có thể nhận dạng hình ảnh vàphát hiện đối tượng Nhận dạng hình ảnh là việc máy tính có thể hiểu nội dung củaảnh Bài toán mà chúng tôi giải quyết sẽ áp dụng một mô hình mạng CNN có khả
Trang 7trăm loài động vật nên chúng tôi xin phép lựa chọn đại diện 10 loài động vật tiêu biểu đưa vào mô hình Danh sách các loài động vật mà nhóm chúng tôi lựa chọn để phân loại trong tập dữ liệu ảnh bao gồm: Bọ Ngựa, Cá Mập, Dory fish, Gà, Hổ, Hươu cao cổ, Rùa, Tê giác, Ngựa vằn, Voi Input: Hình ảnh của 10 loài động vật.
Output: Tên gọi của của 10 loài động vật tương ứng
Thuật toán nhận diện động vật được thể hiện:
Code:
mRi
https://colab.research.google.com/drive/1eNmEwTsxKfu1BdYsNvHiNqi9ZDAn-Link Youtube: https://youtu.be/MhkZxcsutU0
- Dựa trên ý tưởng “Ứng dụng nhận diện các loài động vật áp dụng thuật toánCNN” nhóm 11 đã đưa ra thiết kế demo app nhận diện động vật trên giao diện điệnthoại Thiết kế này mang tinh chất ý tưởng minh họa để người xem dễ hình dung
Hình ảnh App demo động vật trên điện thoại
Trang 8CHƯƠNG II CHUẨN BỊ DỮ LIỆU
2.1 Cách thức thu thập dữ liệu
Dữ liệu hình ảnh 10 loài động vật (Bọ Ngựa, Cá Mập, Dory fish, Gà, Hổ,Hươu cao cổ, Rùa, Tê giác, Ngựa vằn, Voi ) dùng vào việc huấn luyện mô hình AIđược thu thập từ Google hình ảnh và https://www.kaggle.com/
2.2 Xác định các kiểu dữ liệu ảnh cần thu thập
Dữ liệu hình ảnh của 10 loài động vật: Bọ Ngựa, Cá Mập, Dory fish, Gà, Hổ,Hươu cao cổ, Rùa, Tê giác, Ngựa vằn, Voi sẽ được chia thành 3 phần (Train,Validation, Test), mỗi phần đều có hình ảnh của 10 loài Trong đó tỉ lệ chia các là:tệp Train chiếm 70%, tập Validation chiếm 20%, tập Test chiếm 10%
Tệp Train là tệp chiếm số lượng nhiều nhất dùng để huấn luyện mô hình; TệpValidation là tệp dữ liệu dùng để kiểm tra độ chính xác của mô hình trong quá trìnhhuấn luyện từ tệp Train; Tệp Test là tệp dữ liệu dùng để kiểm tra độ chính xác của
mô hình sau khi được huấn luyện xong, các dữ liệu dùng trong tệp Test sẽ là dữ liệu
mà mô hình chưa được nhìn thấy qua Chất lượng của bức ảnh cũng một phần làmảnh hưởng tới hiệu quả huấn luyện mô hình
2.3 Số lượng từng kiểu dữ liệu
- Tổng số ảnh chỗ mỗi loài động vật: 200 ảnh → Tổng số ảnh của cả bộ dữliệu: 2000 ảnh
- Tổng số ảnh trong tệp Train 1400 ảnh (Mỗi loài động vật 140 ảnh)
- Tổng số ảnh trong tệp Validation 400 ảnh (Mỗi loài động vật 40 ảnh)
- Tổng số ảnh trong tệp Test 200 ảnh (Mỗi loài động vật 20 ảnh)
2.4 Cách tổ chức dữ liệu trên máy tính
Dữ liệu hình ảnh của 10 loài động vật được thu thập dưới dạng file “.jpg”, chia vào 10 folder riêng biệt tương ứng với 10 loài động vật: Bọ Ngựa, Cá Mập, Dory fish, Gà, Hổ, Hươu cao cổ, Rùa, Tê giác, Ngựa vằn, Voi
Trang 9Vị trí lưu trữ D:\Computer Vision\Data; trong “Data” có ba Folder Train, Validation và Test Sau đó upload dữ liệu lên Google Drive.
Hình ảnh vị trí lưu tập Test, Train và Validation
Hình ảnh vị trí lưu các tệp tương ứng với 10 loài động vật tại tệp Train
Hình ảnh vị trí lưu các tệp tương ứng với 10 loài động vật tại tệp Validation
Hình ảnh vị trí lưu các tệp tương ứng với 10 loài động vật tại tệp Test
Trang 10CHƯƠNG III GIỚI THIỆU TỔNG QUAN THUẬT TOÁN SỬ DỤNG
3.1 Lý thuyết cơ bản về mạng CNN
Mạng nơ-ron tích tụ (CNN) - Convolutional Neural Network là một loại mạngnơ-ron nhân tạo được sử dụng chủ yếu để nhận dạng và xử lý hình ảnh, do khả năngnhận dạng các mẫu trong hình ảnh Đây là một trong những mô hình Deep Learning
vô cùng tiên tiến CNN sẽ cho phép bạn xây dựng các hệ thống thông minh với độchính xác vô cùng cao CNN cũng giúp đưa ra ước tính chuyên sâu về ô tô tự lái.CNN là một công cụ mạnh mẽ nhưng yêu cầu hàng triệu điểm dữ liệu được gắnnhãn để đào tạo CNN phải được đào tạo với các bộ xử lý công suất cao, chẳng hạnnhư GPU (Bộ xử lý các tác vụ liên quan tới đồ họa) hoặc NPU (Bộ xử lý thần kinhchuyên dụng), nếu chúng muốn tạo ra kết quả đủ nhanh để hữu ích
Ngoài việc được thiết kế để giải quyết các vấn đề với hình ảnh trực quan, CNNcũng có nhiều ứng dụng ngoài nhận dạng và phân tích hình ảnh, bao gồm phân loạihình ảnh, xử lý ngôn ngữ tự nhiên, khám phá thuốc và đánh giá rủi ro sức khỏe
CNN bao gồm những phần lớp cơ bản là:
Convolutional layer:
Đây là lớp quan trọng nhất của CNN, lớp này có nhiệm vụ thực hiện mọi tínhtoán Những yếu tố quan trọng của một convolutional layer là: stride, padding, filtermap, feature map
CNN sử dụng các filter để áp dụng vào vùng của hình ảnh Những filter mapnày được gọi là ma trận 3 chiều, mà bên trong nó là các con số và chúng làparameter
Stride có nghĩa là khi bạn dịch chuyển filter map theo pixel dựa vào giá trị từ trái sang phải Và sự chuyển dịch này chính là Stride Padding: Là các giá trị 0 được thêm vào với lớp input
Feature map: Nó thể hiện kết quả của mỗi lần filter map quét qua input Sau mỗi lầnquét sẽ xảy ra quá trình tính toán
Trang 11Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh (Nguồn: Cadalyst.com) Bộ lọc được sử dụng là một ma trận có kích thước 3x3, bộ lọc này dịch chuyểnlần lượt qua từng vùng ảnh đến khi hoàn thành quét toàn bộ bức ảnh, tạo ra một bức ảnh mới có kích thước nhỏ hơn hoặc bằng với kích thước ảnh đầu vào Kích thước này được quyết định tùy theo kích thước các khoảng trắng được thêm ở viền bức ảnh gốc và được tính theo công thức sau:
O=i+2*p-ks+1Trong đó:
O: kích thước ảnh đầu ra; i: kích thước ảnh đầu vào;
p: kích thước khoảng trắng phía ngoài viền của ảnh gốc;
Nó được sử dụng nhiều cho các nhu cầu huấn luyện mạng neuron thì relumang ưu điểm nổi bật là cài đặt đơn giản, tốc độ xử lý nhanh mà vẫn đảm bảo đượctính toán hiệu quả Phép tính toán của hàm ReLU chỉ đơn giản là chuyển tất cả cácgiá trị âm thành giá trị 0
Trang 12Vị trí lớp ReLU ngay phía sau lớp tích chập (Nguồn: Superdatascience.com)
Với đầu ra là một ảnh mới có kích thước giống với ảnh đầu vào, các giá trị điểmảnh cũng hoàn toàn tương tự, trừ các giá trị âm đã bị loại bỏ
fx=max (0,x)
Pooling layer
Khi đầu vào quá lớn, những lớp pooling layer sẽ được xếp vào giữa giữanhững lớp Convolutional layer để làm giảm parameter (tham số) Hiện nay, poolinglayer có 2 loại chủ yếu là:
Max pooling (lấy giá trị điểm ảnh lớn nhất)
Average pooling (lấy giá trị trung bình của các điểm ảnh trong vùng ảnh cục bộ)
Phương thức Average Pooling và Max Pooling (Nguồn: Springer.com)
Fully connected layer
Lớp này có nhiệm vụ đưa ra kết quả sau khi lớp convolutional layer và poolinglayer đã nhận được ảnh truyền Lúc này, ta thu được kết quả là model đã đọc được
Trang 13thông tin của ảnh và để liên kết chúng cũng như cho ra nhiều output hơn thì ta sửdụng fully connected layer.
Ngoài ra, nếu như fully connected layer có được giữ liệu hình ảnh thì chúng sẽchuyển nó thành mục chưa được phân chia chất lượng Cái này khá giống với phiếubầu rồi chúng sẽ đánh giá để bầu chọn ra hình ảnh có chất lượng cao nhất
Hình ảnh lớp kết nối đầy đủ (Nguồn: Researchgate.com)
Cấu trúc của mạng CNN
Mang CNN là một trong những tập hợp của lớp Convolution bị chồng lên nhau cũngnhư sử dụng hàm nonlinear activation như ReLU và tanh để kích hoạt trọng số trong node.Lớp này sau khi thông qua hàm thì sẽ được trọng số trong các node Những lớp này saukhi đã thông qua hàm kích hoạt thì có thể tạo ra những thông tin trừu tượng hơn cho nhữnglớp tiếp theo
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta cóđược các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả củafilter áp đặt lên một vùng ảnh cục bộ của neuron trước đó
Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàngnghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khácnhư pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại
bỏ các thông tin nhiễu)
Trong quá trình huấn luyện mạng (training) CNN tự động học các giá trị quacác lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh,
Trang 14pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng đểphân lớp ảnh.
Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (LocationInvariance) và tính kết hợp (Compositionality) Nếu như bạn có cùng một đối tượng
mà lại chiếu theo nhiều góc độ khác nhau thì độ chính xác có thể sẽ bị ảnh hưởng Vớichuyển dịch, quay và co giãn thì pooling layer sẽ được sử dụng để giúp làm bất biến nhữngtính chất này Với cùng một đối tượng, nếu đối tượng này được chiếu theo các góc
độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnhhưởng đáng kể Vì vậy, CNN sẽ đưa ra kết quả có độ chính xác tương ứng ở từng môhình
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation),phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp
độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông quaconvolution từ các filter
Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giốngnhư cách con người nhận biết các vật thể trong tự nhiên Mạng CNN sử dụng 3 ý tưởng cơ bản:
Các trường tiếp nhận cục bộ (local receptive field): Lớp này có nhiệm vụ
tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất
Trọng số chia sẻ (shared weights): Lớp này giúp làm giảm tối đa lượng
tham số có tác dụng chính của yếu tố này trong mạng CNN Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp detect một vài feature trong ảnh
Tổng hợp (pooling): Pooling layer là lớp cuối cùng và có tác dụng làm đơn
giản các thông tin đầu ra Có nghĩa là, sau khi đã hoàn tất tính toán và quét qua các lớp thì đến pooling layer để lược bớt các thông tin không cần thiết
Từ đó, cho ra kết quả theo như ý mà người dùng mong muốn
3.2 Ưu điểm
Thuật toán Convolutional neural network đem đến cho người dùng một mô
Trang 15mang đến kết quả hài lòng Ưu điểm của mô hình mạng CNN là tự động học cácđặc trưng của dữ liệu để thiết lập các đặc trưng mới mà không cần bất kỳ sự giámsát nào của con người và có thể phân lớp dữ liệu ảnh chính xác.
3.3 Nhược điểm
CNN không mã hóa vị trí và hướng của đối tượng
Đòi hỏi bộ dữ liệu đưa vào phải có tính đa dạng và độ chính xác cao Khi bộ
dữ liệu ảnh không đạt yêu cầu thì việc dự đoán kết quả sẽ không chính xác
3.4 Quy trình làm việc
Đầu vào của lớp tích chập là hình ảnh
Chọn đối số, áp dụng các bộ lọc với các bước nhảy, padding nếu cần Thực hiện tích chập cho hình ảnh và áp dụng hàm kích hoạt ReLU cho ma trận hình ảnh
Thực hiện Pooling để giảm kích thước cho hình
ảnh Thêm nhiều lớp tích chập sao cho phù hợp
Xây dựng đầu ra và dữ liệu đầu vào thành 1 lớp được kết nối đầy đủ (Full Connected)
Sử dụng hàm kích hoạt để tìm đối số phù hợp và nhận diện hình ảnh
Mô tả quy trình nhận diện hình ảnh ngựa vằn bằng thuật toán CNN (Nguồn: miai.com)
Trang 16CHƯƠNG IV MÃ LỆNH CHƯƠNG TRÌNH
4.1 Đọc dữ liệu, tiền xử lý dữ liệu
*Các thư viện sử dụng trong chương trình
import tensorflow as tf from
tensorflow import keras import
matplotlib.pyplot as plt import
numpy as np
Tensorflow: là thư viện học sâu, có mã nguồn mở, được dùng để tính toán machine
learning với quy mô lớn TensorFlow kết hợp một loạt các mô hình và thuật toánmachine learning cùng deep learning, cho phép tạo một biểu đồ để thực hiện cáctính toán Mỗi nút trong biểu đồ đại diện cho một phép toán và mỗi kết nối đại diệncho dữ liệu Tensorflow cung cấp sẵn hàm để đơn giản hóa việc load dữ liệu
Kiến trúc TensorFlow hoạt động được chia thành 3 phần: Tiền xử lý dữ liệu, Dựngmodel, Huấn luyện và sử dụng model
Keras: là một mã nguồn mở cho deep learning được viết bằng Python Nó có thể
chạy trên nền của các deep learning khác như: tensorflow, theano, CNTK Với cácApplication Programming Interface – giao diện lập trình ứng dụng (API) bậc cao,
dễ sử dụng, dễ mở rộng, Keras giúp người dùng xây dựng các deep learning modelmột cách đơn giản
Matplotlib: là một trong những giải pháp như vậy cho người dùng Python, Để thực
hiện các suy luận thống kê cần thiết, cần phải trực quan hóa dữ liệu Nó là một thưviện vẽ đồ thị rất mạnh mẽ hữu ích cho những người làm việc với Python vàNumPy Module được sử dụng nhiều nhất của Matplotlib là Pyplot cung cấp giaodiện như MATLAB nhưng thay vào đó, nó sử dụng Python và nó là nguồn mở
Numpy: là 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 toá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 ápdụng lên các mảng nhiều chiều đó Nó cung cấp một đối tượng mảng đa chiều hiệu