Tải bản đầy đủ (.doc) (31 trang)

ĐỒ ÁN CHUYÊN NGÀNH 2 ĐỀ TÀI : HỆ THỐNG GỢI Ý SỞ THÍCH THỜI TRANG (FASHION RECOMMENDATIONSYSTEM). Giảng viên hướng dẫn : TS. LÊ VĂN MINH

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.49 MB, 31 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT – HÀN

KHOA KĨ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ

ĐỒ ÁN CHUYÊN NGÀNH 2

ĐỀ TÀI : HỆ THỐNG GỢI Ý SỞ THÍCH THỜI
TRANG (FASHION RECOMMENDATION
SYSTEM)

Sinh viên thực hiện

: NGƠ QUANG MINH
NGUYỄN QUỐC TOÀN

Giảng viên hướng dẫn

: T.S LÊ VĂN MINH

Lớp

: 17IT2

Đà Nẵng, tháng 5 năm 2021


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT – HÀN

KHOA KĨ THUẬT MÁY TÍNH VÀ ĐIỆN TỬ



ĐỒ ÁN CHUYÊN NGÀNH 2

ĐỀ TÀI : HỆ THỐNG GỢI Ý SỞ THÍCH
THỜI TRANG (FASHION
RECOMMENDATION SYSTEM)

Đà Nẵng, tháng 5 năm 2021


LỜI CẢM ƠN
Sau một thời gian học tập và nghiên cứu đề tài “Hệ thống gợi ý sở thích thời
trang” chúng em đã không ngừng được củng cố, mở mang thêm nhiều kiến thức và
tầm hiểu biết về lĩnh vực Công nghệ Thông tin qua sự dạy dỗ, đào tạo tận tình của các
thầy cơ bộ mơn trong khoa cơng nghệ thông tin và sự học hỏi lẫn nhau giữa bạn bè
cùng khóa.
Thơng qua bản báo cáo này, chúng em xin được gửi lời chân thành cảm ơn đến
Ban Giám Hiệu Trường và cùng các thầy cô trong khoa đã tạo những điều kiện tốt
nhất cho chúng em trong suốt thời gian học tập và sinh hoạt tại trường; xin chân thành
cảm ơn thầy Lê Văn Minh, giáo viên phụ trách hướng dẫn chúng em tận tình trong
suốt quá trình thực hiện đề tài này.
Chúng em xin chân thành cảm ơn q thầy cơ đã nhiệt tình giảng dạy, truyền đạt
những kiến thức, kinh nghiệm quý báu và hơn hết là tình cảm mà q thầy cơ đã dành
cho chúng em trong suốt quá trình giảng dạy.
Mặc dù cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng
chắc chắn sẽ không tránh khỏi những thiếu sót. Chúng em rất mong nhận được sự
thơng cảm, góp ý và tận tình chỉ bảo của thầy, cơ và tất cả các bạn để đề tài ngày càng
hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!



NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………………………………


MỤC LỤC
LỜI CẢM ƠN..............................................................................................................3
CHƯƠNG 1. GIỚI THIỆU..........................................................................................1
1. Giới thiệu đề tài.........................................................................................................1
2. Mục tiêu.................................................................................................................... 1
3. Yêu cầu.....................................................................................................................2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT.............................................................................3
4. Cơng nghệ được sử dụng...........................................................................................3
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ...............................................................13

5. Đào tạo dữ liệu........................................................................................................13
6. Tập dữ liệu..............................................................................................................15
7. Phương pháp và tiếp cận kỹ thuật............................................................................15
CHƯƠNG 4. XÂY DỰNG HỆ THỐNG...................................................................22
8. Thử nghiệm hệ thống đề xuất thời trang..................................................................22
KẾT LUẬN................................................................................................................23
TÀI LIỆU THAM KHẢO..........................................................................................24


MỤC LỤC HÌNH ẢNH
Hình 1: Phát hiện quần áo.............................................................................................1
Hình 2: Trường tiếp nhận cục bộ...................................................................................8
Hình 3: Tạo ra neuron ẩn đầu tiên.................................................................................8
Hình 4: Tạo neuron ẩn thứ 2..........................................................................................9
Hình 5: xác định một feature map.................................................................................9
Hình 6: Tạo max-pooling............................................................................................10
Hình 7: tất cả các lớp lại với nhau thành một CNN gồm các neuron...........................11
Hình 8: Hình ảnh đen trắng đại diện............................................................................13
Hình 9: Confusion Matrix Plot....................................................................................14
Hình 10: Kiến trúc mạng ResNet................................................................................14
Hình 11 : Nhận dạng sự kiện bằng cách sử dụng phát hiện đối tượng.........................17
Hình 12: Phát hiện đối tượng cho quần áo..................................................................18
Hình 13: Kết quả quần áo tương tự cho đám tang.......................................................20
Hình 14: Hình ảnh cắt.................................................................................................21
Hình 15: Hình lật ngẫu nhiên......................................................................................21
Hình 16: Mẫu quần ảo thử nghiệm..............................................................................22
Hình 17: Mẫu áo thun thử nghiệm...............................................................................23


CHƯƠNG 1. GIỚI THIỆU

1.

Giới thiệu đề tài
Hệ thống gợi ý (Recommender systems hoặc Recommendation systems) là một

dạng của hệ hỗ trợ ra quyết định, cung cấp giải pháp mang tính cá nhân hóa mà khơng
phải trải qua q trình tìm kiếm phức tạp. Hệ gợi ý học từ người dùng và gợi ý các sản
phẩm tốt nhất trong số các sản phẩm phù hợp.
Một hệ thống đề xuất được sử dụng để đề xuất sản phẩm cho khách hàng bằng
cách sử dụng thông tin về khách hàng, về khách hàng khác hoặc về sản phẩm có thể dự
đốn khách hàng sẽ thích gì. Các hệ thống đề xuất tạo ra doanh thu lớn hơn cho các
trang web thương mại điện tử nếu các đề nghị đó là tốt.
Phát hiện đối tượng là một phần quan trọng của khuyến nghị thời trang trực
quan. Các phương pháp truyền thống để phát hiện đối tượng bao gồm lấy các mơ tả
tính năng như Histogram of Oriented Gradients (HOG), Speeded Up Robust Feature
(SURF), Scale Invariant Feature Transform (SIFT),...
Một cách tiếp cận mới để xác định các sự kiện được đưa ra một hình ảnh và nhận
ra quần áo mà mọi người mặc trong hình ảnh bằng cách sử dụng phát hiện đối tượng.

Hình 1: Phát hiện quần áo

2.

Mục tiêu
Tìm hiểu và xây dựng Hệ thống gợi ý sở thích thời trang có những tính năng cơ

bản sau:
1



Hệ thống gợi ý một giải pháp thay thế hữu ích cho thuật tốn tìm kiếm vì chúng
giúp người dùng khám phá các mục mà họ có thể chưa tìm thấy

3.

Yêu cầu
Hệ thống gợi ý (Recommender Systems) được ứng dụng rất thành cơng trong dự

đốn sở thích/thói quen của người dùng dựa vào sở thích/thói quen của họ trong q
khứ. Hệ thống gợi ý đang được ứng dụng trong rất nhiều lĩnh vực khác nhau như
thương mại điện tử (hỗ trợ bán hàng trực tuyến), giải trí (gợi ý phim ảnh, bài hát,..),
giáo dục đào tạo (gợi ý nguồn tài ngun học tập, nghiên cứu,..). Chính vì khả năng
ứng dụng rộng rãi của nó, Hệ thống gợi ý mở ra nhiều tiềm năng trong nghiên cứu
cũng như trong xây dựng các hệ thống thực tế, đặc biệt là các hệ thống hỗ trợ người
dùng ra quyết định.
Đây là những lợi ích có thể nhận được từ việc sử dụng các hệ thống khuyến nghị:
 Tăng lòng trung thành của khách hàng bằng cách gửi đề nghị dựa trên
nhu cầu cụ thể của khách hàng.
 Doanh thu tăng.
 Sự hiểu biết về những gì khách hàng thực sự cần.
 Nhu cầu cho các sản phẩm mới bằng cách thêm vào đề xuất.
3.1

Đối tượng người dùng
 Tất cả mọi người

3.2

Phạm vi
Phạm vi thực hiện đồ án dựa trên những kiến thức thu được từ những mơn học


trong q trình học tập tại trường và tham khảo thêm một số tài liệu bên ngoài đề bổ
sung thêm kiến thức nhằm hoàn thiện đồ án tốt hơn đáp ứng được mục tiêu của đồ án.

2


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
4.

Công nghệ được sử dụng

Các công nghệ sau đã được sử dụng cho dự án:
 Tensorflow
 NumPy
 Fastai
 Annoy
 Google Colab
4.1

Tensorflow
Tensorflow là một thư viện máy học mã nguồn mở để tính tốn số hiệu suất cao.

Nó hiện được sử dụng phổ biến cho thị giác máy tính, xử lý ngơn ngữ tự nhiên, phân
tích dự đoán và nhiều ứng dụng khác như vậy. Tensorflow, khởi đầu là DistBelief,
được phát triển bởi nhóm Google Brain để sử dụng tại Google và có bản phát hành đầu
tiên vào năm 2015. Tensorflow hoạt động bằng cách sử dụng đồ thị có hướng, trong đó
các nút đại diện cho phép tính và các cạnh đại diện cho tensors. Tensor là một ma trận
n chiều và là đơn vị tính tốn cơ bản trong Tensorflow.
Một lợi thế lớn của việc sử dụng Tensorflow là nó có thể được triển khai trên

không chỉ Đơn vị xử lý đồ họa (GPU) mà còn cả Đơn vị xử lý trung tâm (CPU) và
Đơn vị xử lý căng thẳng (TPU). Nó cũng cho phép kiểm tra các mơ hình. Nghĩa là,
chúng ta có thể đào tạo một mơ hình trong một thời gian, dừng nó lại, thực hiện đánh
giá trên mơ hình và sau đó bắt đầu đào tạo lại từ điểm kiểm tra. Tensorboard cũng cho
phép trực quan hóa nhật ký đào tạo và đánh giá cũng như trực quan hóa đồ thị tính
tốn. Scikit-learning là một thư viện học máy dựa trên Python khác.
Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phép TensorFlow xây
dựng được nhiều neural network. Nó cịn cho phép bạn tính tốn song song trên nhiều
máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các
dataflow graph – đồ thị luồng dữ liệu để dựng nên các model.
Kiến trúc TensorFlow hoạt động được chia thành 3 phần:
-

Tiền xử lý dữ liệu
3


-

Dựng model

-

Train và ước tính model

Tensor đại diện cho các loại dữ liệu được đưa vào trong Tensorflow. Mỗi thuộc
tính trong tensor sẽ có những đặc điểm và tính năng khác nhau. Để giúp bạn hiểu hơn
về Tensorflow, Bizfly sẽ giới thiệu ngay đến bạn những thuộc tính cơ bản sau đây:



Rank: Trong các cấu trúc dữ liệu, thuộc tính bậc được hiểu một cách đơn giản
chính là sự phân cấp bậc và là căn cứ cho việc phân loại các tensor. Mỗi tensor
khi được phân bậc sẽ có tên gọi khác nhau, cụ thể bậc 0 là Scalar, bậc 1 là
Vector bậc 2 là Matrix, các bậc cao hơn nữa sẽ được gọi là n-tensor.



Shape: Đây là thuộc tính chiều của tensor các cấu trúc dữ liệu.



Type: Kiểu dữ liệu của các element và là thuộc tính type duy nhất có trong
tensor. Một tensor chỉ có một loại type duy nhất cho tồn bộ các element có
trong tensor. Vì vậy mà cấu trúc dữ liệu có tính thống nhất.

4.1.1

Các thành phần chính trong thư viện Tensorflow

Để có thể tạo ra và sử dụng TensorFlow cơ bản thì cần phân chia chúng thành 2
phần chính là: Construction Phase-nó được hiểu là một mơ hình tính tốn và phần tử
thứ 2 bạn có thể đề cập là: Execution Phase. Nó sẽ được hiểu là chạy mơ hình vừa mới
được xây dựng xong.Trong đó, thì các bước sẽ được thực hiện ở một chương trình
TensorFlow bao gồm các bước cần thực hiện là:
-

Bước 1: Xuất TensorFlow bằng những thuật toán>Import TensorFlow as if. Thực
tế, thì nó sẽ cho thấy rằng TensorFlow thường sử dụng các ngơn ngữ lập trình
Python cho mục đích phục vụ lập trình; tuy nhiên nó khơng có sẵn trong đó bởi vậy
mà khi sử dụng thì ngơn ngữ lập trình cần phải xuất TensorFlow.


-

Bước 2: Bạn cần thực hiện xây dựng chương trình tốn học để có thể tính hàm F.
Phương trình bao gồm một vài thơng tin như: X và y còn được gọi là những nút
mạng hoặc biến số, ở đó 2 là hằng số khơng đổi. Khi dựa vào quy định về nhu cầu
xây dựng của phương trình trên thì bạn sẽ có thể thực hiện dựa theo 3 phương trình
tốn hoặc bằng nhiều cách khác nhau.

-

Bước 3: Tiến hành chạy mơ hình mà bạn xây dựng bằng việc tạo thêm được hàm
tính tốn khác cho việc lập giá trị biến số X và Y nhằm tìm kiếm đáp án cho hàm F.
4


Tiếp đó, điều bạn cần làm tiếp theo là sử dụng hàm Global variable Initializer để có
thể khởi tạo cho các biến trong thuật tốn đó.
Với 3 bước áp dụng như trên thì việc xây dựng một chương trình đơn giản sẽ mang lại
tác dụng lớn đối với TensorFlow khi tính tốn và cả nghiên cứu.
4.1.2 Cách thức hoạt động
TensorFlow cho phép các lập trình viên 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 1 biểu đồ, hay 1 sê-ri các node đang xử lý. Mỗi
node trong đồ thị đại diện 1 operation toán học, và mỗi kết nối hay edge giữa các node
là 1 mảng dữ liệu đa chiều, hay còn được gọi là ‘tensor’.
TensorFlow cung cấp tất cả những điều này cho lập trình viên theo phương thức
của ngơn ngữ Python. Vì Python khá dễ học và làm việc, ngồi ra cịn cung cấp nhiều
cách tiện lợi để ta hiểu được làm thế nào các high-level abstractions có thể kết hợp
cùng nhau. Node và tensor trong TensorFlow là các đối tượng Python, và các ứng dụng
TensorFlow bản thân chúng cũng là các ứng dụng Python.

Các operation toán học thực sự thì khơng được thi hành bằng Python. Các thư viện
biến đổi có sẵn thơng qua TensorFlow được viết bằng các binary C++ hiệu suất cao.
Python chỉ điều hướng lưu lượng giữa các phần và cung cấp các high-level abstraction
lập trình để nối chúng lại với nhau.Các ứng dụng TensorFlow có thể chạy trên hầu hết
mọi mục tiêu thuận tiện: máy cục bộ, cụm trong đám mây, thiết bị iOS và Android,
CPU hoặc GPU. Nếu bạn sử dụng đám mây của riêng Google, bạn có thể chạy
TensorFlow trên silicon Đơn vị xử lý TensorFlow (TPU) tùy chỉnh của Google để tăng
tốc hơn nữa. Tuy nhiên, các mơ hình kết quả được tạo bởi TensorFlow, có thể được
triển khai trên hầu hết mọi thiết bị nơi chúng sẽ được sử dụng để phục vụ dự đoán.
TensorFlow 2.0, được ra mắt vào tháng 10 năm 2019, cải tiến framework theo
nhiều cách dựa trên phản hồi của người dùng, để dễ dàng và hiệu quả hơn khi làm việc
cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train
model). Train phân tán dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho TensorFlow
Lite cho phép triển khai các mơ hình trên khá nhiều nền tảng khác nhau. Tuy nhiên,
nếu đã viết code trên các phiên bản trước đó của TensorFlow thì bạn phải viết lại, đơi
lúc 1 ít, đơi lúc cũng khá đáng kể, để tận dụng tối đa các tính năng mới của
TensorFlow 2.0.
5


4.2

Fastai
Fastai là 1 thư viện deep learning hiện đại, cung cấp API bậc cao để giúp các lập

trình viên AI cài đặt các mơ hình deep learning cho các bài tốn như classification,
segmentation... và nhanh chóng đạt được kết quả tốt chỉ bằng vài dịng code. Bên cạnh
đó, nhờ được phát triển trên nền tảng thư viện Pytorch, nên fastai còn cung cấp các cấu
phần bậc thấp cho các nhà nghiên cứu phát triển mơ hình mới, cũng như hồn tồn
tương thích với các thành phần của pytorch.

4.3

Thuật tốn CNN – Convolutional Neural Network
Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong

những mơ hình Deep Learning tiên tiến. Nó giúp cho chúng ta xây dựng được những
hệ thống thơng minh với độ chính xác cao như hiện nay. CNN được sử dụng nhiều
trong các bài toán nhận dạng các object trong ảnh .
CNN cũng có lịch sử khá lâu đời. Kiến trúc gốc của mơ hình CNN được giới thiệu
bởi một nhà khoa học máy tính người Nhật vào năm 1980. Sau đó, năm 1998, Yan
LeCun lần đầu huấn luyện mơ hình CNN với thuật tốn backpropagation cho bài toán
nhận dạng chữ viết tay. Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính
người Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây dựng mô hình CNN
(AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets để đạt được top
1 trong cuộc thi Computer Vision thường niên ImageNet với độ lỗi phân lớp top 5
giảm hơn 10% so với những mô hình truyền thống trước đó, đã tạo nên làn sóng mãnh
mẽ sử dụng deep CNN với sự hỗ trợ của GPU để giải quyết càng nhiều các vấn đề
trong Computer Vision.
4.4

Cấu trúc của mạng CNN
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các

hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node.
Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thơng tin trừu tượng
hơn cho các lớp tiếp theo.
Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thông tin trừu
tượng hơn cho các lớp tiếp theo. Trong mơ hình mạng truyền ngược (feedforward
neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các
lớp tiếp theo.

6


Mơ hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng tồn vẹn
(affine layer). Cịn trong mơ hình CNNs thì ngược lại. Các layer liên kết được với
nhau thơng qua cơ chế convolution.
Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location
Invariance) và tính kết hợp (Compositionality). 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ị ảnh hưởng đáng kể.
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 qua
convolution 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ống như
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)



Trọng số chia sẻ (shared weights)
Tổng hợp (pooling).



4.4.1 Trường tiếp nhận cục bộ (local receptive field)
Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì tương

ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ơ trong ma trận.
Trong mơ hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào
tầng ảnh.
Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong
một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (285 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ
học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ.

7


Hình 2: Trường tiếp nhận cục bộ.

Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách
sau:
Tạo ra neuron ẩn đầu tiên trong lớp ẩn đầu tiên

Hình 3: Tạo ra neuron ẩn đầu tiên

Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2

8


Hình 4: Tạo neuron ẩn thứ 2

Với bài tốn nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature
map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một
feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng ta
chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một
feature map.


Hình 5: xác định một feature map

Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra
những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
4.4.2 Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơ-ron
trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau
trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden layer là một
9


feature map. Tóm lại, một convolutional layer bao gồm các feature map khác nhau.
Mỗi một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của
trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN.
4.4.3 Lớp tổng hợp (pooling layer)
Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản hóa
thơng tin đầu ra để giảm bớt số lượng neuron.

Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong vùng
đầu vào 2×2.

Hình 6: Tạo max-pooling
Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa. Trong một
mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max
Pooling khác nhau. Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các
đặc trưng này thì đặc trưng nào là đặc trưng nhất. Ngồi Max Pooling cịn có L2
Pooling.
10



Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các
neuron với số lượng tùy bài tốn.

Hình 7: tất cả các lớp lại với nhau thành một CNN gồm các neuron

2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully
connected layer) . Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra.
4.5

Annoy
Annoy là một thư viện C ++ với các liên kết Python để tìm kiếm các điểm trong

khơng gian gần với một điểm truy vấn nhất định. Nó cũng tạo ra các cấu trúc dữ liệu
dựa trên tệp chỉ đọc lớn được ánh xạ vào bộ nhớ để nhiều q trình có thể chia sẻ cùng
một dữ liệu, nhưng thực sự có một tính năng khác thực sự khiến Annoy trở nên khác
biệt: nó có khả năng sử dụng các tệp tĩnh làm chỉ mục. Đặc biệt, điều này có nghĩa là
bạn có thể chia sẻ chỉ mục giữa các quy trình. Annoy cũng tách việc tạo chỉ mục khỏi
việc tải chúng, vì vậy bạn có thể chuyển các chỉ mục dưới dạng tệp và ánh xạ chúng
vào bộ nhớ một cách nhanh chóng.
Nó cung cấp một ví dụ tuyệt vời cho Mô-đun Rcpp và sử dụng các mẫu: Annoy sử
dụng hai kiểu dữ liệu mẫu (thường là float và int32_t cho hiệu quả) và một trong hai
thước đo khoảng cách. Gói này cho thấy rằng nó rất dễ dàng để bọc cả hai. Nó cũng
cho thấy việc Python và R chia sẻ cùng một chức năng chính xác dễ dàng như thế nào
nhờ các mô-đun liên kết trên các mơ-đun Python và phía R (trong đó Rcpp sẽ trợ
giúp).
11


4.6


Google Colab
Google Colaboratory (gọi tắt là Google Colab hay Colab) là một sản phẩm của

Google Research. Colab dựa trên Jupyter Notebook, người dùng có thể viết và thực thi
đoạn mã python thơng qua trình duyệt và đặc biệt rất phù hợp với data analysis,
machine learning và giáo dục.
Google đã phát hành Google Colab cho cơng chúng với mục đích cải thiện giáo
dục và nghiên cứu Machine Learning .Sự phát triển mạnh mẽ của Machine learning và
Deep learning trong những năm gần đây khơng chỉ bởi các thuật tốn, các mơ hình tân
tiến liên tiếp ra đời mà cịn bởi sự phát triển không ngừng của phần cứng, đặc biệt là
GPU. Việc tính tốn về tốn học cho Deep Learning trên CPU có thể mất hàng tháng!
Nhưng những tính tốn này có thể được gán cho GPU để thực hiện nhanh hơn. Việc
train Neural Network trên CPU không được khuyến nghị. GPU cần thiết cho việc tính
tốn ở mức độ cao

12


CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ
5.

Đào tạo dữ liệu

5.1

Ảnh Nhúng (Image Embedding)
Đọc hình ảnh và tải lên một máy chủ từ xa hoặc đánh giá cục bộ. Mơ hình Deep

Learning được sử dụng để tính tốn một vectơ đặc trưng cho mỗi hình ảnh. Nó trả về

một bảng dữ liệu nâng cao với các cột bổ sung
Input : Danh sách hình ảnh
Output :
• Embeddings: Hình ảnh được biểu diễn bằng vector của số.
• Skipped Images: Danh sách hình ảnh khơng được embeddings

Hình 8: Hình ảnh đen trắng đại diện

5.2

Confusion Matrix
Một tùy chọn khác là vẽ misclassifications bằng cách sử dụng Confusion Matrix

13


Hình 9: Confusion Matrix Plot

5.3

ResNet
ResNet sinh ra là để làm việc với hàng trăm hàng ngàn lớp tích chập. Với mạng

CNN thì khi có hàng nghìn lớp tích chập thì có thể xảy ra hiện tượng vanishing
gradient dẫn đến học không tốt.
Giải pháp của ResNet đưa ra là sử dụng kết nối tắt đồng nhất để xuyên qua một
hay nhiều lớp. Một khối kết nối tắt như vậy được gọi là Residual Block

Hình 10: Kiến trúc mạng ResNet


14


6.

Tập dữ liệu

6.1

Nhận dạng sự kiện
Thu thập dữ liệu từ nhiều nguồn khác nhau .Gần 300.000 hình ảnh với 46 thể loại

khác nhau
6.2

Nhận biết quần áo
Để nhận dạng quần áo, ta tạo ra sự kết hợp của một số bộ dữ liệu. Chúng bao gồm

bộ dữ liệu Fashionista và bộ dữ liệu Quần áo đồng phân tích cú pháp (CCP) cũng như
một số nguồn trực tuyến. Bộ dữ liệu Fashionista là một bộ sưu tập gồm 685 hình ảnh
được phân tích cú pháp đầy đủ. Bộ dữ liệu này được thu thập từ chictopia.com, một
trang web mạng xã hội dành cho các blogger thời trang. Tập dữ liệu này có năm mươi
ba danh mục quần áo như váy, giày ống quần jean, v.v. Bộ dữ liệu của CCP bao gồm
2.098 hình ảnh. Ta thu thập quần áo cịn lại thuộc 53 loại quần áo từ các nguồn trực
tuyến. Bằng cách này, ta tạo ra một tập dữ liệu gần 300.000 hình ảnh.

7.

Phương pháp và tiếp cận kỹ thuật


Một cách tiếp cận mới để giới thiệu quần áo dựa trên sự kiện. Trước tiên, xác định
loại sự kiện bằng cách sử dụng phát hiện đối tượng. Khi biết sự kiện trong các hình
ảnh, xác định quần áo mặc tại sự kiện đó. Sau đó, tìm ra mối tương quan giữa sự kiện
và quần áo mặc.

15


7.1

Phát hiện đối tượng để nhận dạng sự kiện
Đầu tiên, ta thu thập dữ liệu thô từ nhiều nguồn trực tuyến khác nhau cho chín sự

kiện / tình huống. Những sự kiện này là Đám cưới (đám cưới bán trang trọng được biết
đến với cái tên đó vì cơ dâu mặc váy trắng) Hội nghị, Lễ tang, Thảm đỏ, Tiệc bể bơi,
Sinh nhật,
Ta đã thu thập 400 hình ảnh cho mọi thể loại. Để xác định sự kiện, ta tìm kiếm các
đối tượng thường thấy tại các sự kiện này. Trước tiên, chúng ta cần tìm đối tượng nào
phổ biến nhất tại một sự kiện. Để thực hiện nhiệm vụ này, ta thực hiện theo một
phương pháp tương tự như được mô tả bởi Ahsan và cộng sự. [29] để tìm các phân
đoạn. Ta nhận được các thẻ liên quan đến từng sự kiện và cho tập hợp các sự kiện E =
{e1, e2,
…, E9}, chúng ta có một tập thẻ T = {t1, t2,…, tN} trong đó N là số thẻ được thu
thập. Mục đích là để tìm các đối tượng thường xảy ra. Ta thu được các đối tượng
thường xuất hiện O = {o1, o2,…, on} trong mỗi thẻ. Ta làm điều này cho tất cả các
hình ảnh sự kiện. Sau đó, ta có được danh sách cuối cùng về các đối tượng như sau:

Trong đó, Sc là điểm của một đối tượng. Điểm này được đo bằng xác suất một
phần của văn bản là một thực thể được đặt tên (trong trường hợp của ta là một đối
tượng). Bảng I cho thấy một ví dụ về các đồ vật thường được tìm thấy trong một đám

cưới màu trắng và trong lễ tốt nghiệp.
Bây giờ để xác định sự kiện, ta tìm kiếm các đối tượng này trong hình ảnh. Đối
với điều này, ta đào tạo một mơ hình để phát hiện các đối tượng này. Ta thu được 250
hình ảnh cho mọi đối tượng và đào tạo tính năng Phát hiện đối tượng Tensorflow, bắt
đầu với việc ghi nhãn hình ảnh. Để gắn nhãn hình ảnh, ta viết một tập lệnh Python. Sử
dụng tập lệnh này, chúng ta có thể kéo các hộp giới hạn xung quanh các đối tượng và
gắn nhãn chúng bằng tên thích hợp của chúng. Thao tác này sẽ tạo tệp XML với thơng
tin hộp giới hạn và thơng tin thêm về hình ảnh như tên tệp và vị trí tệp. Tệp XML này
sau đó có thể được sử dụng để cung cấp dữ liệu vào Tensorflow ở định dạng bắt buộc.
Ta gắn nhãn tất cả các hình ảnh cho các đối tượng thường xuyên xuất hiện. Sau khi

16


gắn nhãn dữ liệu, ta phân vùng dữ liệu đó thành các tập huấn luyện, kiểm tra và xác
nhận. Ta chia nhỏ dữ liệu :
70% dành cho đào tạo, 10% để xác nhận và 20% để kiểm tra. Ta chọn phần tách
này sau nhiều thử nghiệm là phần tách tốt nhất. Để phát hiện đối tượng Tensorflow, tất
cả dữ liệu đào tạo được gắn nhãn cần phải ở định dạng tệp TFRecord. Do đó, dữ liệu
đào tạo được gắn nhãn ở định dạng XML cần được chuyển đổi sang định dạng
TFRecord. Điều này được thực hiện bằng cách chuyển đổi tệp XML sang định dạng
tệp Giá trị được phân tách bằng dấu phẩy (CSV) và sau đó chuyển đổi tệp CSV thành
TFRecords.
Sau khi có được TFRecords, chúng ta có thể bắt đầu đào tạo mơ hình để phát hiện
các đối tượng. Đối với điều này, Tensorflow Object Detection cho phép ta đào tạo các
mơ hình khác nhau bằng cách sử dụng cùng một cơ sở mã. Ta sử dụng học chuyển
giao để đào tạo nhiều mơ hình phát hiện đối tượng. Trong khi chọn mơ hình nào để sử
dụng, người ta có thể thử nghiệm với nhiều kết hợp để chọn siêu kiến trúc, trình trích
xuất tính năng và các siêu tham số khác. Để xác định sự kiện, sau khi thử nghiệm với
nhiều mơ hình, ta chọn Faster RCNN (phần 2) với Inception Resnet v2. Sau đó, ta

kiểm tra mơ hình để tìm hiểu xem nó phát hiện các đối tượng tốt như thế nào.
Bây giờ ta sử dụng mơ hình này để xác định loại sự kiện, dựa trên các đối tượng
được tìm thấy. Ví dụ: nếu trong một hình ảnh phát hiện thấy Mũ tốt nghiệp và Áo
chồng tốt nghiệp, thì hình ảnh đó được phân loại là sự kiện Tốt nghiệp.

Hình 11 : Nhận dạng sự kiện bằng cách sử dụng phát hiện đối tượng

17


7.2

Phát hiện đối tượng để nhận dạng quần áo
Sau khi một sự kiện được xác định, ta cần phải tìm ra những bộ quần áo được mặc

tại sự kiện đó. Đối với điều này, ta cần đào tạo một người mẫu khác để xác định quần
áo. Ta sử dụng kết hợp bộ dữ liệu Fashionista ,bộ dữ liệu CCP và các nguồn trực tuyến
để đào tạo. Khi ta có dữ liệu, ta thực hiện theo một quy trình tương tự để phát hiện các
đối tượng như được mô tả trong phần 5.1. Trước tiên, ta bắt đầu bằng cách gắn nhãn
tất cả dữ liệu ta tìm thấy từ các nguồn trực tuyến. Có 53 loại quần áo trong tập dữ liệu
mà ta gắn nhãn và lấy các tệp XML. Sau đó, ta chia dữ liệu thành các bộ đào tạo, thử
nghiệm và xác nhận. Một lần nữa, ta nhận thấy rằng 70% đào tạo, 10% xác thực và
20% thử nghiệm là phân chia tốt nhất. Sau đó, ta chuyển đổi các tệp XML thành tệp
CSV và CSV thành tệp TFRecord. Bây giờ ta bắt đầu đào tạo các mơ hình khác nhau
bằng cách sử dụng dữ liệu này

Hình 12: Phát hiện đối tượng cho quần áo

Tensorflow Object Detection được xây dựng trên Tensorflow. Tạo và đào tạo các
mơ hình mới mỗi lần là một công việc tốn nhiều thời gian. Do đó, ta đã sử dụng

phương pháp học chuyển tiếp trong bài báo này.

18


Học chuyển giao giúp giảm thời gian cần thiết để đào tạo các mơ hình và do đó,
giúp thử nghiệm nhiều mơ hình nhanh hơn. Với phương pháp học chuyển tiếp, ta chỉ
sử dụng các trọng số từ một mô hình được đào tạo trước và áp dụng chúng theo nhu
cầu của ta. Ta cũng có thể sửa đổi các siêu tham số khác nhau để tìm ra mơ hình tốt
nhất cho dữ liệu của mình. Ta có thể thử từ nhiều cách kết hợp kiến trúc khác nhau để
đào tạo mơ hình của ta. Chúng được đưa ra trong bảng :

7.3

Tìm kiếm mối tương quan giữa quần áo và sự kiện
Sau khi xác định sự kiện và phát hiện quần áo mặc tại sự kiện, ta sẽ tìm ra mối

tương quan giữa quần áo mặc và sự kiện. Ta thực hiện điều này bằng cách tìm ra quần
áo đã mặc ở tất cả các sự kiện và lưu trữ dữ liệu này dưới dạng ma trận. Nếu phát hiện
bất kỳ loại quần áo nào trong số 53 loại quần áo tại một sự kiện, thì ta sẽ đưa vào một
mục trong ma trận. Sau đó, ta tìm ra những bộ trang phục được mặc thường xuyên
nhất tại các sự kiện này bằng cách sử dụng Pandas. Ta truy xuất những trang phục
thường xuyên mặc này để giúp ta giới thiệu các mặt hàng cho người dùng. Bảng III
đưa ra một ví dụ về trang phục thường xuyên mặc.
Event
Conference
Red Carpet

1st
suit

dress

2nd
blazer
blazer

19

3rd
shirt
tie


×