Cáckết quả trong Đồ án tốt nghiệp/Khóa luận tốt nghiệp này là trung thực, và không sao chéptừ bất kỳ một nguồn nào và dưới bất kỳ hình thức nào.Việc tham khảo các nguồn tài liệunếu có đã
Trang 1B GIÁO D C VÀ ĐÀO T O Ộ Ụ Ạ B NÔNG NGHI P VÀ PTNT Ộ Ệ
TR ƯỜ NG Đ I H C TH Y L I Ạ Ọ Ủ Ợ
ĐOÀN VĂN PHONG
HÀ N I, NĂM 2023 Ộ
Trang 2B GIÁO D C VÀ ĐÀO T O Ộ Ụ Ạ B NÔNG NGHI P VÀ PTNT Ộ Ệ
TR ƯỜ NG Đ I H C TH Y L I Ạ Ọ Ủ Ợ
PHÂN LO I HÌNH NH S D NG VISION TRANSFORMER Ạ Ả Ử Ụ
Ngành : Kỹ thu t ph n m m ậ ầ ề MSV : 1651170929
NG ƯỜ ƯỚ I H NG D N Ẫ : TS Nguy n Văn Nam ễ
HÀ N I, NĂM 2023 Ộ
Trang 3GIẤY BÌA ĐỒ ÁN TỐT NGHIỆP, KHÓA LUẬN TỐT NGHIỆP
Trang 4CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc - - ★ NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Đoàn Văn Phong Hệ đào tạo: Đại học chính quy
Khoa: Công nghệ thông tin 1- TÊN ĐỀ TÀI:
PHÂN LO I HÌNH N S D NG VISION TRANSFORMER Ạ Ả Ử Ụ
2- CÁC TÀI LIỆU CƠ BẢN
3 - NỘI DUNG CÁC PHẦN THUYẾT MINH VÀ TÍNH TOÁN:
%
CHƯƠNG 2 NG D NG TRONG PHÂN LO I HÌNH NH S D NG VISION Ứ Ụ Ạ Ả Ử Ụ TRANSFORMER
Trang 55 GIÁO VIÊN HƯỚNG DẪN TỪNG PHẦN
hướng dẫn
CHƯƠNG 1 GI I THI U MÔ HÌNH VISION Ớ Ệ
TRNASFORMER
TS Nguyễn Văn Nam
CHƯƠNG 2 NG D NG TRONG PHÂN LO I HÌNH NH S Ứ Ụ Ạ Ả Ử
Nam
Trang 66 NGÀY GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Ngày 20 tháng 03 năm 2023
Trưởng Bộ môn
(Ký và ghi rõ Họ tên)
Giáo viên hướng dẫn chính
TS Nguyễn Văn Nam
Nhiệm vụ Đồ án tốt nghiệp đã được Hội đồng thi tốt nghiệp của Khoa thông qua
Ngày .tháng .năm 2023 Chủ tịch Hội đồng
Trang 7LỜI CAM ĐOAN
Em xin cam đoan đây là Đồ án tốt nghiệp/ Khóa luận tốt nghiệp của bản thân tác giả Các kết quả trong Đồ án tốt nghiệp/Khóa luận tốt nghiệp này là trung thực, và không sao chép
từ bất kỳ một nguồn nào và dưới bất kỳ hình thức nào.Việc tham khảo các nguồn tài liệu (nếu có) đã được thực hiện trích dẫn và ghi nguồn tài liệu tham khảo đúng quy định.
Sinh viên thực hiện
Đoàn Văn Phong
i
Trang 8LỜI CẢM ƠN
L i đ u tiên, em xin chân thành c m n sâu s c t i các th y cô giáo trong tr ờ ầ ả ơ ắ ớ ầ ườ ng
Đ i H c Th y L i nói chung và các th y cô giáo trong t Công Ngh Thông Tin nói ạ ọ ủ ợ ầ ổ ệ riêng đã t n tình gi ng d y, truy n đ t cho em nh ng ki n th c, kinh nghi m quý ậ ả ạ ề ạ ữ ế ứ ệ báu trong th i gian qua ờ
Đ c bi t em xin g i l i c m n đ n TS Nguy n Văn Nam, th y đã t n tình giúp đ , ặ ệ ử ờ ả ơ ế ễ ầ ậ ỡ
tr c ti p ch b o, h ự ế ỉ ả ướ ng d n em trong su t quá trình làm đ án môn h c Trong ẫ ố ồ ọ
th i gian làm vi c v i th y, em không ng ng ti p thu thêm nhi u ki n th c b ích ờ ệ ớ ầ ừ ế ề ế ứ ổ
mà còn h c t p đ ọ ậ ượ c tinh th n làm vi c, thái đ nghiên c u khoa h c nghiêm túc, ầ ệ ộ ứ ọ
hi u qu , đây là nh ng đi u r t c n thi t cho em trong quá trình h c t p và công ệ ả ữ ề ấ ầ ế ọ ậ tác sau này.
Sau cùng em xin g i l i c m n chân thành t i gia đình, b n bè đã đ ng viên, đóng ử ờ ả ơ ớ ạ ộ góp ý ki n và giúp đ trong quá trình h c t p, nghiên c u và hoàn thành đ án môn ế ỡ ọ ậ ứ ồ
Trang 9ii
TR ƯỜ NG Đ I H C THU L I Ạ Ọ Ỷ Ợ
KHOA CÔNG NGH THÔNG TIN Ệ
B N TÓM T T Đ C Ả Ắ Ề ƯƠ NG Đ ÁN T T NGHI P Ồ Ố Ệ
TÊN Đ TÀI: Ề Phân lo i hình nh s d ng Vision Transformer ạ ả ử ụ
Sinh viên th c hi n ự ệ : Đoàn Văn Phong
Giáo viên h ướ ng d n ẫ : TS Nguy n Văn Nam ễ
TÓM T T Đ TÀI Ắ Ề
Phân lo i hình nh là tác v quan tr ng trong th giác máy tính Các mô hình phân ạ ả ụ ọ ị
lo i hình nh th ạ ả ườ ng đ ượ c dùng là m ng x ạ ươ ng s ng (backbone) cho các mô hình ố
(https://paperswithcode.com/method/vision-transformer) d a trên Transformer ự
là m t trong nh ng mô hình phân lo i hình nh quan tr ng và m nh mẽ nh t hi n ộ ữ ạ ả ọ ạ ấ ệ nay
Đ tài đi sâu nghiên c u, tìm hi u v ki n trúc c a VisionTransformer cũng nh ề ứ ể ề ế ủ ư cách cài đ t, k t qu th nghi m c a mô hình ặ ế ả ử ệ ủ
Trang 10iii
CÁC M C TIÊU CHÍNH Ụ
VisionTransformer s d ng r t nhi u các kỹ thu t ph c t p c a h c sâu M c tiêu ử ụ ấ ề ậ ứ ạ ủ ọ ụ chính c a đ tài là đi sâu tìm hi u các thành ph n c a mô hình đ n m b t đ ủ ề ể ầ ủ ể ắ ắ ượ c công ngh lõi ệ
N I DUNG CHÍNH Ộ
Vision Transformer, hay ViT, là m t mô hình phân lo i hình nh s d ng ki n trúc ộ ạ ả ử ụ ế
gi ng nh Transformer trên các m ng hình nh M t hình nh đ ố ư ả ả ộ ả ượ c chia thành các
ph n có kích th ầ ướ ố ị c c đ nh, sau đó m i ph n đ ỗ ầ ượ c nhúng tuy n tính, các ph n ế ầ nhúng v trí đ ị ượ c thêm vào và chu i vect k t qu đ ỗ ơ ế ả ượ c đ a vào b mã hóa ư ộ Transformer tiêu chu n Đ th c hi n phân lo i, ph ẩ ể ự ệ ạ ươ ng pháp tiêu chu n là thêm ẩ
m t “mã thông báo phân lo i” có th h c đ ộ ạ ể ọ ượ ổ c b sung vào chu i đ ỗ ượ ử ụ c s d ng.
K T QU D KI Ế Ả Ự ẾN
Báo cáo t ng k t đ tài và ng d ng VIT đ phân lo i các lo i đ dùng trong b p ổ ế ề ứ ụ ể ạ ạ ồ ế
TT Th i gian ờ N i dung công vi c ộ ệ K t qu d ki n đ t ế ả ự ế ạ
Trang 11ch o ả
15/04-20/05
Cài đ t, hu n luy n, th ặ ấ ệ ử nghi m mô t hình nh ệ ả ả
iv
MỤC LỤC
LIỆT KÊ HÌNH VẼ vi
DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH CÁC THUẬT NGỮ viii
CH ƯƠ NG 1 : GI I THI U MÔ HÌNH VISION TRNASFORMER Ớ Ệ 1
1 Transformer 1
2 Vision Transformer 4
2.1 Gi i thi u ớ ệ 4
2.2 Mô hình Vision Transformer 4
2.3 kỹ thu t Attention ậ Map 10
CH ƯƠ NG 2 : NG D NG TRONG PHÂN LO I HÌNH NH S D NG Ứ Ụ Ạ Ả Ử Ụ VISION TRANSFORMER 13
1 Chu n b d ẩ ị ữ li u ệ 13
2 Cài đ t mô hình ặ 14
2.1 Gi i thi u công c google ớ ệ ụ colab 14
Trang 12đ ượ 44 c
4.2 H ướ ng phát tri n ể 44
v
LIỆT KÊ HÌNH VẼ Hình 1.21 : Kiến trún Transformer
Hình 1.22: Mô tả cách tính ma trận attention
Hình 1.23: Mô tả Multi- Head Attention
hình 2.1 : Cấu trúc thư mục dữ liệu ảnh
hình 2.2 : Cấu trúc thư mục chứa ảnh
hình 2.3 : Ảnh trong các thư mục chứa ảnh
hình 2.5 : V trí l u tr k t qu hu n luy n c a mô hình ị ư ữ ế ả ấ ệ ủ
Hình 2.6 : K t qu th nghi m mô hình ế ả ử ệ
Hình 2.24: Mô tả kiến trúc của mô hình ViT
Trang 13Hình 2.25 : hình ảnh được chia nhỏ thành các patch nhỏ có kích thước cố định Hình 2.26 : Làm phẳng các patch thành chuỗi các vectors
Hình 2.27 : Mô tả đầu ra của flattend vector của các patch
Hình 2.28 : Hình ảnh ví dụ về hai ảnh ghép các patch lại với nhau
Hình 2.29 : Mô tả cơ chế Attention trong Vision Transformer
Hình 2.30 : Định nghĩa về khối Multi-self attention tong Vision Transformer Hình 2.31 : mô tả kết quả trả về tương ứng với các class
Hình 3.1 : Kết quả thử nghiệm nhãn bat
Hình 3.2 : Kết quả thử nghiệm nhãn chao
vi
Hình 3.3 : Kết quả thử nghiệm nhãn choi
Hình 3.4 : Kết quả thử nghiệm nhãn đĩa
Hình 3.5 : Kết quả thử nghiệm nhãn dua
Hình 3.6 : Kết quả thử nghiệm nhãn nocomdien
Hình 3.7 : Kết quả thử nghiệm nhãn ro
Hình 3.8 : Kết quả thử nghiệm sai nhãn bat
Hình 3.9 : Kết quả thử nghiệm sai nhãn choi
Hình 3.10 : Kết quả thử nghiệm sai nhãn dia
Hình 3.11 : Kết quả thử nghiệm sai nhãn noicomdien
Trang 14Hình 3.29 : Attention map của [CLS] giữa các lớp khác nhau.
vii
DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH CÁC THUẬT NGỮ
DICOM Digital Imaging and Communications in Medicine
MSA Multi-head Self-attention
Trang 15NLP Natural Language Processing
viii
Trang 25Tiếp theo, chúng ta thảo luận chi tiết Self-attntion cia single head cho một zl đầu vào, dữ liệu được chuẩn hóa đầu tiên theo Layermorm Phương trình 2.13, 2.14 và 2.15 ước tính key, query và value của zl Ở đây, WK,WQ,WV là các tham số cho phép chiếu tuyến tính.
Hình 2.31 : mô tả kết quả trả về tương ứng với các class
3 Kỹ thuật Attention Map
Attention map là kỹ thuật được sử dụng để diễn giải cơ chế ra quyết định của mô hình ViT dựa trên các trọng số Attention Để tính toán các bản đồ của Attention, ta sử dụng cơ
Trang 26chế Attention Rollout Về cơ bản là tính trung bình trọng số Attention trên tất cả Head và sau đó nhân đệ quy ma trận trọng số tất cả các lớp Điều này giúp kết hợp cac Attention token giữa tất cả các lớp Hình 3.29 mô tả Attention map giữa các lớp khác nhau theo cls token.
Hình 3.29 : Attention map của [CLS] giữa các lớp khác nhau
Về Attention Rollout là một cách trực quan để theo dõi thông tin được truyền từ lớp đầu vào đến các phần nhúng ở các lớp cao hơn Ví dụ có một transformer có L lớp, ta muốn tính toán Attention từ tất cả các vị trí trong lớp li đến tất cả các vị trí trong lớp lj, trong
đó j<i Trong đồ thị Attention, một đường đi từ nút v ở vị trí k trong lớp li, đến nút u ở vị trí m trong lớp lj, là một chuỗi các cạnh nối hai nút này Nế chúng ta xem trọng số cả mỗi cạnh tỷ lệ thông tin được truyền đi giữa hai nút, chúng ta có thể tính lượng thông tin tại v được truyền tới u thông qua một đường dẫn cụ thể bằng cách nhân trọng số của tất cả các cạnh trong đường dẫn đó Vì có thể có nhiều hơn một đường đi giữa hai nút trong biểu đố chú ý, để tính tổng lượng thông tin được truyền từ v đến u, chúng ta tính tổng trên tất cả đường đi có thể có giữa hai nút này Ở cấp độ thực thi, để tính Attention từ li đến lj, chúng ta nhân một cách đệ quy ma trận trọng số Attention trong tất cả các lớp bên dưới.
~A(li)={A(li)~A(li−1)nếu i j>
Trang 28CH ƯƠ NG 2 : NG D NG TRONG PHÂN LO I HÌNH NH S D NG Ứ Ụ Ạ Ả Ử Ụ VISION TRANSFORMER
1 Chu n b d li u ẩ ị ữ ệ
ViT chỉ có thể làm tốt hơn các phương pháp dựa trên CNN nếu các pre-trained model được huấn luyện trên một tệp dữ liệu lớn Do đó em sử dụng các bộ dữ liệu lớn về hình ảnh các đồ dùng trong nhà.
Phân loại dữ liệu : Dữ liệu được chia làm ba thư mục train, valid và test Mỗi th mục đều chứa tất cả các thư mục con là các nhãn
Các thư mục con chia làm các nhãn như sau:
Nôi cơm điện : 0,16
hình 2.1 : Cấu trúc thư mục dữ liệu ảnh
Trang 29hình 2.2 : Cấu trúc thư mục chứa ảnh
hình 2.3 : Ảnh trong các thư mục chứa ảnh
2 Cài đặt mô hình
2.1 Sử dụng công cụ google Colab
Google Colab là một dạng jupyter Notebook tùy biến cho phép thực thi Python trên nền tảng đám mây, được cung cấp bở google Sử dụng Google Colab có những lợi ích ưu việt như: sẵn sàng chạy Python ở bất kỳ thiết bị nào có kết nối internet mà không cần cài đặt, chia sẻ và làm việc nhóm dễ dàng, sử dụng miễn phí GPU cho các dự án về AI 2.2 Các bước cài đặt
Cài đặt mô hình
Mô hình sử dụng Google colab để huấn luyện và phân loại hình ảnh
Trang 30Kết nối đến thư mục chứa dữ liệu đã được làm sẵn
Cài đặt trình biên dịch Pytorch
Pytorch là một framework học máy mã nguồn mở dựa trên thư viện Torch được sử dụng cho các ứng dụng như thị giác máy tính và xử lý ngôn gữ tự nhiên, chủ yếu được phát triển bở Meta AI Mặc dù giao diện Python được trau chuốt hơn và là trọng tâm phát triển chính, PyTorch cũng có giao diện C++ PyTorch tập trung vào hai khả năng chính: Một sự thay thế cho bộ thư viện numpy để tận dụng sức mạnh tính toán của GPU Một platfom Deep learning phục vụ trong nghiên cứu, mang lại sự linh hoạt và tốc độ Một trong những cốt lõi của PyTorch là tensor.Tensor là một mảng đa chiều tương tự như mảng numpy nhưng có thể hoạt động trên GPU, điều này giúp tăng đáng kể hiệu suất hệ thống PyTorch cung cấp nhiều mô-đun hỗ trợ cho mô hình học sâu Các mô-đun này được tổ chức theo một workflow giúp cho việc triển khai sử dụng thuận tiện
Trang 31PyTorch có thể cung cấp các hỗ trợ cho nột quá trình huấn luyện mô hình với các bước (hình 3.1).
Hình 3.1 Mô tả các bước của một quá trình huấn luyện mô hình trên PyTorch
Bước 1 : Tổ chức dữ liệu và tải dữ liệu vào mô hình huấn luyện PyTorch cung cấp mô-đun “torch.utils.data” để hỗ trợ việc này Hai thư viện chính trong mô-đun này là Dataset và Dataloader Dataset sử dụng kiểu dữ liệu Tensor để tổ chức tùy chỉnh bộ
dữ liệu, Dataloader sử dụng để tải bộ dữ liệu cho quá trình huấn luyện và kiểm tra Bước 2 : Khởi tạo mô hình Ta có thể sử dụng mô hình có sẵn hoặc có thể tự tạo một
mô hình cho ứng dụng của mình Pytorch cung cấp mô-đun “torch.nn” có đầy đủ các lớp để tạo nên mạng nơ-ron như lớp “fully-connected”, “convolution”, các hàm kích hoạt và các àm tổn thất.
Bước 3 : Tiến hành huấn luyện mô hình Sau khi đã có tập dữ liệu và mô hình cần có
kỹ thuật cập nhật trọng số và để tiến hành huấn luyện, kỹ thuật này có trong mô-đun
“torch.optim” Đặc biệt Pytorch còn hỗ trợ tính gradient tự động trong quá trình huấn luyện bằng mô-đun “torch.autograd”.
Bước 4 : chạy đánh giá mô hình
Bước 5,6 : Sau khi kết quả mô hình đạt như mong muốn có thể lữu trữ để triển khai Pytorch cung cấp mô-đun “torch.hub” hỗ trợ lưu trữ công khai mô hình trên github để
Trang 32phục vụ nghiên cứu Mô-đun ‘torch.onns” hoặc “torch.jit” cung cấp khả năng chuyển đổi mô hình sang các định dạng khác để dễ dàng triển khai ứng dụng.
import torch, torchvision
print(torch. version )
print(torch.cuda.is_available())
2.0.1+cu118
Cài đặt mã nguồn mmpretrain
mmpretrain ( pretrained AI model) : là mô hình AI được đào tạo trước, là mô hình học sâu – một thể hiện của thuật toán thần kinh giống như bộ não người giúp tìm kiếm các hình mẫu hoặc đưa ra dự đoán trên dữ liệu, được đào tạo trên các tập dữ liệu lớn để hoàn thành một nhiệm vụ cụ thể Nó có thể sử dụng nguyên trạng hoặc được tính chỉnh thêm
để phù hợp với nhu cầu cụ thể của ứng dụng
!git clone https://github.com/open-mmlab/mmpretrain.git
Cài đặt thư viện openmim
!pip install openmim
Cài đặt lõi framework
%cd mmpretrain
!mim install -e
Thiết lập các thông số cho mô hình :
mmpretrain/configs/vision_transformer/datn_vit-base-p16_32xb128-mae_in1k.py_base_ = [
Trang 33dict type( ='TruncNormal', layer='Linear', std=.02),
dict type( ='Constant', layer='LayerNorm', val=1., bias=0.),
],
train_cfg=dict(augments=[
dict type( ='Mixup', alpha=0.8),
dict type( ='CutMix', alpha=1.0)
'.cls_token': dict(decay_mult=0.0),
'.pos_embed': dict(decay_mult=0.0)
}))
# runtime settings
custom_hooks = [dict type( ='EMAHook', momentum=1e-4)]
# NOTE: `auto_scale_lr` is for automatically scaling LR
Trang 34# base_batch_size = (32 GPUs) x (128 samples per GPU)
auto_scale_lr = dict(base_batch_size=4096)
Cài đặt mô hình : mmpretrain/configs/_base_/datasets/datn_imagenet_bs64_swin_224.py
Trang 35dict type( ='PackInputs'),
dict type( ='CenterCrop', crop_size=224),
dict type( ='PackInputs'),
val_evaluator = dict type( ='Accuracy', topk=( , ))1 5
# If you want standard test, please manually configure the test dataset
test_dataloader = val_dataloader
test_evaluator = val_evaluator
Trang 36Cài đặt tập dữ liệu tại :
'.absolute_pos_embed': dict(decay_mult=0.0),
'.relative_position_bias_table': dict(decay_mult=0.0)
dict type( ='CosineAnnealingLR', eta_min=1e-5, by_epoch=True, begin= )20
]
# train, val, test setting
train_cfg = dict(by_epoch=True, max_epochs= , val_interval= )50 1
val_cfg = dict()
test_cfg = dict()
# NOTE: `auto_scale_lr` is for automatically scaling LR,
# based on the actual training batch size
auto_scale_lr = dict(base_batch_size=1024)
Trang 372.3 Độ đo
Trong học máy, độ chính xác là thước đo phổ biến được sử dụng để đánh giá hiệu suất của một mô hình Nó đo tỷ lệ các ví dụ được phân loại chính xác trong số tất cả các ví dụ trong bộ dữ liệu.
Độ chính xác Top-1 là chỉ số phân loại nghiêm ngặt nhất, trong đó mô hình phải dự đoán nhãn danh mục chính xác của một ví dụ để nó được coi là chính xác.
Độ chính xác top 1 là tỷ lệ phần trăm các ví dụ xác thực được phân loại chính xác theo dự đoán của mô hình, trong khi độ chính xác top 5 mở rộng điều này cho 5 dự đoán hàng đầu của mô hình.
Sử dụng độ chính xác top 1, mô hình tính đầu ra này là sai, bởi vì nó dự đoán một con hổ.
Sử dụng độ chính xác của top 5, mô hình tính đầu ra này là chính xác, vì con mèo nằm trong số 5 lần đoán hàng đầu.
Để tính tỷ lệ phần trăm của độ chính xác, người ta cần:
Đối với độ chính xác top 1: Số ví dụ được phân loại chính xác trong tập dữ liệu theo dự đoán chính xác của chúng và chia số này cho tổng số ví dụ trong tập dữ liệu Nhân với
100 để biểu thị dưới dạng phần trăm.
Đối với độ chính xác top 5: Số ví dụ được phân loại chính xác trong tập dữ liệu theo dự đoán 5 danh mục hàng đầu của chúng và chia số này cho tổng số ví dụ trong tập dữ liệu Nhân với 100 để biểu thị dưới dạng phần trăm.
Công thức tính độ chính xác: accuracy= correct predictionsall predictión