Khái ni m ệ Học sâu là một phương thức trong lĩnh vực trí tuệ nhân tạo AI, được sử dụng để dạy máy tính xử lý dữ liệu theo cách được lấy cảmhứng từ bộ não con người.. Thị giác máy tính
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TIỂU LUẬN HỌC PHẦN HỌC SÂU (DEEP LEARNING)
Đề tài: Tìm hiểu mạng nơ-ron tích chập trong bài toán phân
loại ảnh chó và mèoGiáo viên hướng dẫn: Ngô Hữu Huy Tên nhóm: NHÓM 04 Nhóm sinh viên thực hiện: 1 Đỗ Văn Tú 2 Hà Minh Đức 3 Nguyễn Quang Huấn
Thái Nguyên, năm 2023
Trang 22.1.5 Transfer learning(Học chuyển giao) 19
CHƯƠNG 3 ỨNG DỤNG MẠNG NEURAL TÍCH CHẬP TRONG BÀI TOÁN PHÂN LOẠI ẢNH CHÓ MÈO 22
Trang 3Kết quả 33
Trang 4PHÂN CÔNG NHI M V Ệ Ụ Phân công nhiệm vụ theo tiến độ thực hiện:
5 Tìm hiểu các thư viện python Hà Minh Đức
7 Hoàn thiện, kiểm thử và đánh giá
Nguyễn Quang HuấnĐỗ Văn TúHà Minh Đức8 Làm Slide PowerPoint
Nguyễn Quang HuấnĐỗ Văn TúHà Minh Đức
Trang 5CH ƯƠ NG 1 C S LÝ THUY T Ơ Ở Ế
1.1 H c sâu ọ
1.1.1 Khái ni m ệ Học sâu là một phương thức trong lĩnh vực trí tuệ nhân tạo (AI),
được sử dụng để dạy máy tính xử lý dữ liệu theo cách được lấy cảmhứng từ bộ não con người Mô hình học sâu có thể nhận diện nhiều hìnhmẫu phức tạp trong hình ảnh, văn bản, âm thanh và các dữ liệu khác đểtạo ra thông tin chuyên sâu và dự đoán chính xác Bạn có thể sử dụngcác phương pháp học sâu để tự động hóa các tác vụ thường đòi hỏi trí tuệcon người, chẳng hạn như mô tả hình ảnh hoặc chép lời một tập tin âmthanh
1.1.2 ng d ng Ứ ụ
• Trợ lý kỹ thuật số• Điều khiển tivi từ xa kích hoạt bằng giọng nói• Phát hiện gian lận
• Nhận dạng khuôn mặt tự động• Xe tự lái, thực tế ảo, v.v
1.1.3 Mô hình 1.1.3.1 Công d ng ụ
a) Thị giác máy tính
Thị giác máy tính là khả năng của máy tính thực hiện trích xuất dữliệu cũng như thông tin chuyên sâu từ hình ảnh và video Máy tính có thểsử dụng các kỹ thuật học sâu để hiểu hình ảnh theo cách giống như con
Trang 6người Thị giác máy tính được ứng dụng trong nhiều trường hợp, chẳnghạn như:
• Kiểm duyệt nội dung để tự động loại bỏ nội dung không antoàn hoặc không phù hợp khỏi kho lưu trữ hình ảnh và video
• Nhận diện khuôn mặt để xác định khuôn mặt cũng như cácđặc điểm như mở mắt, đeo kính và để râu
• Phân loại hình ảnh để xác định logo thương hiệu, quần áo,đồ bảo hộ và các chi tiết hình ảnh khác
b) Nhận dạng giọng nói
Các mô hình học sâu có thể phân tích giọng nói con người,bất kể mẫu giọng, cao độ, tông, ngôn ngữ và giọng vùng miền khácnhau Trợ lý ảo như Amazon Alexa và phần mềm phiên âm tự động sửdụng nhận dạng giọng nói để thực hiện các tác vụ sau:
• Hỗ trợ các nhân viên trực tổng đài và tự động phân loạicuộc gọi
• Chuyển đổi các cuộc trò chuyện về y khoa thành văn bảntrong thời gian thực
• Tạo phụ đề chính xác cho video và bản ghi âm cuộc họp đểmở rộng phạm vi tiếp cận nội dung
Trang 7c) Kỹ thuật xử lý ngôn ngữ tự nhiên Máy tính sử dụng các thuật toán học sâu để thu thập thông tin
chuyên sâu và ý nghĩa từ dữ liệu văn bản và tài liệu Khả năng xử lý vănbản tự nhiên, do con người tạo ra này có một số trường hợp sử dụng, kểcả trong các chức năng sau:
● Tổng đài viên ảo và chatbot tự động● Tự động tóm tắt tài liệu hoặc bài viết tin tức● Phân tích nghiệp vụ thông minh các tài liệu dài, chẳng hạn như
các email và biểu mẫu
● Lập chỉ mục các cụm từ quan trọng thể hiện cảm xúc, chẳng hạn
như những bình luận tích cực và tiêu cực trên mạng xã hội
d) Công cụ đề xuất Ứng dụng có thể sử dụng các phương pháp học sâu để theo dõi
hoạt động của người dùng và phát triển các đề xuất cá nhân hóa Cácphương pháp này có thể phân tích hành vi của nhiều người dùng khácnhau và giúp họ khám phá các sản phẩm hoặc dịch vụ mới Ví dụ: nhiềucông ty truyền thông và giải trí, chẳng hạn như Netflix, Fox và Peacock,sử dụng mô hình học sâu để đưa ra các video đề xuất cá nhân hóa
1.1.3.2 Cách ho t đ ng ạ ộ
Các thuật toán học sâu là các mạng nơ-ron được lập mô hình theobộ não con người Ví dụ: một bộ não con người chứa hàng triệu nơ-ron
Trang 8được kết nối với nhau, làm việc cùng nhau để tìm hiểu và xử lý thôngtin Tương tự, các mạng nơ-ron học sâu, hay mạng nơ-ron nhân tạo,được tạo thành từ nhiều lớp nơ-ron nhân tạo hoạt động cùng nhau bêntrong máy tính.
Các nơ-ron nhân tạo là những mô-đun phần mềm được gọi là nút,sử dụng các phép toán để xử lý dữ liệu Các mạng nơ-ron nhântạo là những thuật toán học sâu sử dụng các nút này để giảiquyết các vấn đề phức tạp
Trang 9Lớp đầu vào xử lý và chuyển dữ liệu đến các lớp sâu hơn trong mạng ron Các lớp ẩn này xử lý thông tin ở các cấp độ khác nhau, thích ứngvới hành vi của mình khi nhận được thông tin mới Các mạng học sâu cóhàng trăm lớp ẩn có thể được dùng để phân tích một vấn đề từ nhiều gócđộ khác nhau.
nơ-Ví dụ: nếu bạn phải phân loại hình ảnh của một loài vật chưa xác định,bạn sẽ cần so sánh hình ảnh này với các loài vật đã biết Chẳng hạn, bạnsẽ quan sát hình dáng của cặp mắt, đôi tai, kích thước, số chi và hìnhmẫu lông của loài vật đó Bạn sẽ cố gắng xác định các hình mẫu, chẳnghạn như sau:
• Loài vật có móng guốc nên nó có thể là bò hoặc hươu.• Loài vật có mắt mèo nên nó có thể là một loài mèo hoang dã nào đó Các lớp ẩn trong mạng nơ-ron chuyên sâu hoạt động theo cùngmột cách Nếu một thuật toán học sâu đang cố gắng phân loại một hìnhảnh động vật, mỗi lớp ẩn của thuật toán này sẽ xử lý một đặc điểm khácnhau của con vật và cố gắng phân loại chính xác nó
c) Lớp đầu ra
Lớp đầu ra bao gồm các nút xuất dữ liệu Các mô hình học sâu xuất ra đáp án "có" hoặc "không" chỉ có hai nút trong lớp đầu ra Mặt khác, các mô hình xuất ra nhiều đáp án hơn sẽ có nhiều nút hơn.
1.2 Ngôn ng python ữ
1.2.1 Khái ni m ệ
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứngdụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Cácnhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên
Trang 10nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí,tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.
1.2.2 Đ c đi m ặ ể
Python là một ngôn ngữ thông dịch
Python là một ngôn ngữ thông dịch, điều này nghĩa là ngôn ngữ này trực tiếp chạy từng dòng mã Nếu có lỗi trong mã chương trình, nó sẽ ngừng chạy Do đó, lập trình viên có thể nhanh chóng tìm ra lỗi trong đoạn mã.
Python là một ngôn ngữ linh hoạt
Các lập trình viên không cần phải khai báo loại biến khi viết mã bởi vì Python sẽ xác định chúng vào thời điểm chạy Vì vậy, bạn có thể viết các chương trình Python một cách nhanh chóng hơn.
Python là một ngôn ngữ cấp cao
Python gần gũi với ngôn ngữ con người hơn các ngôn ngữ lập trình khác Do đó, các lập trình viên không cần phải lo lắng về những chức năng cơ bản của nó như kiến trúc và quản lý bộ nhớ.
Python là một ngôn ngữ lập trình hướng đối tượng
Python coi mọi thứ đều là đối tượng, nhưng ngôn ngữ này cũng hỗ trợ các phương thức lập trình khác như lập trình hàm và lập trình cấu trúc.
Trang 11• Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể táisử dụng cho hầu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cầnphải viết mã từ đầu.
• Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lậptrình phổ biến khác như Java, C và C++
• Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà pháttriển nhiệt tình hỗ trợ trên toàn thế giới Nếu gặp phải vấn đề, bạn sẽ cóthể nhận được sự hỗ trợ nhanh chóng từ cộng đồng
• Trên Internet có rất nhiều tài nguyên hữu ích nếu bạn muốn họcPython Ví dụ: bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu vàhướng dẫn dành cho nhà phát triển
• Python có thể được sử dụng trên nhiều hệ điều hành máy tính khácnhau, chẳng hạn như Windows, macOS, Linux và Unix
1.2.4 ng d ng Ứ ụ 1.2.4.1.Phát tri n web phía máy ch ể ủ
Phát triển web phía máy chủ bao gồm những hàm backend phức tạp màcác trang web thực hiện để hiển thị thông tin cho người dùng Ví dụ: cáctrang web phải tương tác với cơ sở dữ liệu, giao tiếp với các trang webkhác và bảo vệ dữ liệu khi truyền qua mạng
Trang 12Python hữu ích trong việc lập trình mã phía máy chủ bởi vì ngôn ngữnày cung cấp nhiều thư viện bao gồm mã viết sẵn cho các hàm backendphức tạp Các nhà phát triển cũng sử dụng một loạt các khung Pythoncung cấp tất cả những công cụ cần thiết để xây dựng ứng dụng web mộtcách nhanh chóng và dễ dàng hơn Ví dụ: các nhà phát triển có thể tạoứng dụng web khung trong nháy mắt bởi vì họ không cần phải lập trìnhnó từ đầu Sau đó, họ có thể kiểm tra ứng dụng web này bằng cách sửdụng các công cụ kiểm thử của khung, mà không cần phụ thuộc vàonhững công cụ kiểm thử bên ngoài.
1.2.4.2.T đ ng hóa b ng các t p l nh Python ự ộ ằ ậ ệ
Ngôn ngữ tập lệnh là một ngôn ngữ lập trình tự động hóa các tác vụ màthường được con người thực hiện Các lập trình viên thường xuyên sửdụng các tập lệnh Python để tự động hóa nhiều tác vụ hàng ngày như:
● Đổi tên một số lượng lớn tệp cùng lúc
● Loại bỏ các từ trùng lặp trong tệp văn bản● Thực hiện các phép tính toán cơ bản● Gửi email
● Tải xuống nội dung● Thực hiện phân tích nhật ký cơ bản● Tìm kiếm lỗi trong nhiều tệp
1.2.4.3.Khoa h c d li u và máy h c ọ ữ ệ ọ
Khoa học dữ liệu trích xuất thông tin quý giá từ dữ liệu và máy học(ML) dạy máy tính tự động học hỏi từ dữ liệu và đưa ra các dựđoán chính xác Các nhà khoa học dữ liệu sử dụng Python cho cáctác vụ khoa học dữ liệu sau:
Trang 13• Sửa và loại bỏ dữ liệu không chính xác, hay còn được gọi là làmsạch dữ liệu
• Trích xuất và chọn lọc các đặc điểm đa dạng của dữ liệu• Ghi nhãn dữ liệu gán tên có ý nghĩa cho dữ liệu• Tìm các số liệu thống kê khác nhau từ dữ liệu• Trực quan hóa dữ liệu bằng cách sử dụng các biểu đồ và đồ thị,
chẳng hạn như biểu đồ đường, biểu đồ cột, biểu đồ tần suất vàbiểu đồ tròn
1.2.4.4 Phát tri n ph n m m ể ầ ề
Các nhà phát triển phần mềm thường sử dụng Python cho những tácvụ phát triển và ứng dụng phần mềm khác nhau, chẳng hạn như:• Theo dõi lỗi trong mã của phần mềm
• Tự động xây dựng phần mềm• Đảm nhận quản lý dự án phần mềm• Phát triển nguyên mẫu phần mềm• Phát triển các ứng dụng máy tính bằng cách sử dụng những thư viện
Giao diện đồ họa người dùng (GUI)• Phát triển từ các trò chơi văn bản đơn giản cho đến những trò chơi
điện tử phức tạp
Trang 141.2.4.5 T đ ng hóa ki m th ph n m m ự ộ ể ử ầ ề
Kiểm thử phần mềm là quy trình kiểm tra xem kết quả thực tế từ phầnmềm có khớp với kết quả mong đợi không để đảm bảo rằng phầnmềm không có lỗi
• Các nhà phát triển sử dụng khung kiểm thử đơn vị Python, chẳnghạn như Unittest, Robot và PyUnit, để kiểm thử các hàm do họviết
• Các kỹ sư kiểm thử phần mềm sử dụng Python để viết các trườnghợp kiểm thử cho nhiều tình huống khác nhau Ví dụ: họ sử dụngngôn ngữ này để kiểm thử giao diện người dùng của một ứng dụngweb, nhiều thành phần của phần mềm và những tính năng mới
1.2.5 Th vi n ư ệ
NumPy
● Chuyển đổi một tệp sang một loại tệp khácNumPy là một thư viện phổ biến mà các nhà phát triển sử dụngđể dễ dàng tạo và quản lý nhóm, thao tác với các hình dạng logicvà thực hiện các phép toán đại số tuyến tính NumPy hỗ trợ tíchhợp với nhiều ngôn ngữ như C và C ++
Pandas
Pandas cung cấp cấu trúc dữ liệu được tối ưu hóa và linh hoạt màbạn có thể sử dụng để thao tác với dữ liệu chuỗi thời gian và dữliệu có cấu trúc, chẳng hạn như bảng và nhóm Ví dụ, bạn có thểsử dụng Pandas để đọc, ghi, hợp nhất, lọc và nhóm dữ liệu Thưviện này được nhiều người sử dụng cho các tác vụ khoa học dữliệu, phân tích dữ liệu và ML
Trang 15Các nhà phát triển sử dụng Matplotlib để hiển thị dữ liệu dướidạng đồ họa hai và ba chiều (2D và 3D) chất lượng cao Thư việnnày thường được sử dụng trong các ứng dụng khoa học VớiMatplotlib, bạn có thể trực quan hóa dữ liệu bằng cách hiển thị dữliệu dưới dạng các biểu đồ khác nhau, chẳng hạn như biểu đồ cộtvà biểu đồ đường Bạn cũng có thể hiển thị nhiều biểu đồ cùnglúc và các chi tiết đồ họa có thể được di chuyển qua mọi nền tảng
Requests
Thư viện Requests cung cấp nhiều hàm hữu ích cần thiết để pháttriển web Bạn có thể sử dụng thư viện này để gửi các yêu cầuHTTP, bổ sung tiêu đề, thêm tham số URL, bổ sung dữ liệu vàthực hiện nhiều tác vụ khác khi giao tiếp với các ứng dụng web
TensorFlow
TensorFlow là một thư viện mã nguồn mở để xử lý các tác vụ tính toán số học trên đồ thị TensorFlow được phát triển bởi Google Brain Team và được sử dụng rộng rãi cho các tác vụ liên quan đến Machine Learning và Deep Learning
Keras
Keras là thư viện mạng nơ-ron chuyên sâu của Python với khảnăng hỗ trợ tuyệt vời cho việc xử lý dữ liệu, trực quan hóa và hơnthế nữa Keras hỗ trợ nhiều mạng nơ-ron Thư viện này có cấutrúc mô-đun mang lại sự linh hoạt cho việc lập trình các ứng dụngsáng tạo
Trang 16OpenCV-Python là một thư viện mà các nhà phát triển sử dụng đểxử lý hình ảnh cho các ứng dụng thị giác máy tính Thư viện nàycung cấp nhiều hàm cho các tác vụ xử lý hình ảnh như đọc và ghihình ảnh cùng lúc, xây dựng môi trường 3D từ môi trường 2Dcũng như chụp và phân tích hình ảnh từ video
JetBrains, một công ty phát triển công cụ phần mềm tại Séc, đã tạo raPyCharm Nó có một phiên bản cộng đồng miễn phí phù hợp với các ứngdụng Python nhỏ và một phiên bản chuyên nghiệp trả phí dành cho việcxây dựng các ứng dụng Python quy mô lớn, với đầy đủ những tính năngsau:
CoffeeScript, TypeScript, AngularJS và Node
Trang 17· Khả năng chạy, gỡ lỗi, kiểm thử và triển khai các ứng dụng trongmáy ảo từ xa
đề về hiệu suất trong mã và trình chạy thử nghiệm để chạy cácbài kiểm thử đơn vị
IDLE
Môi trường phát triển và học hỏi tích hợp (IDLE) là Python IDE đượccài đặt theo mặc định Nó chỉ được phát triển với Python bằng bộ côngcụ Tkinter GUI và cung cấp các tính năng sau:
· Hoạt động trên nhiều hệ điều hành như Windows, Unix và macOS· Cung cấp một cửa sổ shell để chạy các lệnh và hiển thị kết quả· Cung cấp trình soạn thảo văn bản trên nhiều cửa sổ với khả năng
đánh dấu cú pháp mã và hoàn thành mã tự động· Có trình gỡ lỗi riêng
Spyder
Spyder là một IDE nguồn mở được nhiều nhà khoa học và nhà phântích dữ liệu sử dụng Nó cung cấp trải nghiệm phát triển toàn diệnvới các tính năng phân tích dữ liệu nâng cao, trực quan hóa dữ liệuvà gỡ lỗi Spyder cũng bao gồm các tính năng sau:
· Trình chỉnh sửa mã hỗ trợ nhiều ngôn ngữ
Trang 18Atom là một trình soạn thảo miễn phí do GitHub phát triển, hỗ trợ viếtmã bằng nhiều ngôn ngữ lập trình, bao gồm cả Python Sử dụng Atom,các nhà phát triển có thể trực tiếp làm việc với GitHub, trang web nơibạn có thể lưu mã của mình một cách tập trung Atom cung cấp các tínhnăng sau:
1.3.1 AI1.3.1.1 AI là gì?
AI - Artificial Intelligence hay còn gọi là Trí tuệ nhân tạo là mộtngành khoa học, kỹ thuật chế tạo máy móc thông minh, đặc biệt là cácchương trình máy tính thông minh
AI được thực hiện bằng cách nghiên cứu cách suy nghĩ của conngười, cách con người học hỏi, quyết định và làm việc trong khi giảiquyết một vấn đề nào đó, và sử dụng những kết quả nghiên cứu này nhưmột nền tảng để phát triển các phần mềm và hệ thống thông minh, từ đóáp dụng vào các mục đích khác nhau trong cuộc sống Nói một cách dễhiểu thì AI là việc sử dụng, phân tích các dữ liệu đầu vào nhằm đưa ra sựdự đoán rồi đi đến quyết định cuối cùng
1.3.1.2 Mục Đích
Tạo ra các hệ thống chuyên gia - là các ứng dụng máy tính đượcphát triển để giải quyết các vấn đề phức tạp trong một lĩnh vực cụ thể, ởmức độ thông minh và chuyên môn của con người
Thực hiện trí thông minh của con người trong máy móc - Tạo ra cáchệ thống có thể hiểu, suy nghĩ, học hỏi và hành xử như con người