- Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình là ở việc ứng dụng các hệ thống học máy machine learning để mô phỏng trí tuệ củacon người trong các xử lý mà
Trang 1Sinh viên thực hiện : NGUYỄN ĐỨC NGỌC KỲ
Giảng viên hướng dẫn : TS LÊ VĂN MINH
Đà nẵng, tháng 07 năm 2020
Trang 3
LỜI CẢM ƠN
Em xin chân thành cảm ơn KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VÀ ĐẠI HỌC ĐÀ NẴNG đã tạo điều kiện cho em thực hiện đề tài này
Em xin gửi lời cảm ơn chân thành đến tất cả các Thầy cô đã giảng dạy chúng em trong suốt thời gian quan Cảm ơn đến thầy (cô) TS.LÊ VĂN MINH đã hướng dẫn em thực hiện đề tài này
Bên cạnh đó, để hoàn thành khóa thực tập này, em cũng đã nhận đượcrất nhiều sự giúp đỡ, những lời động viên quý báu của các bạn bè, các anh chị thân hữu, em xin hết lòng cảm ơn
Tuy nhiên, do thời gian hạn hẹp, mặc dù đã nỗ lực hết sức mình, nhưng chắc rằng đề tài này khó tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm, chỉ bảo tận tình của thầy cô và các bạn
Trang 4NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
Trang 5
MỤC LỤC Trang MỞ ĐẦU 3
Chương 1 Giới thiệu 7
1.1 Tổng quan 7
1.2 Phương pháp, kết quả 10
1.3 Cấu trúc đồ án 12
Chương 2 Nghiên cứu tổng quan 13
2.1 Phương pháp 13
2.2 Kết luận 13
Chương 3 Thiết kế hệ thống 14
Thiết kế chi tiết 14
Chương 4 Triển khai xây dựng 15
Chương 5 Kết luận và Hướng phát triển 34
DANH MỤC TÀI LIỆU THAM KHẢO 35
Trang 6DANH MỤC HÌNH
Trang
Hình 1.2 – Nhãn hình 1 11
Hình 1.2 – Nhãn hình 2 12
Hình 3 – Nhãn hình 1 sơ đồ thực hiện 12
Hình 3 – Nhãn hình 2 sơ đồ làm việc 12
Hình 5 – Nhãn hình 1 ảnh ban đầu 34
Hình 5 – Nhãn hình 2 ảnh đã được xử lý, nhận dạng 34
Trang 7Chương 1 Giới thiệu
1.1 Tổng quan
- Bối cảnh thực hiện đề tài
- Trí tuệ nhân tạo hay trí thông minh nhân tạo (Artificial intelligence – viết tắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer science) Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy tính có thể
tự động hóa các hành vi thông minh như con người
- Trí tuệ nhân tạo khác với việc lập trình logic trong
các ngôn ngữ lập trình là ở việc ứng dụng các hệ thống học máy (machine learning) để mô phỏng trí tuệ củacon người trong các xử lý mà con người làm tốt hơn máy tính
- Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi,…
- Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minh trong các tác phẩm khoa học viễn tưởng, nó là một trong những ngành trọng yếu của tin học Trí thông minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khảnăng thích ứng thông minh của máy móc
Trí tuệ nhân tạo (Artificial Intelligence): là tên gọi của cả
một lĩnh vực nghiên cứu, tương tự như sinh học hay hoá học ấy
Học máy (Machine Learning): là một phần của trí tuệ
nhân tạo Một phần quan trọng, nhưng không phải tất cả
Mạng neuron (Neural Networks – NN): là một trong
những nhóm thuật toán học máy Một anh chàng đẹp trai học giỏi trong lớp học ML đấy, nhưng trong lớp vẫn có
những anh chàng khác học giỏi không kém (các mạng neurons sẽ được giải thích kỹ hơn ở các phần sau).
Học sâu (Deep Learning- DL): một phương pháp hiện đại
để xây dựng, huấn luyện và ứng dụng các mạng neuron
Cơ bản là, nó là một kiểu kiến trúc mới Thực tế là không
ai tách riêng deep learning với các kiểu network truyền thống cả
Trang 8Công nghệ nhận dạng hình ảnh có tiềm năng lớn trong việc áp dụng rộng rãi trong các ngành công nghiệp khác nhau Các công ty lớn như Tesla, Google, Uber, Adobe Systems vv cũng sử dụng công nghệ nhận dạng hình ảnh
Để chứng minh rằng công nghệ này đang tồn tại khắp thế giới, chúng ta hãy xem xét các số liệu thống kê gần đây Các nhà nghiên cứu dự đoán rằng thị trường toàn cầu của công nhận dạng hình ảnh sẽ đạt 38,92 tỷ USD vào năm
2021 Đó là một con số rất lớn! Vì vậy, không có thắc mắcrằng ngày càng nhiều cái gọi là ứng dụng imagetech tận dụng nhận dạng hình ảnh cho các mục đích khác nhau và trong cả kinh doanh
- Vấn đề cần giải quyết
Nhập ảnh, phân tích, thao tác và tạo ảnh
- Đề xuất nội dung thực hiện
[Computer Vision] Object Detection (nhận diện vật thể) chỉ với 10 dòng code sử dụng ImageAI
Object Detection
Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision) Computer Vision là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy Object
Detection có lẽ là khía cạnh sâu sắc nhất của thị giác máy
do số lần sử dụng trong thực tế
Object Detection đề cập đến khả năng của hệ thống máy tính và phần mềm để định vị các đối tượng trong một hình ảnh và xác định từng đối tượng Object Detection đã được sử dụng rộng rãi để phát hiện khuôn mặt, phát hiện
xe, đếm số người đi bộ, hệ thống bảo mật và xe không người lái Có nhiều cách để nhận diện đối tượng có thể được sử dụng cũng như trong nhiều lĩnh vực thực hành Giống như mọi công nghệ khác, một loạt các ứng dụng sáng tạo và tuyệt vời của Object Detection sẽ đến từ các lập trình viên và các nhà phát triển phần mềm
Bắt đầu sử dụng các phương pháp nhận diện đối tượng hiện đại trong các ứng dụng và hệ thống, cũng như xây dựng các ứng dụng mới dựa trên các phương pháp
này.Việc triển nhận diện đối tượng sớm liên quan đến việc
sử dụng các thuật toán cổ điển, giống như các thuật toán được hỗ trợ trong OpenCV, thư viện computer vision phổ
Trang 9biến Tuy nhiên, các thuật toán cổ điển này không thể đạt được hiệu suất đủ để làm việc trong các điều kiện khác nhau.
Việc áp dụng đột phát và nhanh cóng của deep learningvào năm 2012 đã đưa vào sự tồn tại các thuật toán và phương pháp phát hiện đối tượng hiện đại và chính xác cao như R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet vànhanh hơn nhưng rất chính xác như SSD và YOLO Sử dụng các phương pháp và thuật toán này, dựa trên deep learning và cũng dựa trên việc học máy đòi hỏi rất nhiều kiến thức về toán học và việc học sâu Có hàng triệu
chuyên gia lập trình và các nhà phát triển phần mềm muốntích hợp và tạo ra các sản phẩm mới sử dụng object
detection Nhưng công nghệ này xa tầm tay của họ và phức tạp để hiểu và sử dụng thực tế của nó
ImageAI một thư viện python cho phép các lập trình
viên và các nhà phát triển phần mềm dễ dàng tích hợp các công nghệ thị giác máy hiện đại vào các ứng dụng hiện có
và mới của họ, và chỉ cần sử dụng một vài dòng mã
ImageAI hỗ trợ một danh sách các thuật toán học máy hiệnđại nhất cho việc dự đoán hình ảnh,, nhận diện vật thể, phát diện video,…
ImageAI một thư viện python mã nguồn mở được xây
dựng để trao quyền cho các nhà phát triển xây dựng các ứng dụng và hệ thống với các khả năng Deep Learning và Computer Vision độc lập bằng cách sử dụng một vài dòng
mã đơn giản ImageAI hỗ trợ danh sách các thuật toán
Machine Learning tiên tiến để dự đoán hình ảnh, dự đoán hình ảnh tùy chỉnh, phát hiện đối tượng, phát hiện video, theo dõi đối tượng video và đào tạo dự đoán hình
ảnh ImageAI hiện hỗ trợ dự đoán và đào tạo hình ảnh
bằng 4 thuật toán Machine Learning khác nhau được đào
tạo trên bộ dữ liệu ImageNet-1000 ImageAI cũng hỗ trợ
phát hiện đối tượng, phát hiện video và theo dõi đối tượng bằng RetinaNet, YOLOv3 và TinyYOLOv3 được đào tạo
trên bộ dữ liệu COCO Cuối cùng, ImageAI cho phép bạn
huấn luyện các mô hình tùy chỉnh để thực hiện phát hiện
và nhận dạng các đối tượng mới ImageAI sẽ cung cấp hỗ
trợ cho các khía cạnh rộng hơn và chuyên biệt hơn của Computer Vision bao gồm và không giới hạn ở nhận dạng hình ảnh trong các môi trường đặc biệt và các lĩnh vực đặcbiệt
Trang 10ImageAI cung cấp 4 thuật toán và loại mô hình khác
nhau để thực hiện dự đoán hình ảnh, được đào tạo trên bộ
dữ liệu ImageNet-1000 4 thuật toán được cung cấp để dự đoán hình ảnh bao gồm:
SqueezeNet , ResNet , InceptionV3 và DenseNet ImageAI cung cấp nhiều tính năng hữu ích cho việc
triển khai khả năng tùy chỉnh và triển khai việc nhận diện đối tượng Một vài tính năng được hỗ trợ là:
Adjusting Minimum Probability: Theo mặc định, các đối tượng được phát hiện có tỷ lệ phần trăm xác suất nhỏ hơn 50
sẽ không được hiển thị hoặc báo cáo Bạn có thể tăng giá trị này cho các trường hợp chắc chắn cao hoặc giảm giá trị cho các trường hợp mà tất cả các đối tượng có thể cần được phát hiện
Custom Objects Detection: Sử dụng lớp CustomObject được cung cấp, bạn có thể yêu cầu lớp phát hiện báo cáo các phát hiện trên một hoặc một số đối tượng duy nhất
Detection Speeds: Bạn có thể giảm thời gian cần thiết để phát hiện một hình ảnh bằng cách đặt tốc độ của tốc độ phát hiện thành ‘fast’, ‘faster’ và ‘fastest’
Input Types: Bạn có thể chỉ định và phân tích cú pháp trong đường dẫn tệp tới hình ảnh, mảng Numpy hoặc luồng tệp của hình ảnh làm hình ảnh đầu vào
Output Types: Bạn có thể chỉ định rằng hàm
detectObjectsFromImage sẽ trả về hình ảnh dưới dạng một tệphoặc mảng Numpy
1.2 Phương pháp, kết quả
Trình bày phương pháp triển khai thực hiện đề tài:
Hình ảnh có thể được sử dụng theo những cách khácnhau.Trong các hình ảnh phát triển phần mềm di động, web vàphần mềm phục vụ cho vô số lý do, bao gồm:
Trang 11 Xử lý hình ảnh (Retouch, )
Cải thiện ứng dụng di động UX
Vv
ImageAI một thư viện python mã nguồn mở được xây dựng
để trao quyền cho các nhà phát triển xây dựng các ứng dụng và
hệ thống với các khả năng Deep Learning và Computer Visionđộc lập bằng cách sử dụng một vài dòng mã đơn giản
Kết quả đạt được
Dữ liệu vào
Hình 1.2 – Nhãn hình 1
Trang 12Dữ liệu ra
Hình 1.2 – Nhãn hình 2
1.3 Cấu trúc đồ án
Chương 1 Giới thiệu 7
1.1 Tổng quan 7
1.2 Phương pháp, kết quả 10
1.3 Cấu trúc đồ án 12
Chương 2 Nghiên cứu tổng quan 13
2.1 Phương pháp 13
2.2 Kết luận 13
Chương 3 Thiết kế hệ thống 14
Thiết kế chi tiết 14
Chương 4 Triển khai xây dựng 15
Chương 5 Kết luận và Hướng phát triển 34DANH MỤC TÀI LIỆU THAM KHẢO 35
Trang 13Chương 2 Nghiên cứu tổng quan
2.1 Phương pháp
Chương 3 Dự đoán hình ảnh
Chương 4 Phát hiện đối tượng
Chương 5 Phát hiện và theo dõi đối tượng video
+ Phát hiện và phân tích đối tượng video
+ Phát hiện đối tượng tùy chỉnh video (Theo dõi đối tượng)
+ Phân tích video trực quan
Chương 6 Đào tạo mô hình tùy chỉnh
Chương 7 Dự đoán hình ảnh tùy chỉnh
Chương 8 Đào tạo mô hình phát hiện tùy chỉnh
Chương 9 Phát hiện đối tượng tùy chỉnh
Chương 10 Phân tích & phát hiện đối tượng video tùy chỉnh
10.1 Kết luận
Thực hiện đúng theo thứ tự phương pháp đã đề ra
Trang 14Chương 11 Thiết kế hệ thống
Chương 12 Thiết kế chi tiết
Hình 3 – Nhãn hình 1 sơ đồ thực hiện
Hình 3 – Nhãn hình 2 sơ đồ làm việc
Trang 15Chương 13 Triển khai xây dựng
Ngôn ngữ thực hiện: PYTHON
Lợi ích khi học lập trình Python là gì?
Python giúp người học dễ tiếp cận, bao gồm những người chưa từng học lập trình
Tính năng chính của Python là gì?
Ngôn ngữ lập trình nhập môn: Rossum hướng đến sự đơn giản
và dễ hiểu nên cấu trúc Python khá rõ ràng, cho phép viết mã lệnh với số lần gõ phím tối thiểu Ngày nay, Python được đánh giá là ngôn ngữ lý tưởng cho việc bắt đầu học lập trình
Mã nguồn mở và hoàn toàn miễn phí: Khác với nhiều ngôn
ngữ lập trình bậc cao, Python cho phép sử dụng một cách miễn phí tất cả phần mềm, chương trình được viết Mã nguồn mở sở hữu cộng đồng đông đảo, giúp bạn giải đáp mọi thắc mắc và liêntục cập nhật, cải thiện
Tương thích nhiều nền tảng: Python dễ dàng tương thích với
nhiều nền tảng như Windows, MacOS, Linux Thậm chí là di chuyển qua lại giữa các nền tảng cũng không gặp nhiều khó khăn
Khả năng nhúng và mở rộng: Có thể kết hợp cùng các ngôn
ngữ lập trình khác để phát triển các ứng dụng phức tạp
Tự động chuyển đổi code: Khi dùng Python, người sử dụng
hoàn toàn không phải lo các vấn đề về quản lý bộ nhớ, dọn dẹp
dữ liệu… Python sẽ tự động chuyển code sang ngôn ngữ máy tính có thể hiểu
Thư viện lớn: Nhờ số lượng thư viện khổng lồ của mình Python
hoàn toàn đáp ứng được mọi nhu cầu lập trình khác nhau
Ngôn ngữ lập trình hướng đối tượng: Dù được đơn giản hóa
cho người mới học song Python vẫn giữ bản chất hướng đối tượng Giải quyết các vấn đề trong lập trình một cách trực quan,
dễ hiểu
Khoa học và phân tích số liệu: Hiếm có ngôn ngữ nào có được
sức mạnh lớn như Python khi có thể sử dụng trong cả Data
Analytics, Machine Learning, Computing Science Bằng số
Trang 16lượng thư viện chuẩn lớn và các plugin như Numpy, SciPy và Panda, Python hoàn toàn đáp ứng tốt công việc phân tích và tính toán.
Tạo nguyên mẫu hay bản thử của phần mềm: Một tính năng
rất hay dành cho các nhà lập trình, giúp tạo bản mẫu để thử nghiệm trước khi đưa vào thực tiễn
Cách cài đặt Python
Hướng dẫn các bạn cách cài đặt Python trên 2 nền tảng phổ biến nhất hiện nay:
Cài đặt Python trên Windows
Cài đặt Python trên Linux
Cách cài đặt Python trên Windows
Chọn phương án cài tự động
Download Python phiên bản mới nhất cho Windows tại đây
Trang 17Tiến hành cái đặt phần mềm và đóng cửa sổ sau khi hoàn tất.
Download PIP3 cho Windows tại đây, lưu vào một thư mục trên máy
Mở CMD hoặc Windows Powershell và cd thư mục đặt file cài vừa tải
python get-pip.py
Chạy câu lệnh trên để tiến hành cái đặt PIP3 trên Windows
print ('Hello world');
Cuối cùng, chạy Python, tạo một file hello-word.py và chèn dòng codetrên vào
python hello-world.py
Mở CMD và cd tới thư mục chứa file
Cách cài đặt Python trên Linux
Dùng tài khoản root hoặc user có quyền sudo, Package Python 3 được tính hợp sẵn trong repository của Ubuntu
Bước 1: fetch package mới nhất về từ Internet bằng câu lệnh
sudo apt-get update
Bước 2: Kiểm tra package của Python
sudo apt-cache search python | grep ^python3
Bước 3: Cài đặt Python 3
sudo apt-get install python3.7
Trang 18Bước 4: Kiểm tra version mặc định của Python 3
python3 version
Cấu hình chuyển đổi version của Python, ví dụ version mặc định là 3.6
và muốn chuyển đổi lên 3.7 vừa cài
sudo update-alternatives install /usr/bin/python3 python3
/usr/local/bin/python3.7 2
sudo update-alternatives install /usr/bin/python3 python3
/usr/bin/python3.6 1
sudo update-alternatives config python3
Trường hợp Ubuntu có version thấp và không có sẵn Python 3 có thể cài từ PPA
sudo add-apt-repository ppa:jonathonf/python-3.7
sudo apt-get update
sudo apt-get install python3.7
Cài đặt Python 3 từ Source, có thể chọn bất cứ version nào của Python
sudo make install
Cài đặt PIP3 trên Ubuntu
Cách 1: Cài từ gói có sẵn của Ubuntu
sudo apt-get install python3-pip
Trang 19 Công cụ hỗ trợ: Visual studio IDE and Anaconda
Visual Studio Code là gì?
Là một trình biên tập lập trình code miễn phí dành cho Windows,Linux và macOS, Visual Studio Code được phát triển bởi Microsoft
Nó được xem là một sự kết hợp hoàn hảo giữa IDE và Code Editor
Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntaxhighlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mãnguồn Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phépngười dùng thay đổi theme, phím tắt, và các tùy chọn khác
Trang 20Tính năng của Visual Studio
Hỗ trợ nhiều ngôn ngữ lập trình
Visual Studio Code hỗ trợ nhiều ngôn ngữ lập trình như C/C++, C#,F#, Visual Basic, HTML, CSS, JavaScript, … Vì vậy, nó dễ dàng pháthiện và đưa ra thông báo nếu chương chương trình có lỗi
Hỗ trợ đa nền tảng
Các trình viết code thông thường chỉ được sử dụng hoặc cho Windowshoặc Linux hoặc Mac Systems Nhưng Visual Studio Code có thể hoạtđộng tốt trên cả ba nền tảng trên
Cung cấp kho tiện ích mở rộng
Trong trường hợp lập trình viên muốn sử dụng một ngôn ngữ lập trìnhkhông nằm trong số các ngôn ngữ Visual Studio hỗ trợ, họ có thể tảixuống tiện ích mở rộng Điều này vẫn sẽ không làm giảm hiệu năngcủa phần mềm, bởi vì phần mở rộng này hoạt động như một chươngtrình độc lập
Kho lưu trữ an toàn