You are on page 1of 23

BANKING ACADEMY

ADVANCED PROGRAM

BÀI TẬP LỚN


TRÍ TUỆ NHÂN TẠO TRONG KINH DOANH

Ứng dụng Computer Vision trong nhận diện các


loại bánh trong cửa hàng bánh

Giảng viên hướng dẫn: Bùi Thị Hồng Nhung


Class: K23-CLC TCA
Students: 1. Đặng Trung Anh
2. Vũ Quốc Khánh
3. Vũ Anh Quân
4. Trần Minh Tuấn
5. Nguyễn Thành Vinh

Hà Nội, ngày 10 tháng 4 năm 2023


MỤC LỤC
CHƯƠNG I: PHÁT BIỂU BÀI TOÁN................................................................3
1. Lý do lập bài toán.....................................................................................3
2. Phát biểu bài toán..................................................................................4
CHƯƠNG 2: CHUẨN BỊ DỮ LIỆU...................................................................5
1. Cách thức thu thập dữ liệu.......................................................................5
2. Xác định các kiểu dữ liệu ảnh cần thu thập.............................................5
2.1. QuickBread........................................................................................5
2.2. YeastBread.........................................................................................5
2.3. Scone..................................................................................................6
2.4. Muffin................................................................................................6
2.5. Loaf....................................................................................................7
CHƯƠNG 3: GIỚI THIỆU TỔNG QUAN THUẬT TOÁN...............................8
1. Định nghĩa................................................................................................8
1.1. Convolutional....................................................................................8
1.2. Feature...............................................................................................8
2. Các lớp cơ bản của CNN..........................................................................9
2.1. Convolutional Layer..........................................................................9
2.2. Pooling Layer...................................................................................10
2.3. Relu layer.........................................................................................10
2.4. Fully connected layer.......................................................................10
3. Cấu trúc mạng CNN...............................................................................11
3.1. Local receptive field........................................................................12
3.2. Shared weight and bias....................................................................12
3.3. Pooling layer....................................................................................12
4. Cách chọn tham số cho CNN.................................................................13
4.1. Số Convolution Layer......................................................................13
4.2. Filter Size.........................................................................................13
4.3. Pooling Size.....................................................................................13
4.4. Train Test.........................................................................................13
5. Ứng dụng của CNN................................................................................13

1
5.1. Classification...................................................................................14
5.2. Localization.....................................................................................15
5.3. Detection..........................................................................................15
5.3.1. Segmentation................................................................................16
CHƯƠNG IV: CÁC BƯỚC CHẠY MÔ HÌNH................................................17
1. Cài đặt Google Colab..................................................................................17
2. Chuẩn bị dữ liệu........................................................................................17
3. Tạo thư mục dự án......................................................................................18
4. Upload tập dữ liệu ảnh................................................................................18
5. Tạo file Colab notebook trên Google Drive................................................19
6. Khai báo các thư viện sử dụng....................................................................19
7. Kết nối GG Drive để đọc file và lưu file.....................................................19
8. Khai báo đường dẫn đến 2 thư mục chứa ảnh............................................19
9. Gác nhãn mác.............................................................................................19
10. Chuẩn hóa dữ liệu ảnh..............................................................................20
11. Đọc dữ liệu................................................................................................20
12. Xây dựng mô hình.....................................................................................20
13.Thiết lập các tham số để huấn luyện mô hình............................................21
14. Huấn luyện mô hình..................................................................................21
15. Sử dụng mô hình.......................................................................................21

2
CHƯƠNG I: PHÁT BIỂU BÀI TOÁN
1. Lý do lập bài toán
Trong thời đại công nghệ 4.0, Trí tuệ nhân tạo (Artificial Intelligence - AI)
đóng vai trò quan trọng trong đời sống con người. AI là một công nghệ giúp cho
cuộc sống của con người trở nên tiện lợi và thông minh hơn. Nhờ vào AI, các
công cụ đã giúp cho con người thực hiện được các nhiệm vụ phức tạp và giải
quyết được các vấn đề cần thiết. Các ví dụ điển hình như hệ thống nhận dạng
khuôn mặt, trợ lý ảo, dịch thuật tự động,... Tất cả đều giúp cho cuộc sống của
con người trở nên dễ dàng hơn và tiết kiệm thời gian.

Trong lĩnh vực kinh doanh, các quốc gia tiên tiến như Mỹ, Nhật Bản,
Trung Quốc đã áp dụng AI vào kinh doanh một cách rộng rãi. Đặc biệt là trong
việc phát triển các ngành công nghiệp mới, tạo ra nhiều sản phẩm tiên tiến, cải
thiện chất lượng sản phẩm, nâng cao năng suất lao động,... Nhờ vào AI, các
công ty đã giảm thiểu được chi phí sản xuất, tối ưu hoá quy trình kinh doanh và
đẩy nhanh quá trình tiến hóa kinh tế.

Tại Việt Nam, AI đang dần được ứng dụng trong các lĩnh vực kinh doanh
khác nhau. Tuy nhiên, thương mại kinh doanh qua sự trợ giúp của AI tại Việt
Nam vẫn đang ở giai đoạn phát triển ban đầu. Các doanh nghiệp cần có chính
sách và chiến lược phù hợp để tận dụng tối đa tiềm năng của AI trong kinh
doanh. Việc áp dụng AI vào thương mại kinh doanh giúp các doanh nghiệp tối
ưu hóa hoạt động kinh doanh, đẩy nhanh quá trình sản xuất, tạo ra nhiều sản
phẩm chất lượng cao và đáp ứng nhu cầu ngày càng tăng của khách hàng.

Với những tiềm năng và cơ hội phát triển, thương mại kinh doanh qua sự
trợ giúp của AI tại Việt Nam đang trở thành một trong những xu hướng phát
triển kinh tế mới của đất nước. Việc đầu tư vào nghiên cứu và phát triển công
nghệ AI, tạo ra các sản phẩm và dịch vụ mới sử dụng công nghệ AI sẽ đóng vai
trò quan trọng trong việc đưa Việt Nam tiến sâu hơn vào thế giới kinh doanh và

3
công nghiệp 4.0. Tuy nhiên, để đạt được thành công trong lĩnh vực này, các
doanh nghiệp cần đưa ra chiến lược và kế hoạch rõ ràng, phù hợp với nhu cầu
thị trường và sự phát triển của công nghệ.

Với mục đích đưa những tiến bộ công nghệ vào phục vụ cho cuộc sống,
nhóm em đã chọn đề tài báo cáo: "Ứng dụng Computer Vision trong nhận diện
các loại bánh Âu trong cửa hàng tự phục vụ". Hy vọng kết quả của đề tài này có
thể đóng góp phần giải quyết vấn đề tìm kiếm và lựa chọn sản phẩm cho khách
hàng, đồng thời tăng cường hiệu quả hoạt động kinh doanh của cửa hàng. Bằng
việc sử dụng các thuật toán nhận diện ảnh và trí tuệ nhân tạo, hệ thống sẽ giúp
xác định chính xác loại bánh Âu cụ thể mà khách hàng muốn mua.

2. Phát biểu bài toán

Yêu cầu đặt ra của bài toán nghiệp vụ là xây dựng một hệ thống nhận diện
hình ảnh các loại bánh mì âu trong cửa hàng bánh tự phục vụ. Hệ thống này sẽ
giúp cho khách hàng dễ dàng tìm kiếm và lựa chọn các sản phẩm bánh mì mà
họ mong muốn.

Mục tiêu của bài toán là tạo ra một thuật toán nhận diện và phân loại các
loại bánh mì Âu dựa trên hình ảnh chụp trong cửa hàng. Quá trình này sẽ được
thực hiện bằng cách sử dụng công nghệ Computer Vision để xử lý và phân tích
các đặc trưng của các loại bánh mì. Kết quả cuối cùng là một hệ thống nhận
diện chính xác và đáng tin cậy, giúp cho khách hàng có trải nghiệm mua sắm tốt
hơn.

4
CHƯƠNG 2: CHUẨN BỊ DỮ LIỆU
1. Cách thức thu thập dữ liệu 
Nhóm em đã cố định là các loại bánh: YeastBread, Scone, QuickBread,
Muffin, Loaf. Để làm được điều này, có thể thông qua việc sử dụng các cổng
thông tin và những công cụ tìm kiếm (search engine).
Nhóm đã sử dụng công cụ tìm kiếm Google Search. Công cụ này sử dụng các
Bot dò tìm và tạo chỉ mục (index) các trang Web trên Internet, xây dựng cơ sở
dữ liệu tìm kiếm cho các máy chủ của mình, khi có người truy cập và thực hiện
tìm kiếm, kết quả tìm kiếm sẽ được lấy ra từ đây. Bằng cách này, nhóm có thể
tìm kiếm những hình ảnh liên quan đến các từ khóa nhằm mục đích nghiên cứu
của nhóm
2. Xác định các kiểu dữ liệu ảnh cần thu thập

2.1. QuickBread

Bánh mì thường chỉ có hai thành phần chính là bột và nước, không có bất kỳ
đường hoặc bơ. Thành phần tùy chọn là men, khi bỏ thêm thành phần này, bánh
mì cần qua quá trình ủ nở lên men. Bánh mì ổ mà chúng mình hay ăn kèm với
pate thịt chính là đại diện của loại bánh này.

5
2.2. YeastBread

Dù cũng có bột, nước, bơ, đường, nhưng bánh mì nhanh lại không dùng men.
Bánh sử dụng chất hóa học gây tác dụng nở nhanh thay vì ủ và lên men tự nhiên
như hai loại bánh mì trên. Nhờ vậy mà kết cấu bánh cũng mềm hơn, không dai
như bánh mì nở bằng men tự nhiên.

2.3. Scone

Là một loại bánh nướng, thường được làm bằng lúa mì hoặc bột yến mạch với
bột nở làm chất tạo men và được nướng trên chảo tấm. Bánh có hình dáng đa
dạng với kích thước nhỏ như hình nón, tròn, lục giác đều, vuông. Bạn cũng có
thể phết mứt, táo, nho khô, các loại hạt ăn kèm với bánh.  

6
2.4. Muffin

Muffins là những chiếc bánh có kích thước nhỏ và có dạng hình cốc. Bánh
không mềm, có độ đặc, nặng, xốp và không phủ kem. Bánh muffins khá được
ưa chuộng nhờ khả năng biến hóa linh hoạt trong thành phần với những mùi vị
khác nhau. Chúng ta có thể làm muffins ngọt hoặc mặn tùy khẩu vị và mục đích
làm ra.

2.5. Loaf

Đây là
loại
bánh có
dạng
hình
khối
chữ nhật, tạo ra một ổ bánh lớn và có thể thêm nguyên liệu mặn hoặc ngọt rồi
đem nướng. Công thức phổ biến bao gồm các nguyên liệu: bột mì, bột nở, kem
tươi, kem bơ, trứng, đường. Khi thưởng thức, bạn thường cắt lát chúng ra và ăn
kèm với mứt.

7
CHƯƠNG 3: GIỚI THIỆU TỔNG QUAN THUẬT TOÁN
1. Định nghĩa
Convolutional Neural Network (CNN) được tạm dịch là: Mạng nơ ron tích tụ.
Đây được xem là một trong những mô hình trong deep learning. Nó là một tập
hợp các thuật toán với mô hình dữ liệu trừu tượng cao sử dụng nhiều lớp xử lý
cấu trúc phức tạp. Nói một cách đơn giản, CNN là một loại mạng nơ-ron sâu
được sử dụng phổ biến nhất để phân tích hình ảnh trực quan.CNN cho phép bạn
xây dựng các hệ thống thông minh với độ chính xác rất cao. CNN hiện được sử
dụng rộng rãi để phát hiện đối tượng trong ảnh. Và kiến thức cụ thể về CNN
được giải thích như

1.1. Convolutional

Đây là một loại cửa sổ trượt trên ma trận. Các lớp tích chập đã học các tham số
để điều chỉnh mà không cần lựa chọn tính năng để có được thông tin chính xác
nhất. Tích chập là phép nhân các phần tử trong một ma trận. Cửa sổ trượt, còn
được gọi là feature detect, kernel, filter là một loại ma trận nhỏ

1.2. Feature

Feature nghĩa là đặc điểm, đặc trưng, CNN so sánh hình ảnh từng chút một và
những đoạn này được gọi là đặc điểm. Thay vì khớp các hình ảnh, CNN nhận ra
sự giống nhau bằng cách tìm kiếm đại khái các đặc điểm khớp với hai hình ảnh
tốt hơn. Mỗi feature được coi là một hình thu nhỏ. tức là một mảng 2D nhỏ. Tất
cả các tính năng này giải quyết các khía cạnh cụ thể của hình ảnh và có thể phù
hợp với nhau.  
Phân loại hình ảnh trong CNN liên quan đến việc lấy hình ảnh làm đầu vào, xử
lý chúng và phân loại chúng thành một danh mục cụ thể (ví dụ:chó, mèo, lợn,
gà…). Máy tính xem một hình ảnh dưới dạng một mảng pixel, mảng pixel phụ
thuộc vào độ phân giải của hình ảnh. Được xác định bởi ba tham số h x w x d
trong đó h là chiều cao (height), w là chiều rộng (width) và d là kích thước
8
(dimensions), dựa trên độ phân giải của hình ảnh. Ví dụ: Ảnh 6x6x3 (3 đại diện
cho giá trị RGB (ảnh màu)), ảnh 4x4x1 (1 đại diện cho ảnh thang độ xám (ảnh
đen trắng)). 

            6x6x3

 Về mặt kỹ thuật, các mô hình (model) CNN được đào tạo và thử nghiệm trong
deep learning, và mỗi hình ảnh đầu vào phải đi qua các lớp tích chập như: Nó sử
dụng các bộ lọc (Kernals), fully connected layers (FC), pooling và sử dụng các
hàm kích hoạt để phân loại các đối tượng có giá trị xác suất từ 0 đến 1.  

2. Các lớp cơ bản của CNN

2.1. 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ính
toán. Những yếu tố quan trọng của một convolutional layer là

9
Filter map: Nếu ANN được liên kết với từng pixel trong ảnh đầu vào, thì CNN
có thể được áp dụng cho các vùng của ảnh bằng bộ lọc. Bản đồ bộ lọc này có
thể được xem dưới dạng ma trận ba chiều của các số và con số là Parameter. 
Stride: trong CNN, Stride được hiểu là khi chúng ta di chuyển Filter Map theo
Pixel và dựa vào những giá trị được sắp xếp từ trái sang phải. 
Padding: Đây chính là những giá trị 0 được thêm vào lớp Input.
Feature Map: Đây là kết quả hiển thị sau mỗi lần Filter Map quét qua Input,
dựa vào đó bạn sẽ thấy sự xuất hiện của quá trình tính toán được xảy ra.

2.2. Pooling Layer

Nếu giá trị đầu vào quá lớn, những lớp PL sẽ được sắp xếp vào giữa những lớp
Cl để làm giảm thiểu parameter. Hiện tại, yếu tố này có 2 loại chủ yếu là: max
pooling và average.

2.3. Relu layer

Relu layer là một hàm kích hoạt trong Neural Network. Lớp này còn có tên gọi
khác là Activation Function. Công việc chính của hàm này là sao chép lại các
Nơ-ron có tỷ lệ truyền xung qua Axon. Trong đó, relu layer bao gồm các hàm
cơ bản như: Sigmoid, Tanh, Relu, Leaky Relu, Maxout.
Hàm relu ngày nay được sử dụng rộng rãi. Đặc biệt, Relu có thể hỗ trợ tính toán
nhanh chóng nên nó rất được mọi người ưa chuộng sử dụng khi xây dựng mạng
nơ-ron.
Khi sử dụng Relu, bạn cần chú ý tùy chỉnh các Learning Rate và theo dõi Dead
Unit. Lớp Relu này được sử dụng sau khi Filter Map tính toán và áp dụng hàm
này lên các giá trị trên Filter Map.

2.4. Fully connected layer

Lớp FcL có nhiệm vụ cung cấp kết quả sau khi lớp convolutional layer và
pooling layer nhận được thông tin hình ảnh được gửi. Lúc này, ta có kết quả là

10
mô hình đã đọc thông tin trong hình ảnh và chúng tôi sử dụng fully connected
layer để nối chúng để tạo ra nhiều đầu ra hơn.
Ngoài ra, nếu như fully connected layer có được dữ liệu hình ảnh, nó sẽ được
chuyển đổi thành chất lượng không phân đoạn. Điều này rất giống với việc bình
chọn và được đánh giá để chọn ra những hình ảnh có chất lượng cao nhất. 
3. Cấu trúc mạng CNN
Mạng CNN là một tập hợp con của các lớp tích chập kích hoạt dư thừa trọng số
nút bằng cách sử dụng các hàm kích hoạt phi tuyến tính như ReLU và tanh. Lớp
này được tính trọng số với một nút sau khi truyền chức năng. Các lớp này sau
khi đi qua chức năng kích hoạt có thể sinh ra nhiều thông tin trừu tượng hơn cho
lớp tiếp theo.
Các mô hình CNN có các tích phân bất biến và kết hợp. Chiếu cùng một đối
tượng từ các góc độ khác nhau có thể ảnh hưởng đến độ chính xác. Pooling
layer được sử dụng để dịch, xoay và chia tỷ lệ để làm cho các thuộc tính này
không thay đổi. Do đó, CNN báo cáo kết quả chính xác tương ứng cho từng mô
hình. 
Trong số đó, lớp tổng hợp cung cấp các bất biến dịch, chia tỷ lệ và xoay. Kết
nối cục bộ sử dụng tính trừu tượng với các bộ lọc gấp để hiển thị thông tin từ
cấp độ đại diện, cấp thấp đến cấp cao. Mô hình CNN có các lớp liên kết với
nhau dựa trên cơ chế convolution
Các lớp tiếp theo là kết quả của phép tích chập từ lớp trước, vì vậy chúng tôi có
được các kết nối cục bộ tốt nhất. Vì vậy, mỗi nơron trong lớp tiếp theo được tạo
từ kết quả bộ lọc được áp dụng cho vùng hình ảnh cục bộ của nơron trước đó.
Trong khi đào tạo mạng, CNN sẽ tự động học các giá trị thông qua các lớp bộ
lọc dựa trên hiệu suất của người dùng.
Bằng cách đào tạo mạng, các lớp CNN sẽ tự động học các giá trị được đại diện
bởi các lớp filter
Với CNN, bạn cần chú ý đến hai góc độ là: Location Invariance (tính bất biến)
và Compositionality (tính kết hợp). Nếu cùng một đối tượng được chiếu theo

11
các góc độ khác nhau (Translation, Rotation, Scaling) thì sự chính xác của thuật
toán sẽ bị ảnh hưởng theo chiều hướng tiêu cực.

Thao tác di chuyển, xoay hoặc chia tỷ lệ được sử dụng để giữ nguyên các thuộc
tính khác. Do đó, trong mô hình của chúng tôi, CNN cho kết quả với độ chính
xác khá cao.
Cấu trúc cơ bản của CNN gồm 3 phần chính:

3.1. 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. 

3.2. Shared weight and bias

Chức năng chính của lớp này là hỗ trợ bạn làm giảm tối đa số lượng những
tham số trong mạng CNN. Vì trong mỗi Convolution sẽ bao gồm các Feature
Map khác nhau, mỗi Feature Map lại giúp Detect một vài Feature trong ảnh.

3.3. Pooling layer 

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. 

12
4. Cách chọn tham số cho CNN
Để chọn được các tham số cho Convolutional Neural Network chuẩn nhất, bạn
cần lưu ý đến các số lượng ở 4 yếu tố sau: số Convolution Layer, Filter Size,
Pooling Size và cách Train Test.

4.1. Số Convolution Layer

Lớp số Convolution Layer càng nhiều thì chương trình của bạn chạy càng được
cải thiện. Khi sử dụng các Layer với một số lượng lớn, các tác động có thể được
giảm một cách đáng kể. Có thể sau 3 đến 4 Layer thì bạn đã có được kết quả
mong muốn.

4.2. Filter Size

Phần lớn các Filter Size thường có kích thước là 3×3 hoặc 5×5

4.3. Pooling Size

Đối với các loại ảnh thông thường sẽ có kích thước là 2×2, tuy nhiên nếu đầu
vào hình ảnh của bạn lớn thì có thể sử dụng Pooling Size 4×4 để đảm bảo chất
lượng cho ảnh.

4.4. Train Test

Cần thực hiện Train Test nhiều lần để so sánh các kết quả với nhau. Điều này
giúp bạn có được các Parameter tốt nhất.
Về cơ bản, Convolutional Neural Network mang đến cho bạn những mô hình
chất lượng cao. Tuy nhiên, để hiểu và sử dụng thuật toán này lại không mấy dễ
dàng với tất cả mọi người, đặc biệt là những người mới tiếp xúc với CNN lần
đầu.
5. Ứng dụng của CNN
Mặc dù CNN chủ yếu được sử dụng để giải quyết các vấn đề về thị giác máy
tính, nhưng điều quan trọng là phải đề cập đến khả năng giải quyết các vấn đề
13
học tập khác của chúng, chủ yếu liên quan đến sản phẩm của chuỗi dữ liệu. Ví
dụ:

CNN hoạt động tốt với các chuỗi âm thanh, văn bản và video và có thể được kết
hợp với các kiến trúc mạng khác hoặc chuyển đổi thành hình ảnh mà CNN có
thể xử lý. Các vấn đề dữ liệu cụ thể mà CNN có thể giải quyết bằng chuỗi dữ
liệu bao gồm dịch văn bản máy, xử lý ngôn ngữ tự nhiên và gắn thẻ khung hình
video.  

5.1. Classification

Đây là nhiệm vụ nổi tiếng nhất trong thị giác máy tính. Ý tưởng chính là phân
loại nội dung chung của hình ảnh thành một tập hợp các danh mục được gọi là
nhãn. Ví dụ:
Phân loại cho phép bạn xác định xem một hình ảnh là chó, mèo hay động vật
khác. Việc phân loại này được thực hiện bằng cách đưa ra xác suất mà hình ảnh
thuộc về mỗi lớp, như thể hiện trong hình bên dưới. 

14
5.2. Localization

Mục đích chính của localization là tạo một hộp giới hạn thể hiện vị trí của một
đối tượng trong một hình ảnh. Đầu ra bao gồm nhãn lớp và hộp giới hạn. Hành
động này có thể được sử dụng với các cảm biến để xác định xem một đối tượng
ở bên trái hay bên phải màn hình. 

5.3. Detection

Nhiệm vụ này bao gồm thực hiện localization cho tất cả các đối tượng trong
ảnh. Đầu ra chứa nhiều hộp giới hạn và nhiều nhãn lớp (mỗi nhãn một hộp).
Nhiệm vụ này được sử dụng để chế tạo một chiếc xe tự lái. Mục đích của nó là

15
tìm các biển báo giao thông, đường, phương tiện khác, người đi bộ và các đối
tượng phù hợp khác để đảm bảo trải nghiệm lái xe an toàn. 
 

5.3.1. Segmentation

Nhiệm vụ của chúng tôi là xuất cả nhãn lớp và đường viền cho từng đối tượng
có trong ảnh. Nó chủ yếu được sử dụng để đánh dấu các đối tượng quan trọng
trong ảnh để phân tích thêm. Ví dụ: Nhiệm vụ này có thể được sử dụng để phân
định rõ ràng các vùng tương ứng với khối u trong hình ảnh phổi của bệnh nhân.
Hình minh họa sau đây cho thấy cách các đường bao và nhãn của đối tượng
đích được hiển thị. 

16
CHƯƠNG IV: CÁC BƯỚC CHẠY MÔ HÌNH
1. Cài đặt Google Colab
- Đăng nhập Gmail, truy cập vào Drive
- Kích chọn My Drive/ chọn More/ chọn Connect more apps/ tại ô tìm kiếm
gõ Colaboratory/ kích chọn biểu tượng Colaboratory/ chọn Install và cài đặt
theo hướng dẫn.

2. Chuẩn bị dữ liệu
Thu thập dữ liệu ảnh gồm 5 loại sản phẩm Loaf, Muffin, QuickBread, Scone
và YeastBread lưu trong máy tính, giả sử tại thư mục D:\ComputerVision-
Banhmy\Data và hai thư mục con Train và Validation; Mỗi loại sản phẩm
tương ứng một thư mục trong đó có 100 ảnh Train, 25 ảnh Validation.

17
3. Tạo thư mục dự án
- Đăng nhập Gmail, truy cập vào Drive
- Kích chọn My Drive/ chọn New folder

- Đặt tên thư mục là ComputerVisionBanhMy/ chọn CREATE.


4. Upload tập dữ liệu ảnh
- Kích đúp chuột mở thư mục ComputerVisionBanhMy.
- Kích chuột phải tại vùng trống của thư mục, chọn Upload folder

18
- Chọn đường dẫn tới thư mục Data đã tạo ra, chọn thư mục Data, kích chọn
Tải lên.
- Kết quả tất cả các thư mục và ảnh chứa trong thư mục Data được tải lên
Drive, trong thư mục ComputerVision-Banhmy.
5. Tạo file Colab notebook trên Google Drive
- Kích chọn My Drive/ chọn More/ chọn Colaboratory.

Đặt tên cho tệp colab mới là ComputerVisonBanhMy


6. Khai báo các thư viện sử dụng
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt 
import numpy as np

7. Kết nối GG Drive để đọc file và lưu file


from google.colab import drive
drive.mount ('/content/drive/') 

8. Khai báo đường dẫn đến 2 thư mục chứa ảnh


Việc khai báo đường dẫn đến 2 thư mục để huấn luyện và kiểm định mô hình
import os 
train_image_files_path = "/content/drive/MyDrive/data vip/Train"
valid_image_files_path = "/content/drive/MyDrive/data
vip/Validation"

19
9. Gác nhãn mác
Ảnh được gán tên và thứ tự các nhãn tương ứng với tên và thứ tự các thư mục
chứa ảnh huấn luyện và kiểm định.
label =['Loaf','Muffin','QuickBread','Scone','YeastBread'] 

10. Chuẩn hóa dữ liệu ảnh


Chuẩn hóa dữ liệu ảnh về 0:1 –rescale
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_data_gen = ImageDataGenerator(rescale=1/255) 
validation_data_gen = ImageDataGenerator(rescale=1/255)

11. Đọc dữ liệu


Đọc hai dữ liệu train, validation và gán nhãn tương ứng với cấu trúc của các thư
mục con
train_generator = train_data_gen.flow_from_directory(
    train_image_files_path,
    target_size =(100,100),
    class_mode='categorical')
validation_generator = validation_data_gen.flow_from_directory(
    valid_image_files_path,
    target_size =(100,100),
    class_mode='categorical')

12. Xây dựng mô hình


from keras.models import Sequential
from keras.layers import Dense, Dropout, Conv2D, MaxPooling2D,
Flatten
model = tf.keras.models.Sequential()
#lớpCNN1
model.add(Conv2D(40,
(3,3),activation='relu',input_shape=(100,100,3)))
model.add(MaxPooling2D(2,2))
#lớpCNN2
model.add(Conv2D(80,(3,3),activation='relu'))
model.add(MaxPooling2D(2,2))
#lớpCNN3

20
model.add(Conv2D(160,(3,3),activation='relu'))
model.add(MaxPooling2D(2,2))
#lớpCNN4
model.add(Conv2D(160,(3,3),activation='relu'))
model.add(MaxPooling2D(2,2))
#chuyển dữ liệu đầu ra của mạng CNN từ mảng 2 chiều về mảng 1 chiều
model.add(Flatten())
#lớp ẩn
model.add(Dense(512, activation = tf.nn.relu))
#lớp output
model.add(Dense(5, activation = tf.nn.softmax)) # 5 đầu ra

13.Thiết lập các tham số để huấn luyện mô hình


from tensorflow.keras.optimizers import Adam
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(learning_rate=0.002),
              metrics=['acc'])

14. Huấn luyện mô hình


 EPOCHS=120
history=model.fit(
    train_generator,
    steps_per_epoch=3,
    epochs=EPOCHS,
    verbose=1,
    validation_data = validation_generator,
    validation_steps=3)

15. Sử dụng mô hình


from google.colab import files
from keras.preprocessing import image
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib. image as mpimg
uploaded=files.upload()
for fn in uploaded.keys():
  path='/content/' + fn

21
  plt.imshow(mpimg.imread(path))
  img=image.load_img(path,target_size=(100,100))
  x=image.img_to_array(img)
  x=np.expand_dims(x,axis=0)
  images=np.vstack([x])
  y_predict = model.predict(images,batch_size=10)
print(y_predict)
print('Giá trị dự đoán:', label[np.argmax(y_predict)])

Kết quả:

22

You might also like