43
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI: NHẬN DIỆN HÌNH ẢNH Sinh 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 Lớp : 17IT1 1

MẪU ĐỒ ÁN -KHOÁ LUẬN TỐT NGHIỆPdaotao.sict.udn.vn/uploads/2020/07/1595298112-dacs5.doc · Web viewDANH MỤC TÀI LIỆU THAM KHẢO 35 DANH MỤC HÌNH Trang Hình 1.2

  • Upload
    others

  • View
    2

  • Download
    1

Embed Size (px)

Citation preview

MẪU ĐỒ ÁN -KHOÁ LUẬN TỐT NGHIỆP

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: NHẬN DIỆN HÌNH ẢNH

Sinh 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

Lớp : 17IT1

Đà nẵng, tháng 07 năm 2020

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 5

NHẬN DIỆN HÌNH ẢNH

Đà Nẵng, tháng 07 năm 2020

LỜI CẢM ƠN

NHẬN XÉT

(Của giảng viên hướng dẫn)

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

MỤC LỤC

Trang

MỞ ĐẦU3

Chương 1Giới thiệu7

1.1Tổng quan7

1.2Phương pháp, kết quả10

121.3Cấu trúc đồ án

13Chương 2Nghiên cứu tổng quan

132.1Phương pháp

132.2Kết luận

14Chương 3Thiết kế hệ thống

14Thiết kế chi tiết

15Chương 4Triển khai xây dựng

Chương 5Kết luận và Hướng phát triển34

DANH MỤC TÀI LIỆU THAM KHẢO35

DANH MỤC HÌNH

Trang

Hình 1.2 – Nhãn hình 111

Hình 1.2 – Nhãn hình 212

12Hình 3 – Nhãn hình 1 sơ đồ thực hiện

12Hình 3 – Nhãn hình 2 sơ đồ làm việc

Hình 5 – Nhãn hình 1 ảnh ban đầu34

Hình 5 – Nhãn hình 2 ảnh đã được xử lý, nhận dạng34

Chương 1 Giới thiệu1.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ủa con 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ả.

Cô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ắc rằ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ổ biế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 learning và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ốn tí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 đặc biệt.

ImageAI 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ệp hoặ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ác nhau.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:

· Nhận dạng đối tượng

· Nhận dạng mẫu

· Định vị các bản sao (chính xác hoặc một phần)

· Tìm kiếm hình ảnh theo phân đoạn

· 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

Dữ liệu ra

Hình 1.2 – Nhãn hình 2

1.3 Cấu trúc đồ án

Chương 1Giới thiệu7

1.1Tổng quan7

1.2Phương pháp, kết quả10

121.3Cấu trúc đồ án

13Chương 2Nghiên cứu tổng quan

132.1Phương pháp

132.2Kết luận

14Chương 3Thiết kế hệ thống

14Thiết kế chi tiết

15Chương 4Triển khai xây dựng

Chương 5Kết luận và Hướng phát triển34

DANH MỤC TÀI LIỆU THAM KHẢO35

Chương 2 Nghiên cứu tổng quan2.1 Phương pháp · Dự đoán hình ảnh

· Phát hiện đối tượng

· 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

· Đào tạo mô hình tùy chỉnh

· Dự đoán hình ảnh tùy chỉnh

· Đào tạo mô hình phát hiện tùy chỉnh

· Phát hiện đối tượng tùy chỉnh

· Phân tích & phát hiện đối tượng video tùy chỉnh2.2 Kết luận

Thực hiện đúng theo thứ tự phương pháp đã đề raChương 3 Thiết kế hệ thống

· 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

Chương 4 Triển khai xây dựng

· Ngôn ngữ thực hiện: PYTHON

Python là gì?

Python là ngôn ngữ lập trình hướng đối tượng đa năng có cấu trúc dữ liệu cấp cao mạnh mẽ và hệ thống thư viện lớn. Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động, cú pháp rõ ràng, đơn giản.

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ên tụ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ố lượ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.

Tiế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 code trê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

Bướ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 2sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1sudo 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.7sudo 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 3 build từ source.

cd /usr/src

wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz tar xvfJ Python-3.7.1.tar.xzcd Python-3.7.1/sudo ./configure --enable-optimizations

sudo make

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

Cách 2: Cài từ Source

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py --user

Kiểm tra PIP 3

pip3 --version

· 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ó syntax highlighting, 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ép người dùng thay đổi theme, phím tắt, và các tùy chọn khác.

Tí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át hiệ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 Windows hoặ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ình không nằm trong số các ngôn ngữ Visual Studio hỗ trợ, họ có thể tải xuống tiện ích mở rộng. Điều này vẫn sẽ không làm giảm hiệu năng của phần mềm, bởi vì phần mở rộng này hoạt động như một chương trình độc lập.

· Kho lưu trữ an toàn

Đi kèm với sự phát triển của lập trình là nhu cầu về lưu trữ an toàn. Với Visual Studio Code, người dùng có thể hoàn toàn yên tâm vì nó dễ dàng kết nối với Git hoặc bất kỳ kho lưu trữ hiện có nào.

· Hỗ trợ web

Visual Studio Code hỗ trợ nhiều ứng dụng web. Ngoài ra, nó cũng có một trình soạn thảo và thiết kế website.

· Lưu trữ dữ liệu dạng phân cấp

Phần lớn tệp lưu trữ đoạn mã đều được đặt trong các thư mục tương tự nhau. Ngoài ra, Visual Studio Code còn cung cấp các thư mục cho một số tệp đặc biệt quan trọng.

· Hỗ trợ viết Code

Một số đoạn code có thể thay đổi chút ít để thuận tiện cho người dùng. Visual Studio Code sẽ đề xuất cho lập trình viên các tùy chọn thay thế nếu có.

· Hỗ trợ thiết bị đầu cuối

Visual Studio Code có tích hợp thiết bị đầu cuối, giúp người dùng khỏi phải chuyển đổi giữa hai màn hình hoặc trở về thư mục gốc khi thực hiện các thao tác.

· Màn hình đa nhiệm

Người dùng Visual Studio Code có thể mở cùng lúc nhiều tệp tin và thư mục – mặc dù chúng không hề liên quan với nhau.

· Intellisense

Hầu hết các trình viết mã đều có tính năng nhắc mã Intellisense, nhưng ít chương trình nào chuyên nghiệp bằng Visual Studio Code. Nó có thể phát hiện nếu bất kỳ đoạn mã nào không đầy đủ. Thậm chí, khi lập trình viên quên không khai báo biến, Intellisense sẽ tự động giúp họ bổ sung các cú pháp còn thiếu.

· Hỗ trợ Git

Visual Studio Code hỗ trợ kéo hoặc sao chép mã trực tiếp từ GitHub. Mã này sau đó có thể được thay đổi và lưu lại trên phần mềm.

· Bình luận

Việc để lại nhận xét giúp người dùng dễ dàng nhớ công việc cần hoàn thành.

Download visual studio code for windows

Việc cài đặt Visual Code (VS) trên window rất đơn giản. Bạn chỉ việc vào link download. Chọn bản cài đặt cho Window là được.

Sau khi tải bộ cài đặt xong, bạn click đúp vào tệp cài đặt (VSCodeSetup-.exe). Sẽ chỉ mất khoảng một phút để cài đặt, tùy thuộc vào cấu hình máy tính của bạn.

Ok, bạn sẽ nhìn thấy màn hình cài đặt như bên dưới:

Bạn chọn NEXT để chuyển sang màn hình chấp nhận license.

Mình tin chắc rằng sẽ chẳng có ai rảnh để mà đọc hết các điều khoản đâu. Vậy chọn “I accept te agreement” để tiếp tục thôi.

Bạn có thể lựa chọn đường dẫn cài đặt khác tùy ý. Nhưng với kinh nghiệm của mình thì chả hơi sức đâu mà đổi cả, cứ mặc định thôi.

Phần này, ý của họ là bạn có muốn tạo một menu để chạy Visual Code trong trình start menu không? Nếu không muốn thì tick vào option: “Don’t create a Start Menu folder”.

Tương tự, phần này bạn sẽ có thêm các lựa chọn như: Tạo sẵn một shortcut ngoài desktop, thêm các option khi nhấn chuột phải chuột. Mình nghĩ tùy mỗi người mà chọn các option này.

Vậy là xong rồi đấy. Bạn đợi một lúc là cài đặt xong, bạn nhấn nút finish để mở visual code lên.

Cài đặt Visual Code trên Ubuntu (Linux)

Việc download visual studio code ubuntu cũng giống như bao phần mềm khác thôi. Một là bạn chọn tải file .Deb ở trang download ở trên, rồi cài đặt qua Ubuntu Software center.

Tuy nhiên, để cho “chuyên nghiệp”, mình sẽ hướng dẫn các bạn cách cài đặt bằng dòng lệnh nhé.

Đầu tiên, bạn chạy lênh update các package và cài đặt dependencies.

· $ sudo apt update

· $ sudo apt install software-properties-common apt-transport-https wget

Sau đó import Microsoft GPG key bằng lệnh Wget và enable Visual Studio Code repository:

· $ wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -

· $ sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

Cuối cùng là gõ lệnh install để cài đặt thôi

· $ sudo apt update

· $ sudo apt install code

Vậy là xong rồi đấy.

Anaconda là gì

Anaconda là nền tảng mã nguồn mở về Khoa học dữ liệu trên Python thông dụng nhất hiện nay. Anaconda với hơn 11 triệu người dùng, Anaconda là cách nhanh nhất và dễ nhất để học Khoa học dữ liệu với Python hoặc R trên Windows, Linux và Mac OS X. Lợi ích của Anaconda:

· Dễ dàng tải 1500+ packages về Python/R cho data science

· Quản lý thư viện, môi trường và dependency giữa các thư viện dễ dàng

· Dễ dàng phát triển mô hình machine learning và deep learning với scikit-learn, tensorflow, keras

· Xử lý dữ liệu tốc độ cao với numpy, pandas

· Hiện thị kết quả với Matplotlib, Bokeh

Trong khi đó Spyder là 1 trong những IDE (môi trường tích hợp dùng để phát triển phần mềm) tốt nhất cho data science và quang trọng hơn là nó được cài đặt khi bạn cài đặt Anaconda.

Yêu cầu phần cứng và phần mềm

· Hệ điều hành: Win 7, Win 8/8.1, Win 10, Red Hat Enterprise Linux/CentOS 6.7, 7.3, 7.4, and 7.5, and Ubuntu 12.04+.

· Ram tối thiểu 4GB

· Ổ cứng trống tối thiểu 3GB để tải và cài đặt

Anaconda là gì?

– Anaconda là một Distribution miễn phí và mã nguồn mở của Python và R.– Anaconda giúp đơn giản hóa việc cài đặt, quản lý và triển khai packages (numpy, scipy, tensorflow, …).– Anaconda phục vụ cho nhiều mục địch, đặc biệt trong Data Science (Khoa học dữ liệu), Machine learnig (Máy học), Big Data (Dữ liệu lớn), Image Processing (Xử lý ảnh), …– Anaconda hiện nay đã có hơn 6 triệu người dùng và hơn 1400 packages khoa học dữ liệu dành cho Windows, Linux và MacOS.

Cài đặt Anaconda trên windows

– Các bạn truy cập trang chủ Anaconda để tải về bộ cài đặt 

– Ở đây mình tải về phiên bản Anaconda cho Python 3.7 (Python 2.x sẽ khác Python 3.x một chút và mình cũng khuyên các bạn mới bắt đầu với python nên chọn phiên bản 3.x)– Nhiệm vụ của bạn ở đây chỉ cần nhấn Next, Accept, Skip và Finish để thực hiện cài đặt.

Cài đặt

Để thực hiện nhận diện đối tượng bằng ImageAI, tất cả những gì bạn cần làm là:

1. Cài đặt python

2. Cài đặt ImageAI và phụ thuộc của nó.

3. Tải xuống file mô hình Object Detection

4. Chạy chương trình

Bây giờ, hãy bắt đầu

1. Tải xuống và cài đặt python 3 từ https://python.org

2. Tensorflow 1.4.0 (and later versions)

pip3 install --upgrade tensorflow

3. Numpy 1.13.1 (and later versions)

  pip3 install numpy 

4. SciPy 0.19.1 (and later versions)

pip3 install scipy

 

5. OpenCV

  pip3 install opencv-python

 

6. Pillow

 

pip3 install pillow

 

7. Matplotlib

 

pip3 install matplotlib

 

8. h5py

 

pip3 install h5py

 

9. Keras 2.x

 

pip3 install keras

 

10. ImageAI

 

pip install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

 

11. Tải xuống mô hình RetinaNet sẽ được sử dụng để nhận diện đối tượng

Mọi thứ đã sẵn sàng, tạo một tệp python là ObjectDetection.py. Sao chép file mô hình RetinaNet và hình ảnh mà bạn muốn phát hiện vào thư mục chứa file ObjectDetection.py.

Nhập vào file ObjectDetection.py đoạn mã sau:

· Mã nguồn xử lý ảnh

from imageai.Detection import ObjectDetection

import os

execution_path = os.getcwd()

detector = ObjectDetection()

detector.setModelTypeAsRetinaNet()

detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))

detector.loadModel()

detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))

for eachObject in detections:

    print(eachObject["name"] , " : " , eachObject["percentage_probability"] )

Ba dòng đầu tiên, đã import lớp ImageAI Object Detection ở dòng đầu tiên, dòng thứ 2 là import lớp python os và xác định một biến để giữ đường dẫn đến thư mục chứa file python của chúng ta. Tệp mô hình RetinaNet và hình ảnh nằm ở dòng thứ ba

1

2

3

4

5

6

 

from imageai.Detection import ObjectDetection

import os

 

execution_path = os.getcwd()

Tiếp 5 dòng mã sau, chúng ta đã định nghĩa lớp object detection trong dòng đầu, thiết lập kiểu mô hình cho RetinaNet trong dòng thứ hai, thiết lập đường dẫn của mô hình RetinaNet trong dòng thứ ba, load mô hình vào lớp object detection ở trong dòng thứ tư, sau đó ta gọi hàm detection và được phân tích cú pháp trong đường dẫn hình ảnh đầu vào và đường dẫn hình ảnh đầu ra trong dòng thứ năm.

1

2

3

4

5

6

7

 

detector = ObjectDetection()

detector.setModelTypeAsRetinaNet()

detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))

detector.loadModel()

detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg")

 

Trong hai dòng mã cuối, ta lặp qua tất cả các kết quả được trả về bởi hàm detector.detectObjectsFromImage trong dòng đầu tiên, sau đó in ra tên và xác suất phần trăm của mô hình trên từng đối tượng được phát hiện trong hình ảnh trong dòng thứ hai.

1

2

3

4

 

for eachObject in detections:

    print(eachObject["name"] + " : " + eachObject["percentage_probability"] )

 

ImageAI hỗ trợ nhiều tùy chỉnh mạnh mẽ của quá trình nhận diện đối tượng. Một trong số đó là khả năng trích xuất hình ảnh của từng đối tượng được phát hiện trong hình ảnh. Bằng cách thêm tham số extract_detected_objects=True vào hàm detectObjectsFromImage. Lớp object detection sẽ tạo một thư mục cho các đối tượng hình ảnh, trích xuất từng ảnh, lưu từng ảnh vào thư mục mới.

1

2

3

4

 

detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"), extract_detected_objects=True)

 

 

Chương 5 Kết luận

· Dữ liệu vào

Hình 5 – Nhãn hình 1 ảnh ban đầu

· Dữ liệu ra

Hình 5 – Nhãn hình 2 ảnh đã được xử lý, nhận dạng

DANH MỤC TÀI LIỆU THAM KHẢO

Tiếng Việt:

1. Python cơ bản. Ebook Python tiếng Việt siêu cơ bản của Võ Tuấn Duy.

Tiếng Anh:

1. A Byte of Python.

2. Think Python 2nd Edition.

3. Automate the Boring Stuff with Python.

4. Dive into Python 3. ...

5. Learn Python the Hard Way.

6. Invent Your Own Computer Game with Python.

7. Making Games with Python and Pygame.

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 được rấ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.

2