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

báo cáo thực tập xây dựng phần mềm thêm mô tả cho ảnh

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 (387.23 KB, 17 trang )

[1]

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

Xây dựng phần mềm thêm mô tả cho ảnh

Công ty thực tập

: VCCorp

Người phụ trách

: TS. Huỳnh Ngọc Tín

Thực tập sinh

: Phạm Huỳnh Tấn Đạt

TP. Hồ Chí Minh, tháng 12 năm 2020

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[2]

LỜI MỞ ĐẦU


Ngày nay, lĩnh vực AI đang nổi lên với một nhu cầu cấp bách và đầy thiết yếu. Các ứng
dụng của AI đã gây nên một phần tác động lớn đối với trải nghiệm của người dùng và tính chất
thương mại hóa của một cơng ty.
Đặc biệt hơn, các thuật toán AI ứng dụng như Deep learning đang được phát triển một
cách vơ cùng mạnh mẽ và chóng mặt, các nhánh con như Computer Vision và Natural Language
Processing cũng từ đó mà phát triển lên.
Sau bốn năm học tập trên trường và có may mắn được gặp thầy Tín. Thầy đã truyền cảm
hứng cho em về lĩnh vực CNTT trong AI. Chính vì muốn được tiếp cận quy trình làm việc và
các bài tốn AI đang gặp trong tình hình hiện tại, VCCorp chính là cơng ty lý tưởng để cho em
thực hiện dự định này và cũng như là có thêm kinh nghiêm để rèn giũa bản thân thật tốt trước
khi ra trường.

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[3]

LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty VCCorp nói chung và thầy Huỳnh Ngọc Tín nói riêng
đã tạo điều kiện cho em có cơ hội được thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của anh chị trong công ty,
những buổi seminar hàng tuần. Em đã học hỏi được nhiều điều về kỹ năng cứng cũng như mềm.
Đồng thời hịa nhập với văn hóa cơng ty và các hoạt động ngoại khóa nói riêng.
Đặc biệt cảm ơn anh Tuyên là người đã hỗ trợ em từ lúc em mới vào cơng ty, từ những
quy trình tới setup những môi trường, thủ tục cần thiết. Cảm ơn anh Tùng đã hỗ trợ các vấn đề
kỹ thuật cũng như chia sẻ cách làm việc, phong cách của công ty để giúp em hòa nhập một cách
nhanh nhất ạ. Và cũng cảm ơn các anh chị khác trong VCCorp đã luôn tận tình hỗ trợ em trong

việc tìm hiểu, học tập các kiến thức mới.
Cũng xin cảm ơn thầy cô trong khoa Cơng nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
Phạm Huỳnh Tấn Đạt
TpHCM, ngày 30 tháng 12 năm 2020

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[4]

NHẬN XÉT CỦA KHOA

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[5]

MỤC LỤC

MỤC LỤC

6

Chương 1: Giới thiệu công ty thực tập


7

1. Giới thiệu về công ty VCCorp
2. Sản phẩm của công ty

7
7

Chương 2: Nội dung thực tập
1.
2.
3.
4.

Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Nghiên cứu kỹ thuật
Thực hiện project
Lịch làm việc

9
9
9
12
12

Chương 3: Chi tiết về project
1. Giới thiệu về bài toán
2. Thực hiện
3. Kế hoạch


14
14
14
15

TÀI LIỆU THAM KHẢO
TỔNG KẾT

16
17

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[6]

Chương 1: Giới thiệu công ty thực tập

1. Giới thiệu công ty VCCorp
Được thành lập vào năm 2006, Công ty CP VCCorp (VCCorp) là công ty tiên phong
trong lĩnh vực công nghệ và nội dung số. Với hơn 10 năm hình thành và phát triển,
VCCorp đã xây dựng được một hệ sinh thái Internet rộng lớn với rất nhiều sản phẩm
sáng tạo, hữu ích trong nhiều lĩnh vực (quảng cáo trực tuyến, thương mại điện tử, trò
chơi trực tuyến...) phủ sóng trên 90% người sử dụng Internet và mobile, có giá trị
đóng góp lớn vào sự phát triển của Internet Việt Nam trong một thập kỷ qua.
Với việc được chia thành nhiều bộ phận, bộ phận mà em đang thực tập chính là
Adtech
VCCorp hiện đang sở hữu thương hiệu quảng cáo trực tuyến Adtech là đơn vị quảng

cáo trực tuyến lớn nhất hiện nay với hệ thống quảng cáo trên 200 website uy tín
hàng đầu, gần 30 website trong số đó thuộc sở hữu của VCCorp hoặc VCCorp là đơn
vị độc quyền khai thác quảng cáo. Với độ phủ tới trên 50 triệu độc giả, tương đương
90% người dùng Internet và mobile tại Việt Nam, cùng với sức mạnh về công nghệ,
và sự sáng tạo không ngừng, Adtech luôn ở vị thế dẫn đầu thị trường, giúp các trang
báo và trang thơng tin điện tử Việt Nam có nguồn thu tốt để cung cấp thông tin cho
người dân và cạnh tranh được các website dịch vụ nước ngoài.

2. Sản phẩm của công ty
#1 Adnetwork
Tiếp cận 97.6% người dùng Internet, với 5 nhóm chuyên mục lớn, hơn 1000+
publishers, 30 đối tác độc quyền, cùng 10000+ nhà mua quảng cáo.
#1 Mobile Adnetwork
Tiếp cận 95% người dùng Mobile, hệ thống Mobile Adnetwork tiếp cận người
dùng trên mobile web & mobile app.
#1 AdTech
TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[7]

Sở hữu hơn 45 tỷ view/tháng, AdTech áp dụng hầu hết những công nghệ tân tiến
nhất vào Adnetwork.
#1 Product Innovation
Dẫn đầu thị trường trong cung cấp tính năng đột phá, sở hữu 22 sản phẩm & giải
pháp, nổi bật với: quảng cáo hiển thị, truyền thông, mua tự động, mobile

TS. Huỳnh Ngọc Tín


Phạm Huỳnh Tấn Đạt


[8]

Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề "Xây dựng phần mềm thêm mô tả cho ảnh" nhằm giúp cho sinh
viên tiếp cận các phương pháp học máy, cũng như nắm được quy trình của một bài tốn AI khi
áp dụng vào thực tế.

1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về cơng ty, q trình thành lập và phát triển
(như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của
cơng ty .
Ngồi ra, thực tập sinh cịn được giới thiệu về cách thức làm việc trong công ty
như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công
việc…
Kết quả : Hiểu thêm về bộ phận Adtech, quá trình thành lập và phát triển. Có thêm các
kỹ năng về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có kỷ luật, có trách
nhiệm hơn.

2. Nghiên cứu kỹ thuật
2.1.

2.2.

Các cơng cụ làm việc

Thời gian : 1 tuần
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các cơng
cụ sẽ giúp ích cho trong công việc sau này. Một số phần mềm trong số đó như
OpenVPN - sử dụng trong làm việc với server. Hệ điều hành Linux để làm việc dễ
dàng hơn.
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Lập trình sử dụng các cơng cụ miễn phí, giúp dễ dàng kết hợp các cơng cụ
với nhau, so với việc dùng các IDE.
Tìm hiểu cơ bản về Machine Learning
Thời gian : 2 tuần
Nội dung : Được training kiến thức,toán cơ bản, thuật toán AI cơ bản
- Thuật toán AI cơ bản
Các kiến thức cơ bản về Machine Learning như khái niệm Linear Regression,
Logistic Regression, Gradient Descent
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty.
- Kiểm tra về kiến thức đã học.
Kết quả :
-

Nắm rõ về kiến thức cơ bản của Machine Learning
Có được những kiến thức quan trọng cho việc lập trình Machine Learning

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[9]


2.3.

Tìm hiểu về Deep Learning và các thư viện đi kèm
Thời gian : 3 tuần
Nội dung: Các kiến thức cơ bản như Neural Network, CNN, RNN và thư viện keras,
tensorflow, xử lý dữ liệu như numpy, pandas đi kèm
- Khái niệm cơ bản về Neural Network

-

-

-

Còn được gọi là mạng thần kinh nhân tạo, là một thể loại giải thuật của học
máy — machine learning, lấy cảm hứng từ bộ não con người. Nó là một trong
những giải thuật phổ biến nhất được sử dụng trong thế giới của học máy. Mục
đích của nó để giải quyết vấn đề tương tự cách con người thực hiện.
Khái niệm cơ bản về CNN:
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. Như hệ
thống xử lý ảnh lớn như Facebook, Google hay Amazon đã đưa vào sản phẩm của
mình những chức năng thơng minh như nhận diện khuôn mặt người dùng, phát
triển xe hơi tự lái hay drone giao hàng tự động.
Khái niệm cơ bản về RNN
Ý tưởng chính của RNN (Recurrent Neural Network) là sử dụng chuỗi các
thông tin. Trong các mạng nơ-ron truyền thống tất cả các đầu vào và cả đầu ra là
độc lập với nhau. Tức là chúng không liên kết thành chuỗi với nhau. Nhưng các

mơ hình này khơng phù hợp trong rất nhiều bài tốn. Ví dụ, nếu muốn đốn từ
tiếp theo có thể xuất hiện trong một câu thì ta cũng cần biết các từ trước đó xuất
hiện lần lượt thế nào chứ nhỉ? RNN được gọi là hồi quy (Recurrent) bởi lẽ chúng
thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ
thuộc vào cả các phép tính trước đó. Nói cách khác, RNN có khả năng nhớ các
thơng tin được tính tốn trước đó. Trên lý thuyết, RNN có thể sử dụng được thơng
tin của một văn bản rất dài

Khái niệm cơ bản về LSTM
LSTM (Long short-term memory), là một mạng được sinh ra từ RNN, do
trong quá trình học backprop lại của RNN về các dữ liệu ở xa sẽ dẫn tới tình trạng
vanishing gradient descent, khiến các trọng số được cập nhật tiến về gần khơng
gây cản trở mơ hình trong q trình học. LSTM được giới thiệu thêm để giải
quyết những vấn đề này nhờ vào sự xuất hiện của các cổng forget gate, update
gate, output gate và một trạng thái gọi là cell state để lưu trữ các thông tin quan
trọng hỗ trợ cho việc cải thiện việc ghi nhớ và học của mơ hình.

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[10]

-

-

-


Tensorflow - Keras
Tensorflow là một thư viện mã nguồn mở cung cấp khả năng xử lý tính
tốn số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu. Tensor được sử dụng
khi bạn cần giải quyết các bài toán supervised learning.
Keras là một open source cho Neural Network được viết bởi ngơn ngữ Python. Nó
là một library được phát triển vào năm 205 bởi Francois Chollet, là một kỹ sư
nghiên cứu Deep Learning. Keras có thể sử dụng chung với các thư viện nổi tiếng
như Tensorflow, CNTK, Theano.
Numpy
Numpy là một 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 tố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 áp dụng lên các mảng nhiều chiều đó. Numpy đặc biệt hữu ích khi
thực hiện các hàm liên quan tới Đại Số Tuyến Tính.
Pandas
Pandas là là thư viện mã nguồn mở với hiệu năng cao cho phân tích dữ liệu
trong Python được phát triển bởi Wes McKinney trong năm 2008. Chỉ với hơn 1
năm phát triển nó đã trở thành một thư viện chuẩn cho việc phân tích dữ liệu khi
dùng Python, một số tính năng nổi bật của pandas:

● Có thể xử lý tập dữ liệu khác nhau về định dạng: chuỗi thời gian, bảng
không đồng nhất, ma trận dữ liệu
● Khả năng import dữ liệu từ nhiều nguồn khác nhau như CSV, DB/SQL
● Có thể xử lý vơ số phép tốn cho tập dữ liệu: subsetting, slicing,
filtering, merging, groupBy, re-ordering, and re-shaping,..
● Xử lý dữ liệu mất mát theo ý người dùng mong muốn: bỏ qua hoặc
chuyển sang 0
● Xử lý, phân tích dữ liệu tốt như mơ hình hố và thống kê
● Tích hợp tốt với các thư viện khác của python
Thực hiện :
-


Tham gia đầy đủ các buổi training.
Tìm kiếm tài liệu trên mạng để tìm hiểu thêm.

Kết quả :
-

Hiểu được những khái niệm cơ bản trong lập trình Deep Learning
Sử dụng thư viện cho bài toán

2.4. Thực hiện project
Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến thức
cơ bản về AI, Deep Learning và thư viện đi kèm. Trong tháng thứ hai, trainer đã hướng

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[11]

dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project. Chi tiết đồ
án sẽ được nói ở phần sau.
3. Lịch làm việc

Tuần

Cơng việc
-


1

Tìm hiểu về công
ty, cách tổ chức của
công ty.
Làm quen với các
công cụ làm việc
trong công ty.
Học cách trao đổi,
làm việc qua email.
Tìm
hiểu
về
Machine Learning

-

2

Người hướng dẫn

Mức
độ
hồn
thành

Nhận xét của người
hướng dẫn

Anh Tun

Anh Tùng

Anh Hiếu
Anh Dương
Anh Tùng

3
-

4
5

Tìm hiểu về Deep Anh Hiếu
Learning
Anh Dương
Anh Tùng

6
7

-

Tìm hiểu về paper Thầy Huỳnh Ngọc
thêm mô tả cho ảnh Tín

8
9

-


10

-

TS. Huỳnh Ngọc Tín

Thầy Huỳnh Ngọc
Viết Model đầu tiên Tín
theo paper
Thực nghiệm và
đánh giá
Tiếp tục cải thiện Thầy Huỳnh Ngọc
model
Tín
Thực nghiệm và
đánh giá

Phạm Huỳnh Tấn Đạt


[12]

11

-So sánh, cài đặt các Thầy Huỳnh Ngọc
model khác nhau để Tín
đánh giá , cải thiện

TS. Huỳnh Ngọc Tín


Phạm Huỳnh Tấn Đạt


[13]

Chương 3: Chi tiết về project

1. Giới thiệu về bài tốn
Bài tốn thêm mơ tả cho ảnh (Image Caption) là một bài tốn được áp dụng khá rộng
rãi. Tính năng này có trong các ứng dụng tìm kiếm hình ảnh theo tiêu đề như Google
Images. Xa hơn nữa, bài toán còn được áp dụng vào các lĩnh vực khác như camera an
ninh…. Với khả năng tạo ra tiêu ra tiêu đề cho một bức ảnh, đây là một thành phần quan
trọng trong các bài toán liên quan đến xử lý ảnh. Các kĩ thuật image caption đã rất phát
triển và hoạt động rất tốt với nhiều ngôn ngữ, đặc biệt là tiếng Anh. Vậy liệu có thể áp
dụng các kĩ thuật đó với tiếng Việt hay khơng ?
1.1.

Paper tham khảo
● Show and Tell: Lessons learned from the 2015 MSCOCO Image
Captioning Challenge

1.2.

Thuật tốn
Mơ tả

-

Train mạng CNN theo mơ hình phân loại ảnh để rút kết ra được các đặc điểm
trong một bức hình


-

Sau khi rút kết được các feature hình trong tập train, đưa các đặc điểm rút kết
được vào làm input cho mạng LSTM.

-

Mạng LSTM nhận input đầu vào là các đặc điểm của hình được tạo ra từ CNN và
các miêu tả đã được gán nhãn từ trước.

-

Mỗi miêu tả được gán nhãn sẽ được gán 2 token là <start> và <end> để network
có thể biết được vị trí bắt đầu và kết thúc câu.

-

Mạng LSTM sẽ được train để dự đoán ra với những đặc điểm được rút kết trong
bức ảnh thì sẽ tạo ra mơ tả nào.

-

Mạng CNN sẽ được pretrained theo bài toàn image classification với input đầu
vào là một bức ảnh và output là feature vector

-

Mạng LSTM sẽ được pretrained theo bài toán text generation với input đầu vào là
<start> sẽ tạo ra câu description tới khi gặp <end>


TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[14]

Dataset
-

Flickr8k (8091 bức ảnh)

-

Mỗi bức hình sẽ có 5 descriptions hỗ trợ trong việc đánh giá

2. Thực hiện
Phạm Huỳnh Tấn Đạt

3. Kế hoạch
Giai đoạn tìm hiểu các paper liên quan:

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[15]


-

Paper Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning
Challenge

-

Paper CNN và LSTM

Giai đoạn training model
-

Training trên tập data flickr8k

-

Chia thành 6000 dữ liệu train và 1000 dữ liệu test

Giai đoạn thử nghiệm
-

Sử dụng pretrained trên các kiến trúc CNN khác nhau : Inception, Xception

Giai đoạn đánh giá
-

Sử dụng độ đánh giá bleu.

Giai đoạn cải tiến
-


Tham khảo các paper có thể giúp khả năng cải thiện mơ hình
o Show, Attend and Tell: Neural Image Caption Generation with Visual
Attention
o Image Captioning through Image Transformer.

Kết quả :
-

Sử dụng thông qua mơ hình xception mang lại kết quả tốt nhất với các kết quả
bleu là 43%.

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt


[16]

TÀI LIỆU THAM KHẢO

For Paper
Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge

For AI
/>Các bài báo NLP có liên quan tới bài tốn
/> />
TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt



[17]

TỔNG KẾT
Như vậy, chỉ trong vòng thời gian thực tập, em đã build được base model để hoàn thành
mục tiêu của cơng việc, đồng thời từ đó có thể tiếp tục xây dựng và phát triển nghiên cứu để cải
thiện model của mình hơn nữa trong tương lai
Chân thành cảm ơn sự giúp đỡ của các anh trong công ty. Cảm ơn thầy Huỳnh Ngọc Tín
đã giúp em hồn thành bài báo cáo này.

TS. Huỳnh Ngọc Tín

Phạm Huỳnh Tấn Đạt



×