Tải bản đầy đủ (.docx) (72 trang)

Nhận dạng và ước lượng calo trong thực phẩm luận văn thạc sĩ công nghệ thông tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.52 MB, 72 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
***

NHẬN DẠNG VÀ ƯỚC LƯỢNG CALO
TRONG THỰC PHẨM

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Đồng Nai, năm 2020


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
***

NHẬN DẠNG VÀ ƯỚC LƯỢNG CALO
TRONG THỰC PHẨM
Chuyên ngành Công nghệ thơng tin
Mã số

LUẬN VĂN THẠC SĨ CƠNG NGHỆ THƠNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS.

Đồng Nai, năm 2020


LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn thầy PGS.TS. đã tận


tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện luận văn.
Em cũng xin chân thành cảm ơn đến Ban Giám hiệu và quý thầy/cô trong Khoa
Sau đại học và các thầy/cô giảng dạy lớp 18CC911 đã rất nhiệt tình hướng dẫn, chỉ
dạy cho em từ khi em tham gia học tập tại trường.
Kế đến, em bày tỏ lòng biết ơn đối với gia đình, anh chị em đã ln giúp đỡ,
động viên em hồn thành khóa học.
Em gửi lời cảm ơn chân thành tới tất cả bạn học cùng lớp đã luôn vui vẻ, nhiệt
tình, giúp đỡ lẫn nhau trong suốt quá trình học tập.
Do kiến thức còn hạn chế, nên luận văn khơng tránh khỏi những thiếu sót. Em
rất mong nhận được ý kiến đóng góp của q thầy/cơ và các bạn để luận văn được
hoàn chỉnh hơn.
Em xin chân thành cảm ơn!

Đồng Nai, ngày 28 tháng 11 năm 2020
HỌC VIÊN


LỜI CAM ĐOAN
Tôi xin cam đoan rằng kết quả đạt được trong luận văn này là sản phẩm của
riêng cá nhân dưới sự hướng dẫn của thầy PGS.TS Trần Văn Lăng.
Nội dung được trình bày trong luận văn là của cá nhân, và có tham khảo từ
nhiều nguồn tài liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được
trích dẫn hợp pháp.
Khơng có sản phẩm hay nghiên cứu nào của người khác được sử dụng trong
luận văn mà khơng có trích dẫn theo quy định.
Tơi xin hồn tồn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy
định cho lời cam đoan của mình.
.
Đồng Nai, ngày 28 tháng 11 năm 2020
HỌC VIÊN



TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA SA U ĐẠI HỌ C

TÓM TẮT LUẬN VĂN
(Dùng cho học viên và người hướng dẫn)
Đề tài Nhận dạng và ước lượng calo trong thực phẩm
Ngành Công nghệ thông tin

Mã số

Học viên
Người hướng dẫn PGS.TS.
NỘI DUNG TÓM TẮT
1. Nội dung được giao và kết quả mong đợi của người hướng dẫn
- Thu thập các dữ liệu liên quan nằm trong phạm vi nghiên cứu của luận văn
như Táo, Chuối, Trứng chiên, Cam, Bánh mì, Cà chua, Cà rốt, Khoai lang, Hành tây,
các hình ảnh được chụp với góc độ sáng tối khác nhau, độ tương phản khác nhau để
tăng độ chính xác của nhận dạng.
Các hình ảnh sau đó được đưa vào để làm tập dữ liệu huấn luyện cho mơ hình
nhận dạng thực phẩm trên Tensorflow Keras.
- Nghiên cứu các kiến thức liên quan đến thư viện Tensorflow Keras để ứng
dụng trong việc huấn luyện nhận dạng thực phẩm.
- Nghiên cứu ứng dụng các thuật toán xử lý ảnh trên OpenCV để tách biên
dạng của thực phẩm được chụp từ đó tính tốn calo dựa trên diện tích của bề mặt thực
phẩm trong ảnh và tham chiếu để tính tốn.
- Nghiên cứu phương thức trao đổi dữ liệu trên HTTP giữa nền tảng Android
và Server thơng qua REST API có tên gọi là Postman.
- Thực nghiệm để đánh giá kết quả huấn luyện và tính toán calo.

- Xây dựng phần mềm chạy trên hệ điều hành Android để hiển thị kết quả tính
tốn.
2. Cách thức giải quyết vấn đề
Giải pháp đưa ra để thực hiện bài toán “Nhận dạng và ước lượng calo trong
thực phẩm” được thực hiện theo các bước sau


- Bước 1 Thu thập dữ liệu hình ảnh các thực phẩm trong phạm vi nghiên cứu
của đề tài được chụp và quay video bằng điện thoại. Sau đó hình ảnh được sắp xếp
vào các thư mục ảnh cho từng loại, tên các thư mục chính là tên của thực phẩm để hệ
thống nhận dạng.
- Bước 2 Tạo mơ hình huấn luyện trên Framework Tensorflow và thư viện
Keras.
- Bước 3 Huấn luyện tập dữ liệu để nhận dạng sau đó lấy kết quả để tính tốn
cho các bước tiếp theo.
- Bước 4 Xây dựng mơ hình xử lý hình ảnh để lấy biên dạng, trong bước này
mơ hình sẽ cho ra kết quả là diện tích của tham chiếu và diện tích của thực phẩm theo
pixel. Sau đó, căn cứ vào tỷ lệ giữa diện tích tham chiếu theo pixel và diện tích thực
tế của vật được tham chiếu để tính diện tích thực tế của thực phẩm.
- Bước 5 Hiển thị kết quả tính calo cho thực phẩm được lấy dữ liệu thông qua
+ Tên của thực phẩm (được lấy từ mơ hình huấn luyện để phân biệt các loại
thực phẩm với nhau)
+ Lượng calo (được tính dựa vào mơ hình xử lý ảnh và cơng thức tính tốn
calo).
- Bước 6 Xây dựng ứng dụng chạy trên hệ điều hành Android, tạo giao thức
để truyền đạt dữ liệu giữa Android client và server, hiện kết quả ước lượng calo từ
ảnh chụp./.
Đồng Nai, ngày 28 tháng 11 năm 2020
NGƯỜI HƯỚNG DẪN


PGS.TS.

HỌC VIÊN


MỤC LỤC
Trang
LỜI CẢM ƠN
LỜI CAM ĐOAN
TÓM TẮT LUẬN VĂN
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
DANH MỤC BẢNG
DANH MỤC CÁC HÌNH ẢNH
DANH MỤC BIỂU ĐỒ
Chương 1. TỔNG QUAN ................................................................................ 1
1.1. Mở đầu ...................................................................................................... 1
1.2. Mục tiêu của luận văn ............................................................................... 3
1.3. Phạm vi và đối tượng nghiên cứu ............................................................. 3
1.3.1. Phạm vi nghiên cứu ........................................................................... 3
1.3.2. Đối tượng nghiên cứu ........................................................................ 3
1.4. Phương pháp nghiên cứu........................................................................... 3
1.4.1. Phương pháp nghiên cứu lý thuyết .................................................... 4
1.4.2. Phương pháp thực nghiệm ................................................................. 4
1.5. Ý nghĩa khoa học và thực tiễn của luận văn ............................................. 4
1.5.1. Ý nghĩa khoa học ............................................................................... 4
1.5.2. Ý nghĩa thực tiễn ............................................................................... 5
1.6. Cấu trúc luận văn ...................................................................................... 5
Chương 2. LÝ THUYẾT VỀ NHẬN DẠNG VÀ XỬ LÝ ẢNH .................... 7
2.1. Nhận dạng thực phẩm ............................................................................... 7
2.1.1. Mạng nơ ron tích chập ....................................................................... 7



2.1.2. Tensorflow - Keras .......................................................................... 11
2.1.2.1. Tensorflow ..............................................................................................11
2.1.2.2. Keras .........................................................................................................15
2.1.2.3. Tensorflow kết hợp Keras ...................................................................18
2.2. Ước lượng calo........................................................................................ 20
2.2.1. Quá trình xử lý ảnh .......................................................................... 20
2.2.2. Một số thuật tốn trong xử lý ảnh.................................................... 21
2.2.2.1. Thuật toán Otsu......................................................................................21
2.2.2.2. Thuật toán Canny ..................................................................................24
2.3. Giao thức HTTP trong truyền tải dữ liệu giữa Client và Server............. 26
Chương 3. XÂY DỰNG HỆ THỐNG PHẦN MỀM NHẬN DẠNG VÀ ƯỚC
LƯỢNG CALO.............................................................................................. 30
3.1. Tổng quan về hệ thống ............................................................................ 30
3.1.1. Mô tả hệ thống ................................................................................. 30
3.1.2. Môi trường và ngôn ngữ cài đặt cho hệ thống................................. 33
3.2. Mơ hình huấn luyện ................................................................................ 34
3.2.1. Bộ dữ liệu ........................................................................................ 34
3.3.2. Mơ hình nhận dạng thực phẩm ........................................................ 36
3.3. Mơ hình xử lý ảnh ước lượng calo .......................................................... 41
3.3.1. Xác định kích thước đĩa và kích thước thực phẩm .......................... 42
3.3.2. Tính tốn ước lượng calo ................................................................. 44
3.3.2.1. Tính thể tích thực phẩm .......................................................................45
3.3.2.2. Tính khối lượng của thực phẩm ........................................................46
3.4. Ứng dụng Android .................................................................................. 48
3.5. Kết quả thực nghiệm ............................................................................... 50


3.5.1. Mơ hình nhận dạng .......................................................................... 50

3.5.2. Mơ hình tính toán ước lượng calo ................................................... 51
3.5.3. Ứng dụng Android ........................................................................... 52
Chương 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI .................... 54
4.1. Kết quả đạt được ..................................................................................... 54
4.1.1. Nhận dạng ........................................................................................ 54
4.1.2. Ước lượng calo ................................................................................ 54
4.1.3. Xây dựng ứng dụng Android cho nhận dạng và tính tốn Calo ...... 54
4.2. Hạn chế ................................................................................................... 54
4.3. Hướng phát triển đề tài ........................................................................... 55
TÀI LIỆU THAM KHẢO


DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
STT

Ký hiệu viết tắt

Nội dung viết tắt

1

CNN

Convolutional Neural Network

2

ReLU

Rectified Linear Unit


3

XLA

Xử lý ảnh

4

HTTP

Hyper Text Transfer Protocol

5

REST

Representational State Transfer

6

API

Application Programming Interface

7

TCP/IP

Transmission Control Protocol/Internet

Protocol


DANH MỤC BẢNG
Trang
Bảng 3.1. Khối lượng riêng và lượng calo trên 100g thực phẩm ................................ 47
Bảng 3.2. Hình ảnh kết quả thực nghiệm sau khi viết bằng ngôn ngữ Python.......... 51
Bảng 3.3. Bảng kết quả thực nghiệm .............................................................................. 52


DANH MỤC CÁC HÌNH ẢNH
Trang
Hình 2.1. Kiến trúc cơ bản của một mạng tích chập.............................................................. 8
Hình 2.2. Ví dụ bộ lọc tích chập được sử dụng trên ma trận điểm ảnh ................................. 8
Hình 2.3. Trường hợp thêm/khơng thêm viền trắng vào ảnh khi tích chập ........................... 9
Hình 2.4. Phương thức Avarage Pooling và Max Pooling .................................................. 11
Hình 2.5. Hình ảnh một Graph phụ thuộc và cách tính tốn ............................................... 13
Hình 2.6. Hoạt động của Tensorflow [14] ........................................................................... 13
Hình 2.7. Mơ hình một Graph khởi tạo ............................................................................... 15
Hình 2.8. Ví dụ về mơ hình Sequential................................................................................ 16
Hình 2.9. Ví dụ về mơ hình Sequential thêm lớp ................................................................ 17
Hình 2.10. Các thư viện học sâu được phát triển bởi các hãng công nghệ lớn [15] ............ 18
Hình 2.11. Các framework cho h ọc sâu [16] ....................................................................... 19
Hình 2.12. Lược đồ các giai đoạn xử lý ảnh........................................................................ 20
Hình 2.13. Lược đồ xám của ảnh [17] ................................................................................. 22
Hình 2.14 Hình ảnh phân ngưỡng xám theo Global threshold ............................................ 23
Hình 2.15. Ảnh phân ngưỡng khi thêm thuật tốn Otsu. ..................................................... 23
Hình 2.16. Quy trình phát hiện biên dựa trên thuật tốn Canny .......................................... 24
Hình 2.17. Hướng gradient .................................................................................................. 25
Hình 2.18. Ảnh xác định biên bằng thuật tốn Canny ......................................................... 26

Hình 2.19. Sơ đồ hoạt động của giao thức HTTP................................................................ 26
Hình 2.20. Giao diện Postman ............................................................................................. 27
Hình 2.21. Tạo request trong Postman ................................................................................ 28
Hình 2.22. Kết quả trả về sau khi thực hiện yêu cầu trên công cụ Postman........................ 29
Hình 3.1. Mơ hình tổng quan về trao đổi dữ liệu trong hệ thống ........................................ 30
Hình 3.2. Luồng hoạt động của hệ thống............................................................................. 33
Hình 3.3. Các loại thực phẩm trong bộ huấn luyện ............................................................. 34
Hình 3.4. Hình ảnh dữ liệu huấn luyện ................................................................................ 35
Hình 3.5. Hình ảnh dữ liệu bài tốn sử dụng ImageDatagenerator ..................................... 36
Hình 3.6. Hình ảnh Model summary ................................................................................... 37
Hình 3.7. Hình ảnh diễn giải mơ hình huấn luyện ............................................................... 38
Hình 3.8. Quy trình thực hiện huấn luyện dữ liệu ............................................................... 39
Hình 3.9. Hình ảnh q trình huấn luyện............................................................................. 40
Hình 3.10. Kích thước đĩa tiêu chuẩn .................................................................................. 42


Hình 3.11. Quy trình thực hiện lấy biên dạng đĩa................................................................ 43
Hình 3.12. Quy trình xác định kích thước thực phẩm ......................................................... 44
Hình 3.13. Màn hình chính của ứng dụng ........................................................................... 48
Hình 3.14. Hình ảnh giao diện ứng dụng khi nhận kết quả tính tốn .................................. 49
Hình 3.15. Kết quả nhận dạng một số loại thực phẩm......................................................... 50
Hình 3.16. Hình ảnh kết quả cân thực phẩm để lấy khối lượng thực tế. ............................. 52
Hình 3.17. Kết quả thể hiện trên ứng dụng.......................................................................... 53


DANH MỤC BIỂU ĐỒ
Trang
Đồ thị 3.1. Train accuracy và loss accuracy ........................................................................ 41



1

Chương 1. TỔNG QUAN
1.1. Mở đầu
Bài tốn nhận dạng hình ảnh đã được biết đến từ lâu và đã được ứng dụng rộng
rãi trong nhiều ngành, nghề. Nhiều cơng trình nghiên cứu khoa học về nhận dạng
hình ảnh đã được cơng bố, từ các cơng trình sớm về xử lý ảnh đơn thuần - Image
processing, đến các cơng trình khoa học về xử lý ảnh dựa trên phương pháp máy họcMachine learning và cho đến gần đây những cơng trình khoa học được cơng bố về xử
lý nhận dạng hình ảnh bằng phương pháp học sâu - Deep learning machine. Với
phương pháp học sâu các nhà nghiên cứu đã chứng minh rằng nó là một ưu điểm để
ứng dụng phân tích cho các dữ liệu lớn trong nhiều trường hợp như xử lý ảnh, nhận
dạng giọng nói, tìm kiếm vật thể… Trong các cơng trình ứng dụng học sâu để nhận
dạng có cơng trình về nhận dạng thực phẩm và hoa quả như Cơng trình nghiên cứu
của tác giả Kawano và Yanai “Nhận dạng hình ảnh thực phẩm dựa trên tính năng học
sâu” [1]. Cơng trình nghiên cứu “Nhận dạng và phân loại hoa quả trong ảnh màu” tác
giả Nguyễn Đắc Thành [2].
Với sự phát triển của xã hội, các ứng dụng máy học sâu sau này được ứng
dụng nhiều hơn để cải thiện giá trị thực phẩm, giúp con người có sức khỏe tốt hơn.
Một bữa ăn lành mạnh, đủ dinh dưỡng được tính đến cho mỗi người trong xã hội khi
mà thời đại công nghệ thông tin không ngừng phát triển. Hơn nữa, một khuynh hướng
mà con người trong xã hội có thể gặp phải đó là hiện tượng thừa cân, béo phì, do chế
độ ăn uống hàng ngày.
Trước đó hiện tượng thừa cân, béo phì thường xuất hiện ở các nước Châu Âu,
và một số khu vực Châu Mỹ thì đến bây giờ khơng những ở các nước và khu vực nói
trên, nơi tỷ lệ béo phì ở người trưởng thành dao động lên đến 30-40%, mà ngay cả
ở những nước đang phát triển, thừa cân béo phì đang có xu hướng tăng nhanh và có
khuynh hướng gia tăng nhanh hơn nữa trong những thập niên tới và dẫn đề nhiều hệ
lụy khác. Nhiều nghiên cứu đã chỉ ra rằng một số bệnh có liên quan đến lượng calo
quá mức trong con người [3].
Vì vậy, theo dõi thói quen ăn uống hàng ngày để tránh lượng calo dư thừa đã

trở thành một vấn đề quan trọng trong việc duy trì chất lượng tốt của cuộc sống.


2
Trong [4] tác giả và cộng sự đã phát hiện ra rằng ung thư vú, đại tràng và tuyến
tiền liệt là do cao lượng calo. Lượng calo cao được tìm thấy chỉ đứng thứ hai sau
thuốc lá trực tiếp gây ung thư.
Hơn nữa, trong báo cáo kết quả của hội nghị dinh dưỡng thành phố Hồ Chí
Minh [5] đã cho thấy một chế độ ăn uống phù hợp với lượng calo đủ sẽ giúp mọi
người tăng tuổi thọ và giảm nguy cơ mắc các bệnh liên quan đến tuổi.
Lượng calo cao trong thực phẩm kém bổ dưỡng dẫn đến viêm toàn thân và
giảm insulin, cũng như một cụm bất thường chuyển hóa, bao gồm béo phì, tăng huyết
áp, rối loạn lipid máu và glucose không dung nạp [6].
Để hỗ trợ mọi người theo dõi lượng calo mà họ nạp vào hàng ngày nhiều cơng
trình nghiên cứu của các tác giả nước ngoài đã được hiện và cũng đạt nhiều kết quả
khả quan. Các ứng dụng công nghệ được nghiên cứu có thể giúp người dùng theo dõi
mức tiêu thực phẩm và tăng cường nhận thức trong ăn uống bằng cách theo dõi các
thói quen sử dụng thực phẩm của họ.
Trong những năm gần đây nhiều cơng trình nghiên cứu của nước ngoài đã
chứng minh rằng kỹ thuật máy học và thị giác máy tính có thể giúp xây dựng các hệ
thống để tự động nhận biết các loại thực phẩm khác nhau.
Như cơng trình nghiên cứu theo dõi hoạt động trên video để nghiên cứu về
bệnh béo phì [7]. Cơng trình sử dụng camera để theo dõi hoạt động ăn uống hàng
ngày của cá nhân. Thông qua lượng calo cung cấp và lượng calo sử dụng được ghi
lại từ đó đánh giá lượng calo tiêu thụ của mỗi người.
Trong nghiên cứu này các tác giả đã thực hiện thí nghiệm bằng cách gắn
camera vào trước ngực của đối tượng nghiên cứu sau đó theo dõi dựa trên hình ảnh
camera ghi lại từ họ sau đó gửi về máy tính thơng qua một USB. Điều này là rất khó
khăn khi áp dụng cho nhiều đối tượng và các đối tượng ở nhiều vị trí khác nhau.
Cơng trình [8] “Nhận dạng thực phẩm dựa trên phương pháp học sâu”. Trong

cơng trình nghiên cứu tác giả sử dụng các giải pháp học sâu và mạng nơ ron tích chập
để xây dựng một hệ thống nhận dạng thực phẩm. Hệ thống đã giải quyết được một số
vấn đề như phân loại và truy xuất tên thực phẩm, dựa vào thực phẩm đã quy định sẵn
lượng calo sau đó hệ thống theo dõi lượng thực phẩm tiêu thụ hàng ngày của mỗi
người làm thí nghiệm. Trong cơng trình này các tác giả cũng đã thực hiện việc nhận


3
dạng thực phẩm và theo dõi lượng tiêu thụ calo, tuy nhiên tác giả mới chỉ dừng lại ở
việc xác định thực phẩm và lượng calo có sẵn được quy định trong từng thực phẩm.
Ngồi ra cịn nhiều cơng trình khác như
Cơng trình nghiên cứu Hệ thống nhận dạng thực phẩm với Kernel học của tác
giả Taichi Joutou, Keiji Yanai, 12/2009 [9];
Cơng trình nghiên cứu Nhận dạng nhiều hình ảnh thực phẩm bằng cách tìm
kiếm theo vùng [10];
Cơng trình nghiên cứu Tự động nhận dạng thực phẩm sử dụng tính năng SPIN
cho hệ thống thực phẩm [11];
Trong các nghiên cứu trên các tác giả và cộng sự đều xây dựng một hệ thống
nhận dạng thực phẩm và ước lượng thực phẩm trong các bữa ăn. Tuy nhiên các cơng
trình trên đều sử dụng video để theo dõi các cá nhân được nghiệm, việc theo dõi
bằng camera rất khó để ứng dụng hàng loạt;
Để giúp con người có thể tiếp cận được một giải pháp tốt hơn trong việc kiểm
soát được lượng calo nạp vào cơ thể mỗi ngày, luận văn trình bày về “Nhận dạng và
ước lượng calo trong thực phẩm” với mục tiêu thông qua việc nhận dạng thực phẩm
sẽ ước tính được lượng calo có trong thực phẩm, từ đó tự kiểm sốt được lượng thức
ăn cần thiết cho con người mỗi ngày.
1.2. Mục tiêu của luận văn
Xây dựng ứng dụng chạy trên hệ điều hành Android để nhận dạng thực phẩm
và tính lượng calo của thực phẩm.
1.3. Phạm vi và đối tượng nghiên cứu

1.3.1. Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu nhận dạng và ước lượng các thực phẩm được
bày trên đĩa và tách rời từng món. Khơng nhận dạng và ước lượng calo trong thực
phẩm hỗn hợp.
1.3.2. Đối tượng nghiên cứu
Đối tượng nghiên cứu của luận văn gồm Táo, Chuối, Bánh mì, Trứng.
1.4. Phương pháp nghiên cứu


4
Phương pháp nghiên cứu trong luận văn là nghiên cứu lý thuyết kết hợp với
mơ hình trên ngơn ngữ Python và các thư viện để ứng dụng xử lý nhận dạng thực
phẩm. Dữ liệu đầu vào để tính tốn là những hình ảnh được chụp trên các thiết bị di
động, kế thừa các kết quả của các nghiên cứu trước để so sánh.
1.4.1. Phương pháp nghiên cứu lý thuyết
- Tham khảo nhiều tài liệu liên quan đến vấn đề nhận dạng dùng mạng nơ
ron tích chập với Framework Tensorflow. Đồng thời tham khảo các tài liệu liên quan
đến xử lý ảnh như thuật toán Otsu và thuật toán Canny để phát hiện cạnh;
- Tham khảo các bài báo đã được cơng bố trong vấn đề xử lý hình ảnh và
nhận dạng;
- Thu thập các dữ liệu thực phẩm phục vụ cho bài toán;
- Tham khảo các tài liệu liên quan đến ứng dụng các thư viện Keras và
OpenCV trong nhận dạng và xử lý ảnh;
- Tham khảo tài liệu liên quan về hệ điều hành Android để xây dựng ứng
dụng để giao tiếp dữ liệu giữa Android app và Server.
1.4.2. Phương pháp thực nghiệm
- Xây dựng một mơ hình nhận dạng và xử lý ảnh trên Python dựa trên các
thư viện cho học sâu Keras và thư viện OpenCV;
- Tính toán và ước lượng calo trong thực phẩm dựa vào hình ảnh chụp từ
các thiết bị di động;

- Xây dựng ứng dụng trên hệ điều hành Android để hiển thị kết quả nhận
dạng và lượng calo của thực phẩm nhận dạng;
- So sánh kết quả ước lượng trên ứng dụng và kết quả thực tế.
1.5. Ý nghĩa khoa học và thực tiễn của luận văn
1.5.1. Ý nghĩa khoa học
Thực hiện kết hợp giữa Framework Tensorflow, Framework tốt nhất trong
nhận dạng hình ảnh và thư viện Keras để đạt được được kết quả nhận dạng tốt hơn;
Xử lý hình ảnh đã đạt được các kết quả tuy nhiên ước lượng calo từ hình
ảnh thực phẩm cịn phụ thuộc vào nhiều yếu tố như góc độ chụp, khoảng cách chụp,
độ sáng tối…;


5
Xây dựng ứng dụng cho người dùng có thể kiểm soát lượng thực phẩm ăn
trong ngày;
Trong tương lai hướng phát triển của luận văn sẽ tối ưu các thuật toán để
nhận dạng tính tốn được chính xác hơn.
1.5.2. Ý nghĩa thực tiễn
Mơ hình ứng dụng trên Android có thể giúp người dùng biết được lượng
calo trong thực phẩm mà luận văn đã nghiên cứu.
Luận văn là sự kết hợp của việc nhận dạng và xử lý ảnh là tiền đề cho các
nghiên cứu tiếp theo đối với bộ dữ liệu lớn hơn.
Đồng thời là cơ sở để phát triển những ứng dụng cung cấp thông tin dinh
dưỡng đầy đủ giúp cho các mỗi cá nhân có thể sử dụng để kiểm sốt lượng calo và
các thơng tin dinh dưỡng khác được nạp vào mỗi ngày và nâng cao chất lượng cuộc
sống, đảm bảo sức khỏe.
1.6. Cấu trúc luận văn
Luận văn được chia làm 4 chương
Chương 1. Tổng quan
Nêu lý do chọn đề tài, mục tiêu, đối tượng, phạm vi nghiên cứu, phương pháp

nghiên cứu và ý nghĩa của đề tài
Chương 2. Lý thuyết về nhận dạng và xử lý ảnh
- Trình bày các kiến thức lý thuyết liên quan đến đề tài Mạng nơ ron tích chập,
thư viện Tensorflow, thư viện Keras;
- Một số thuật toán trong xử lý ảnh, thuật toán Otsu, thuật toán Canny;
- Hệ thống giao tiếp dữ liệu giữa Client và Server.
Chương 3. Xây dựng hệ thống phần mềm nhận dạng và ước lượng calo
- Chương này trình bày về hệ thống nhận dạng hình ảnh, phương pháp xử lý
ảnh OpenCV để tính tốn calo trên ngôn ngữ Python;


6
- Mơ hình giao tiếp dữ liệu giữa ứng Android trong nhận dạng và ước lượng
calo với Server.
Chương 4. Kết luận và hướng phát triển đề tài
Trình bày về kết quả đạt được của luận văn, so sánh với dữ liệu thực tế và đưa
ra kết luận và kiến nghị.
Để thực hiện được những mục tiêu được trình bày ở trên, luận văn tập trung
giải quyết một số nhiệm vụ sau
- Tìm hiểu các kiến thức về Mạng nơ ron tích chập, Tensorflow và thư viện
Keras, trong nhận dạng hình ảnh thực phẩm;
- Tìm hiểu một số thuật tốn trong xử lý ảnh thuật tốn Otsu, thuật tốn Canny
để tính toán ước lượng calo trong thực phẩm;
- Nghiên cứu phương thức trao đổi dữ liệu trên HTTP giữa nền tảng Android
và Server tạo REST API, thông qua công cụ Postman;
- Thu thập dữ liệu để huấn luyện nhận dạng các thực phẩm bằng cách chụp từ
hình ảnh thực tế của thực phẩm, ngoài dữ liệu đã được duyệt theo đề cương, để cải
thiện mức độ chính xác của mơ hình, luận văn có sử dụng thêm một số thực phẩm
như Cam, Hành tây, Khoai lang, Cà rốt, Cà chua;
- Huấn luyện dữ liệu bằng mạng nơ ron tích chập (CNN - Convolutional Neural

Network) được viết bằng ngôn ngữ Python, trên cơ sở Framework của Tensorflow và
thư viện học sâu của Keras;
- Sử dụng thuật toán xử lý ảnh trên Python, OpenCV để lấy biên dạng và tách
thực phẩm trên đĩa. Từ đó tính tốn diện tích của thực phẩm qua ảnh chụp và ước
lượng calo dựa vào thể tích và khối lượng riêng của từng thực phẩm;
- Xây dựng ứng dụng trên hệ điều hành Android giao tiếp với server để liên kết
dữ liệu.


7

Chương 2. LÝ THUYẾT VỀ NHẬN DẠNG VÀ XỬ LÝ ẢNH
Để đạt được mục tiêu và thực hiện những nhiệm vụ của luận văn. Luận văn đã
giải quyết các vấn đề gồm
- Nhận dạng thực phẩm;
- Uớc lượng calo từ ảnh chụp;
- Tạo giao thức HTTP trong truyền tải dữ liệu giữa client và server.
2.1. Nhận dạng thực phẩm
Để nhận dạng thực phẩm, luận văn sử dụng mạng nơ ron tích chập với
Framework Tensorflow và Keras.
2.1.1. Mạng nơ ron tích chập
Mạng nơ ron tích chập là một trong những mơ hình mạng học sâu phổ biến
nhất hiện nay, với khả năng nhận dạng và phân loại hình ảnh lớn và có độ chính xác
cao, trong nhiều trường hợp khả năng nhận dạng của mạng còn tốt hơn con người.
Hiện nay, mơ hình mạng nơ ron tích chập đã và đang được phát triển rộng rãi, và ứng
dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các
mục đích khác nhau như các thuật tốn tự động gắn thẻ, tìm kiếm ảnh hoặc đưa ra
gợi ý sản phẩm cho người tiêu dùng.
Mạng CNN ra đời dựa trên ý tưởng sự cải tiến về cách thức học thông tin
trong ảnh của các mạng nơron nhân tạo truyền. Do sử dụng các (fully-connected

layer) liên kết đầy đủ giữa các điểm ảnh vào node, các mạng nơron nhân tạo truyền
thẳng (Feedforward Neural Network) bị hạn chế rất nhiều bởi kích thước của ảnh,
kích thước ảnh càng lớn thì số lượng liên kết giữa các điểm càng tăng nhanh và kéo
theo sự bùng nổ khối lượng tính tốn xử lý hình ảnh. Ngồi ra sự liên kết đầy đủ này
cũng là nguyên nhân của sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể
hiện qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà khơng
quan tâm nhiều đến các điểm ảnh ở cách xa nhau. Sự ra đời của mạng CNN với kiến
trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh
kết nối đến nút trong lớp tiếp theo thay vì tồn bộ ảnh như trong mạng nơ ron truyền
thẳng.


8
Kiến trúc Mạng nơron tích chập
Các lớp cơ bản trong một mạng CNN bao gồm lớp tích chập
(Convolutional), lớp kích hoạt phi tuyến ReLU (Rectified Linear Unit), lớp lấy mẫu
(Pooling) và Lớp kết nối đầy đủ (Fully-connected), được thay đổi về số lượng và cách
sắp xếp để tạo ra các mơ hình huấn luyện phù hợp cho từng bài tốn khác nhau.

Hình 2.1. Kiến trúc cơ bản của một mạng tích chập
- Lớp tích chập
Đây là thành phần quan trọng nhất trong mạng CNN, cũng là nơi thể hiện
tư tưởng xây dựng sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh. Các liên
kết cục bộ này được tính tốn bằng phép tích chập giữa các giá trị điểm ảnh trong
một vùng ảnh cục bộ với các bộ lọc (filters) có kích thước nhỏ.

Hình 2.2. Ví dụ bộ lọc tích chập được sử dụng trên ma trận điểm ảnh


9

Trong ví dụ ở Hình 2.2 [12], ta thấy bộ lọc được sử dụng là một ma trận
kích thước 3x3. Bộ lọc này được dịch chuyển lầ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 bên
dưới

�=

�+ 2 ∗ � − �
s

+1

Trong đó
-

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 ngồi viền của ảnh gốc
k kích thước bộ lọc
s bước trượt của bộ lọc

Hình 2.3. Trường hợp thêm/khơng thêm viền trắng vào ảnh khi tích chập
Như vậy, sau khi đưa một bức ảnh đầu vào cho lớp tích chập ta nhận được
kết quả đầu ra là một loạt ảnh tương ứng với các bộ lọc đã được sử dụng để thực hiện
phép tích chập. Các trọng số của các bộ lọc này được khởi tạo ngẫu nhiên trong lần
đầu tiên và sẽ được cải thiện dần xun suốt q trình huấn luyện.
- Lớp kích hoạt phi tuyến ReLU



10
Lớp này được xây dựng với ý nghĩa đảm bảo tính phi tuyến của mơ hình
huấn luyện sau khi đã thực hiện một loạt các phép tính tốn tuyến tính qua các lớp
tích chập. Lớp kích hoạt phi tuyến nói chung sử dụng các hàm kích hoạt phi tuyến
như ReLU hoặc sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu
ra. Trong số các hàm kích hoạt này, hàm ReLU được chọn do cài đặt đơn giản, tốc
độ xử lý nhanh mà vẫn đảm bảo được tính tốn hiệu quả. Cụ thể, phép tính tốn của
hàm ReLU chỉ đơn giản là chuyển tất cả các giá trị âm thành giá trị 0.
(�) = max(0, �)
Thông thường, lớp ReLU được áp dụng ngay phía sau lớp tích chập, 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ỏ.
- Lớp lấy mẫu
Một thành phần tính tốn chính khác trong mạng CNN là lấy mẫu (Pooling),
thường được đặt sau lớp tích chập và lớp ReLU để làm giảm kích thước kích thước
ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào. Việc
giảm kích thước dữ liệu có tác dụng làm giảm được số lượng tham số cũng như tăng
hiệu quả tính tốn. Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để quét toàn bộ các
vùng trong ảnh tương tự như lớp tích chập, và thực hiện phép lấy mẫu thay vì phép
tích chập tức là ta sẽ chọn lưu lại một giá trị duy nhất đại diện cho tồn bộ thơng tin
của vùng ảnh đó.
Hình 2.4 thể hiện các phương thức lấy mẫu thường được sử dụng nhất hiện
nay, đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá
trị trung bình của các điểm ảnh trong vùng ảnh cục bộ) [13].


11

Hình 2.4. Phương thức Avarage Pooling và Max Pooling

Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu ta thu được một ảnh
đầu ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc
trưng cần thiết cho q trình tính tốn sau này.
- Lớp kết nối đầy đủ
Lớp kết nối đầy đủ này được thiết kế hoàn toàn tương tự như trong mạng
nơron truyền thống, tức là tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp
tiếp theo. So với mạng nơron truyền thống, các ảnh đầu vào của lớp này đã có kích
thước được giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng cho
việc nhận dạng. Do vậy, việc tính tốn nhận dạng sử dụng mơ hình truyền thẳng đã
khơng cịn phức tạp và tốn nhiều thời gian như trong mạng nơ ron truyền thống.
2.1.2. Tensorflow - Keras
2.1.2.1. Tensorflow
TensorFlow (https //www.tensorflow.org) là một thư viện phần mềm,
được phát triển bởi nhóm Google Brain Team trong nghiên cứu về lĩnh vực trí tuệ
nhân tạo của Google, nhằm mục đích thực hiện nghiên cứu học máy và học sâu.
TensorFlow sau đó sử dụng đại số kết hợp để tính tốn, tối ưu hóa, giúp dễ dàng tính
tốn nhiều biểu thức tốn học giúp rút ngắn thời gian thực hiện tính tốn.
Tensorflow hoạt động dựa trên nguyên lý đồ thị dòng chảy dữ liệu.
TensorFlow cho phép t ạ o ra dataflow graph, c ấ u trúc mô t ả làm th ế nào d ữ liệ u có
thể di chuy ể n qua m ột bi ểu đồ, hay m ột chu ỗi các nút đ ang x ử lý. M ỗi nút trong đồ


×