1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỀ tài tìm HIỂU MACHINE LEARNING và ỨNG DỤNG vào NHẬN DẠNG ẢNH

16 17 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Machine Learning Và Ứng Dụng Vào Nhận Dạng Ảnh
Tác giả Nguyễn Trần Hoàng Thanh
Người hướng dẫn Mai Trọng Khang
Trường học Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM
Chuyên ngành Khoa Công Nghệ Phần Mềm
Thể loại Báo cáo môn học
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 16
Dung lượng 1,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang | 1 GVHD: Mai Trọng Khang 1 TỔNG QUAN 1.1 Vài nét về Machine Learning 1.1.1 Khái niệm Machine learning là một lĩnh vực con của Trí tuệ nhân tạoArtificial Intelligence sử dụng cá

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO MÔN HỌC

ĐỒ ÁN 1

ĐỀ TÀI: TÌM HIỂU MACHINE LEARNING VÀ ỨNG DỤNG

VÀO NHẬN DẠNG ẢNH

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

Mai Trọng Khang

Sinh viên thực hiện:

1 Nguyễn Trần Hoàng Thanh 16521125

Lớp: SE121.L11.PMCL

TP HỒ CHÍ MINH, 2021 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

Trang 2

BÁO CÁO MÔN HỌC

ĐỒ ÁN 1

ĐỀ TÀI: TÌM HIỂU MACHINE LEARNING VÀ ỨNG DỤNG

VÀO NHẬN DẠNG ẢNH

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

Mai Trọng Khang

Sinh viên thực hiện:

1 Nguyễn Trần Hoàng Thanh 16521125

Lớp: SE121.L11.PMCL

TP HỒ CHÍ MINH, 2020

LỜI CẢM ƠN

Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến tập thể quý thầy cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và quý thầy cô khoa Công nghệ phần mềm đã giúp cho chúng em có những kiến thức cơ bản làm nền tảng để thực hiện đề tài này

Trang 3

Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy

Mai Trọng Khang, giảng viên môn Đồ án 1, Khoa Công nghệ phần mềm Thầy đã

hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến quý báu giúp em hoàn thành báo cáo môn học của mình

Trong thời gian một học kỳ thực hiện đề tài, em đã vận dụng những kiến thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới

Từ đó, em đã vận dụng tối đa những gì đã thu thập được để hoàn thành một báo cáo đồ án tốt nhất Tuy nhiên, trong quá trình thực hiện không tránh khỏi những thiếu sót Chính vì vậy, em rất mong nhận được những sự góp ý từ phía thầy nhằm hoàn thiện những kiến thức mà em đã học tập và là hành trang để em thực hiện tiếp các đề tài khác trong tương lai

Xin chân thành cảm ơn Thầy!

MỤC LỤC

Mục lục 1 1 Tổng quan 2 1.1 Vài nét về Machine Learning 2 1.1.1 Khái niệm 2 1.1.2 Phân loại thuật

toán của Machine Learning 2 1.2 Object Detection 2 1.2.1 Khái niệm 2 1.2.2 Một số phương pháp Object Detection 2 1.3 Một số bài toán và

bộ dữ liệu của Object Detection 5 1.3.1 Phát hiện chữ số viết

tay 5 1.3.2 Phát hiện người 5 1.3.3 Bộ dữ liệu

VOC2007 6 2 thực nghiệm 7 2.1 Google Colab 7 2.2 Nhận diện chữ

số viết tay 8 2.3 Phát hiện người 11 3 Kết luận và hướng

phát triển 13 3.1 Kết luận 13 3.1.1 Kết quả

đạt được 13 3.1.2 Hạn chế 13 3.2 Hướng phát triển 13 Tài liệu tham

khảo 14

Trang 4

Trang | 1 GVHD: Mai Trọng Khang

1 TỔNG QUAN

1.1 Vài nét về Machine Learning

1.1.1 Khái niệm

Machine learning là một lĩnh vực con của Trí tuệ nhân tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng

1.1.2 Phân loại thuật toán của Machine Learning

− Học có giám sát là thuật toán học và dự đoán đầu ra dựa trên các dữ liệu đã có từ trước được chú thích các thuộc tính và định danh đầy đủ cho từng đối tượng − Học không giám sát là thuật toán học dự đoán dựa trên các dữ liệu có sẵn, tuy nhiên các dữ liệu này không có chú thích hay định danh đầy đủ

− Học bán giám sát là thuật toán học và dự đoán dựa trên một bộ dữ liệu mà chỉ một phần trong số đó được chú thích và có định danh đầy đủ

− Học củng cố là thuật toán tự học và dự đoán đầu ra sao cho đạt được kết quả tốt nhất trong một hoàn cảnh nào đó

1.2 Object Detection

1.2.1 Khái niệm

− Bài toán phát hiện đối tượng (object detection) là bài toán nhận diện và định vị các đối tượng Đầu vào của bài toán có thể là ảnh hoặc video, đầu ra bao gồm tên và vị trí của các đối tượng xuất hiện trong ảnh

− Hiện nay object detection được áp dụng rất nhiều trong các lĩnh vực hàng ngày như nhận diện biển số xe, phát hiện phương tiện giao thông, phát hiện khuôn mặt người,…Mỗi lĩnh vực lại có các thách thức cũng như các phương pháp khác nhau

để giúp các thuật toán object detection đạt được hiệu quả tốt nhất có thể

1.2.2 Một số phương pháp Object Detection

1.2.2.1 Faster-RCNN

Faster R-CNN là một phương pháp để giải quyết bài toán phát hiện đối tượng trong ảnh

Trang | 2

Trang 5

GVHD: Mai Trọng Khang

Hình 1.1 Framework Faster R-CNN

Trang 6

Trang | 3 GVHD: Mai Trọng Khang

− Đầu tiên, đầu vào của Faster R-CNN là một hình ảnh Bức hình này được đưa vào một deep Fully Convolutional Network (tương tự Fast R-CNN) để lấy được feature maps của bức hình

− Sau đó feature maps này được đưa vào Region Proposal Network để tạo ra các vùng đề xuất

− Các vùng đề xuất được ánh xạ lên feature maps để lấy được các features của từng vùng Các đặc trưng này được đưa vào RoI Pooling Layer để tạo ra các ma trận có cùng kích thước

− Từng ma trận đặc trưng sẽ được đưa vào để phân lớp và hồi quy bouding-box − Trong Faster R-CNN, mạng đầu tiên là mạng RPN – một Deep Fully Convolutional Network Mạng này nhận đầu vào là một ảnh có kích thước bất kỳ Đầu ra là tập hợp các vùng đề xuất cùng với điểm đánh giá chứa vật thể của từng vùng

Hình 1.2 RoI Pooling Layer

− Khi lấy được ma trận đặc trưng của từng vùng đề xuất, các ma trận này không cùng kích thước Để chuẩn hoá dữ liệu, các ma trận sẽ được đưa vào RoI pooling layer Faster R-CNN sử dụng max pooling layer

− Khi chúng ta có đầu vào là một ma trận đặc trưng và RoI với độ lớn w×h và vị trí như hình và cần đầu ra là ma trận có độ lớn W×H Khi đó mỗi pooling area trung gian sẽ có kích thước h/H×w/W

− Sau đó, với mỗi pooling area, ta chọn giá trị lớn nhất trong đó, kết quả thu được là

ma trận có kích thước mong muốn

Trang | 4 GVHD: Mai Trọng Khang

1.3 Một số bài toán và bộ dữ liệu của Object Detection

Trang 7

1.3.1 Phát hiện chữ số viết tay

− Phát hiện chữ số viết tay có thể xem như là bài toán cơ bản cho người mới tìm hiểu

về bài toán Object Detection

− Bài toán sử dụng bộ dữ liệu Mnist với đầu vào là ảnh và đầu ra là chữ số cùng với

dự đoán tương ứng

1.3.2 Phát hiện người

− Phát hiện người là bài toán khá phổ biến trong lĩnh vực Object Detection, bài toán còn mở rộng ra với các yêu cầu như phát hiện hành động của người, phát hiện các

bộ phận người, phát hiện khuôn mặt hay thậm chí là nhận diện cảm xúc khuôn mặt,… tuy nhiên do thiếu thốn về mặt dữ liệu nên các nghiên cứu vẫn chỉ

dừng ở mức nội bộ và ít được công khai

− Bài toán thường có đầu vào là ảnh hoặc video và đầu ra là vị trí của người được phát hiện trong ảnh Hiện nay có khá nhiều bộ dữ liệu lớn có bao gồm nhận diện con người như VOC

Trang | 5 GVHD: Mai Trọng Khang

1.3.3 Bộ dữ liệu VOC2007

− VOC2007 là một bộ dữ liệu được công bố lần đầu tiên vào ngày 07/08/2007 − Bộ

dữ liệu gồm có 5011 ảnh huấn luyện và 4952 ảnh kiểm tra với 20 lớp đối tượng:

• Người: person

Trang 8

• Động vật: bird, cat, cow, dog, horse, sheep

• Phương tiện: aeroplane, bicycle, boat, bus, car, motorbike, train

• Trong nhà: bottle, chair, dining table, potted plant, sofa, tv/monitor

Bộ dữ liệu đã được sử dụng trong cuộc thi The PASCAL Visual Object Classes Challenge 2007 với một số hạng mục như:

• Classification

• Detection

Trang | 6 GVHD: Mai Trọng Khang

2 THỰC NGHIỆM

2.1 Google Colab

Trang 9

Google Colab là một công cụ trực tuyến miễn phí vô cùng hữu ích dành cho

người mới tìm hiểu về Machine Learning và muốn thực nghiệm các kiến thức của bản thân

Google Colab là một công cụ trực tuyến do Google cung cấp, nó cung cấp các tùy chọn cơ bản cần thiết cho một người nghiên cứu về Machine Learning:

• Công cụ miễn phí: bạn sẽ không mất một khoản phí nào khi sử dụng Google Colab trừ khi bạn muốn sử dụng một cấu hình mạnh mẽ hơn

• Cung cấp môi trường: máy ảo linux cho phép bạn cài đặt, upload, download toàn

bộ những gì bạn cần khi bắt đầu huấn luyện một bộ dữ liệu

• Cho phép bạn kết nối Google Drive: bạn có thể kết nối, lưu trữ và truy cập trực tiếp đến các tệp trên Google Drive

• Cho phép các bạn sử dụng GPU: GPU miễn phí mà Google cung cấp có thể giúp bạn thực nghiệm hầu hết các phương pháp với các bộ dữ liệu vừa và nhỏ Nếu muốn thao tác với các bộ dữ liệu lớn hơn, bạn nên suy nghĩ về việc trả phí để có thể sử dụng các GPU mạnh mẽ hơn

Trang | 7 GVHD: Mai Trọng Khang

2.2 Nhận diện chữ số viết tay

Nhận diện chữ số viết tay là một bài toán khá đơn giản và có rất nhiều bài

hướng dẫn mà có thể dễ dàng thực hiện với Google Colab:

Đầu tiên, bạn cần các thư viện thích hợp:

Trang 10

import numpy as np

import matplotlib.pyplot as plt

from keras.models import Sequential

from keras.layers import Dense, Dropout, Activation,

Flatten from keras.layers import Conv2D, MaxPooling2D

from keras.utils import np_utils

from keras.datasets import mnist

Tiếp theo là upload bộ dữ liệu mnist, ở đây mnist đã có sẵn trong keras:

(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_val, y_val = X_train[ 50000 : 60000 ,:], y_train[ 50000 : 60000 ]

X_train, y_train = X_train[: 50000 ,:], y_train[: 50000 ]

print (X_train.shape)

Tiếp theo cần sửa đổi kích thước của bộ dữ liệu cho phù hợp với đầu vào của mạng sẽ sử dụng:

X_train = X_train.reshape(X_train.shape[ 0 ], 28 , 28 , 1 )

X_val = X_val.reshape(X_val.shape[ 0 ], 28 , 28 , 1 )

X_test = X_test.reshape(X_test.shape[ 0 ], 28 , 28 , 1 )

Trang | 8 GVHD: Mai Trọng Khang

Sau đó chúng ta sẽ khởi tạo một model đơn giản dùng cho việc huấn luyện

# 5 Định nghĩa model

model = Sequential()

# Thêm Convolutional layer với 32 kernel, kích thước kernel 3*3 # dùng hàm sigmoid làm activation và chỉ rõ input_shape cho layer đầu tiên

model.add(Conv2D( 32 , ( 3 , 3 ), activation= 'sigmoid' , input_shape=( 28 , 28 ,

Trang 11

1 )))

# Thêm Convolutional layer

model.add(Conv2D( 32 , ( 3 , 3 ), activation= 'sigmoid' ))

# Thêm Max pooling layer

model.add(MaxPooling2D(pool_size=( 2 2 )))

# Flatten layer chuyển từ tensor sang vector

model.add(Flatten())

# Thêm Fully Connected layer với 128 nodes và dùng hàm

sigmoid model.add(Dense( 128 , activation= 'sigmoid' ))

# Output layer với 10 node và dùng softmax function để chuyển sang xác xuất

model.add(Dense( 10 , activation= 'softmax' ))

#!git clone https://github.com/titu1994/Keras-ResNeXt ! cp

"/content/drive/My Drive/LA/CODE/Mnist/resnext.py" "/content/"

from keras.models import Model

from keras import applications

from resnext import ResNext

model = ResNext(input_shape = ( 28 , 28 , ) )

Trang | 9 GVHD: Mai Trọng Khang

Hoàn thành các bước trên sẽ đến bước huấn luyện bộ dữ liệu, các bạn cần khai báo các thành phần tính toán cần thiết và sau đó sẽ bắt đầu huấn luyện

model compile (loss= 'categorical_crossentropy' ,

optimizer= 'adam' ,

metrics=[ 'accuracy' ])

H = model.fit(X_train, Y_train, validation_data=(X_val, Y_val),

batch_size= 64 , epochs= 3 , verbose= 1 )

Trang 12

Khi xuất hiện các dòng sau có nghĩa là model đang được huấn luyện

Train on 50000 samples, validate on 10000 samples

Epoch 1/3

50000/50000 [==============================] - 1409s 28ms/step - loss: 1.8353 - acc: 0.9047 - val_loss: 1.0486 - val_acc: 0.8884 Epoch 2/3 50000/50000 [==============================] - 1406s 28ms/step - loss: 0.7904 - acc: 0.9385 - val_loss: 4.0462 - val_acc: 0.4705 Epoch 3/3 50000/50000 [==============================] - 1402s 28ms/step - loss: 0.6880 - acc: 0.9426 - val_loss: 2.8854 - val_acc: 0.6843

Sau khi huấn luyện kết thúc, có thể dễ dàng kiểm tra kết quả bằng cách cho model dự đoán một ảnh:

image = X_test[ 10 ]

plt.imshow(image.reshape( 28 , 28 ), cmap= 'gray' )

y_predict = model.predict(image.reshape( 1 28 , 28 , ))

print ( 'Giá trị dự đoán: ' , np.argmax(y_predict))

Ta được kết quả như sau:

Trang | 10 GVHD: Mai Trọng Khang

2.3 Phát hiện người

Để phát thực nghiệm cho bài toán phát hiện người, em sử dụng bộ dữ liệu

VOC2007, framework mmdetection và phương pháp Faster-RCNN

Để có thể cài đặt MMDetection trên Google Colab cần các lệnh sau:

! conda install pytorch torchvision -c pytorch

#mmcv-full

%cd /content/drive/MyDrive/LA/CODE/Thermal

! git clone https://github.com/open-mmlab/mmcv.git

%cd mmcv

! MMCV_WITH_OPS= 1 pip install -e

#mmdet

Trang 13

%cd /content/drive/MyDrive/LA/CODE/Thermal

! git clone

https://github.com/open-mmlab/mmdetection.git %cd

mmdetection

! pip install -r requirements/build.txt

! pip install -v -e

#cài đặt các thư viện cần thiết khác

! pip install onnx

! pip install onnxoptimizer

! pip install onnxruntime

Sau đó bước quan trọng khác là chuẩn bị file config thích hợp để huấn luyện, cần chú ý các thông số sau:

Thay đổi num_classes cho phù hợp với số class trong bộ dữ liệu

bbox_head=dict(

type = 'Shared2FCBBoxHead' ,

in_channels= 256 ,

fc_out_channels= 1024 ,

roi_feat_size= 7 ,

num_classes = 15 )

Chọn thư mục lưu trữ các model huấn luyện được:

work_dir = '/VOC/work_dir/faster_r50_fpn_1x_VOC2007'

Trang | 11 GVHD: Mai Trọng Khang

Thay đổi các đường dẫn đến bô dữ liệu của bạn:

Trang 14

Các thông số còn lại lấy theo mặc định

Kết quả nhận diện trên ảnh

Tra

ng | 12 GVHD: Mai Trọng Khang

3 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

3.1 Kết luận

3.1.1 Kết quả đạt được

− Hiểu được một số kiến thức cơ bản về Machine Learning

− Nắm được cách huấn luyện một model

− Huấn luyện được một số model đơn giản

Trang 15

3.1.2 Hạn chế

− Trong quá trình thực nghiệm xuất hiện nhiều lỗi và gặp nhiều khó khăn để giải quyết

− Trang thiết bị hạn chế dẫn đến việc mất nhiều thời gian để huấn luyện model

3.2 Hướng phát triển

− Tìm hiểu các phương pháp Object Detection khác

− Áp dụng lại các kiến thức đã đạt được cho các bài toán khác với các thử thách cao hơn

Trang | 13 GVHD: Mai Trọng Khang

TÀI LIỆU THAM KHẢO

[1] http://host.robots.ox.ac.uk/pascal/VOC/voc2007/,

[2] https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-3.1,

[3] https://github.com/open-mmlab/mmdetection

[4] Ren, Shaoqing, et al "Faster r-cnn: Towards real-time object detection with region proposal networks." IEEE transactions on pattern analysis and machine intelligence 39.6 (2016): 1137-1149

Trang 16

Trang | 14

Ngày đăng: 14/12/2022, 17:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w