Phát biểu bài toánBài toán: Nhận diện lứa tuổi trẻ con, trưởng thành, cao tuổi của người đi trong thangmáy của Vinhomes Smart City để phát clip quảng cáo phù hợpInput: Hình ảnh khuôn mặt
GIỚI THIỆU CHUNG
Giới thiệu về đơn vị sử dụng - Vinhomes Smart City
Vinhomes Smart City được khởi công xây dựng từ năm 2018 tại xã Tây Mỗ và xã Đại
Mỗ, quận Nam Từ Liêm, Hà Nội, với diện tích 280 ha, là đại đô thị thông minh đầu tiên tại Việt Nam, mang đẳng cấp quốc tế Đây là sản phẩm tiên phong của tập đoàn Vingroup, ứng dụng công nghệ tiên tiến để tạo ra hệ sinh thái thông minh, toàn diện, mang lại cuộc sống năng động, hiện đại và thời thượng cho cư dân.
Vinhomes Smart City, nằm ở vị trí đắc địa cửa ngõ phía Tây Hà Nội, kết nối nhanh chóng với các địa điểm trọng điểm và đại đô thị khác Dự án được phát triển dựa trên mô hình thành công của các khu đô thị quốc tế như Singapore và Fujisawa, mang đến cho cư dân hệ sinh thái tiện ích đẳng cấp từ Vingroup, bao gồm Vinhomes, Vinmec, Vinschool và Vincom Điều này đáp ứng đầy đủ nhu cầu hàng ngày từ ăn uống, học tập, mua sắm đến giải trí và chăm sóc sức khỏe Với nhiều ưu điểm nổi bật, Vinhomes Smart City luôn thu hút sự quan tâm của cư dân và nhà đầu tư bất động sản.
Trí tuệ nhân tạo AI 100% (1) 23
Trí tuệ nhân tạo AI None
Trí tuệ nhân tạo AI None
Bài t ậ p l ớ n AI 1 - Bài t ậ p l ớ n v ề chat bot…
Trí tuệ nhân tạo AI None
Bai tap thuc hanh chuong 3
Trí tuệ nhân tạo AI None
Hình 1 Sơ đồ tổng thể Vinhomes Smart City
Tính đến ngày 31 tháng 12 năm 2022, tổng tài sản của Vinhomes đạt 361,2 nghìn tỷ đồng, tăng 57% so với năm 2021 Khoản tiền và tương đương tiền cũng tăng 53%, lên hơn 14,7 nghìn tỷ đồng, nhờ vào việc mở bán thành công các đại dự án mới Điều này đã tạo động lực cho Vinhomes, đặc biệt là Vinhomes Smart City, khẳng định vị trí hàng đầu trong lĩnh vực bất động sản, đồng thời nâng cao chất lượng sống và tiện ích cho cộng đồng dân cư.
Giới thiệu về hoạt động quảng cáo
Quảng cáo không chỉ là nghệ thuật bán hàng mà còn là công cụ cạnh tranh quan trọng giữa các thương nhân Xuất hiện từ hàng ngàn năm trước, quảng cáo đã gắn liền với sự phát triển của thành phố và thương mại Theo Điều 102 Luật Thương mại 2005, quảng cáo được định nghĩa là hoạt động xúc tiến thương mại nhằm giới thiệu hàng hóa và dịch vụ đến khách hàng Qua đó, các doanh nghiệp có thể tiếp cận người tiêu dùng, tạo ra nhu cầu, tăng cường sức mua và mở rộng thị phần trên thị trường.
Trí tuệ nhân tạo AI None
Quảng cáo cung cấp cho người tiêu dùng thông tin cần thiết về sản phẩm và dịch vụ, giúp họ đưa ra quyết định lựa chọn hàng hóa Nó cũng giúp người tiêu dùng nhận biết thương hiệu, giá cả và địa điểm mua sắm Thông qua quảng cáo thương mại, người tiêu dùng có thể tiếp cận thông tin về sản phẩm, từ đó có sự định hướng rõ ràng trong việc lựa chọn hàng hóa và dịch vụ.
Ngày nay, quảng cáo thương mại đóng vai trò quan trọng trong kinh doanh, khác hẳn so với những năm 90 khi chỉ tập trung vào quảng cáo ngoài trời với thiết kế đơn giản Trong những năm gần đây, ngành quảng cáo Việt Nam đã phát triển nhanh chóng với nhiều sản phẩm đa dạng về mẫu mã và chất lượng Quảng cáo hiện diện rộng rãi trên các kênh truyền hình, báo chí, in ấn, và đặc biệt là trên Internet qua các mạng xã hội như Facebook, Instagram, TikTok, và YouTube Ý thức của doanh nghiệp Việt Nam về quảng cáo và lợi ích của nó đã được nâng cao rõ rệt.
Hình 2 Quảng cáo trong thời đại công nghệ số
Quảng cáo mang lại nhiều lợi ích, nhưng cũng tồn tại những mặt trái đáng lo ngại Nhiều sản phẩm chức năng hiện nay được quảng cáo là giúp giảm cân nhanh chóng mà không có sự kiểm chứng từ cơ quan chức năng, tiềm ẩn nguy cơ cho sức khỏe người tiêu dùng Ngoài ra, trên các kênh YouTube có nội dung trẻ em, quảng cáo từ các thương hiệu lớn như Thế giới Di động, Samsung hay Vivo thường xuất hiện bên dưới những bình luận thô tục và hình ảnh không phù hợp, ảnh hưởng tiêu cực đến tâm hồn trẻ thơ.
Hình 3 Quảng cáo của trang thương mại điện tử Vui Vui (thuộc Thế giới Di động) hiển thị trên video không phù hợp
Doanh nghiệp cần kiểm soát chặt chẽ quảng cáo của mình để tránh những mặt trái còn tồn đọng, đồng thời cần sự can thiệp của Nhà nước, đặc biệt là Bộ Thông tin và Truyền thông Bộ này cần phối hợp với các ban, ngành khác và chỉ đạo các đơn vị chức năng tăng cường rà soát, xử lý các trường hợp quảng cáo có nội dung xấu, giả mạo, không trung thực và vi phạm pháp luật.
Phát biểu bài toán
Bài toán: Nhận diện lứa tuổi (trẻ con, trưởng thành, cao tuổi) của người đi trong thang máy của Vinhomes Smart City để phát clip quảng cáo phù hợp
Input: Hình ảnh khuôn mặt người thuộc một trong 3 lớp (loại): trẻ con, người trưởng thành, người cao tuổi.
Output: Kết quả dự đoán ảnh input thuộc lớp nào trong 3 lớp trên.
Thị giác máy tính là lĩnh vực nghiên cứu về thu nhận và xử lý ảnh kỹ thuật số, nhằm phân tích và nhận diện hình ảnh từ thế giới thực để tạo ra thông tin số Phân tích khuôn mặt, một nhánh quan trọng trong thị giác máy tính, đã được nghiên cứu từ những năm 90, cung cấp thông tin giá trị như danh tính, giới tính, chủng tộc, lứa tuổi và cảm xúc Trong đó, lứa tuổi là thuộc tính quan trọng, được ứng dụng rộng rãi trong thống kê dân số, thực thi chính sách an sinh xã hội và phân loại khách hàng.
Mặc dù công nghệ AI đang phát triển mạnh mẽ, khả năng đọc hiểu thông tin từ hình ảnh vẫn còn hạn chế và chỉ hiệu quả với một số nhóm người nhất định Các yếu tố như độ tuổi, giới tính và đặc điểm nhận dạng khác nhau giữa các vùng miền, chẳng hạn như người châu Á và châu Âu, ảnh hưởng đến hiệu suất của công nghệ này Để đạt được kết quả tốt nhất, công nghệ nhận dạng khuôn mặt yêu cầu người dùng phải hướng mặt rõ ràng về phía camera và không đeo khẩu trang hay mũ, nhằm cải thiện trải nghiệm khách hàng.
Mặc dù còn nhiều thách thức trong nghiên cứu và ứng dụng, nhận dạng lứa tuổi vẫn là yếu tố then chốt trong các bài toán phân lớp Nó không chỉ là nền tảng cho việc phát triển các thuật toán khác mà còn đóng góp quan trọng trong việc nghiên cứu con người và hành vi của họ.
Lý do lựa chọn đề tài
Cuộc cách mạng công nghiệp 4.0 đã thúc đẩy mạnh mẽ hoạt động marketing và quảng cáo, ảnh hưởng lớn đến hiệu quả kinh doanh của doanh nghiệp Quảng cáo hiện diện khắp nơi, từ chung cư, công sở đến trung tâm mua sắm, với nhiều hình thức đa dạng Tại Vinhomes Smart City, hàng triệu quảng cáo được phát trên màn hình LED trong các thang máy, cung cấp thông tin về hàng hóa và dịch vụ cho gần 76.000 cư dân Những quảng cáo này không chỉ giúp người dân tiếp cận thông tin mà còn khuyến khích tiêu dùng thông minh Với số lượng cư dân lớn, Vinhomes Smart City là thị trường tiềm năng cho các doanh nghiệp Tuy nhiên, do đối tượng sử dụng thang máy đa dạng, việc phân loại quảng cáo theo độ tuổi là cần thiết để đáp ứng nhu cầu và mong muốn khác nhau của từng nhóm.
Hình 4 Màn hình quảng cáo trong thang máy của Vinhomes Smart City
Quảng cáo với hình ảnh ngộ nghĩnh, sinh động và màu sắc sặc sỡ có thể giúp trẻ em phát triển trí tưởng tượng, tư duy và sự sáng tạo Nghiên cứu của David Hill, giám đốc điều hành của American Academy of Pediatrics Council on Communications and Media, đã chỉ ra rằng quảng cáo có ảnh hưởng tích cực đến sự phát triển của trẻ.
Trẻ em thường thích các quảng cáo về đồ chơi và bim bim hơn cả những chương trình được sản xuất riêng cho chúng Điều này không phải vì trẻ có mong muốn trở thành những nhà quảng cáo, mà đơn giản là những quảng cáo này đáp ứng đúng nhu cầu giải trí của trẻ.
Tuổi tác là yếu tố quan trọng ảnh hưởng đến nhu cầu mua sắm của con người Ví dụ, nếu doanh nghiệp sản xuất mô hình đồ chơi Titan, họ nên nhắm đến đối tượng trẻ từ 15 đến 30 tuổi, có thể mở rộng đến 40 tuổi, nhưng không nên hướng đến người trên 50 tuổi Tương tự, một cô gái trẻ sẽ ưa chuộng những mẫu váy sexy và quyến rũ, trong khi phụ nữ trung niên thường chọn trang phục thanh lịch và kín đáo Mỗi độ tuổi có sở thích và nhu cầu sản phẩm khác nhau, vì vậy doanh nghiệp cần phân tích độ tuổi để xác định phân khúc khách hàng tiềm năng một cách hiệu quả.
Các hoạt động quảng cáo sản phẩm đến người tiêu dùng tại Vinhomes Smart đang có sự phát triển tích cực Tuy nhiên, thách thức lớn nhất hiện nay là tìm ra cách hiệu quả để tiếp cận và thu hút cư dân tại khu vực này.
Việc người tiêu dùng, đặc biệt là cư dân tại thành phố, tiếp cận các quảng cáo sản phẩm và dịch vụ tốt nhất, phù hợp với độ tuổi của mình luôn là thách thức lớn đối với các doanh nghiệp Nhằm đưa AI gần gũi hơn với đời sống hàng ngày, nhóm 3 chúng em đã quyết định thực hiện tiểu luận với đề tài “Nhận diện lứa tuổi (trẻ con, trưởng thành, cao tuổi) của người đi trong thang máy của Vinhomes Smart City để phát clip quảng cáo phù hợp”, dưới sự hướng dẫn tận tình của cô Bùi Thị Hồng Nhung.
Việc phân loại người đi thang máy thành các nhóm khác nhau giúp nhận diện những đặc điểm chung và xu hướng riêng của từng nhóm khách hàng, từ đó tối ưu hóa việc truyền tải thông tin quảng cáo đến người tiêu dùng của Vinhomes Smart City một cách hiệu quả Chúng em đã đầu tư tâm huyết và nguồn lực vào bài tiểu luận này, nhưng do thời gian và năng lực hạn chế, nhóm vẫn không tránh khỏi sai sót Rất mong cô giúp đỡ và góp ý để chúng em có thêm kinh nghiệm cho các nghiên cứu và đề án quan trọng sau này.
Dữ liệu
Cách thức thu thập dữ liệu
Dữ liệu được lấy từ google, tài khoản mạng xã hội như facebook, instagram, tiktok, zalo,
Nhóm đã thực hiện chụp ảnh cư dân tại Vinhomes Smart City và nhiều địa điểm khác, thu thập dữ liệu ảnh theo yêu cầu có khuôn mặt người để nhận dạng Tập dữ liệu bao gồm 300 ảnh cho việc huấn luyện, 300 ảnh cho việc xác thực và một tập ảnh khác cho việc kiểm tra.
100 ảnh nhóm đã lọc và sắp xếp lại dữ liệu Cụ thể ở nguồn data sau: https://drive.google.com/drive/folders/1yF7U3S4R0R4nUHyPgUxu7WdmbHAHiG3D?usp=drive_link
Kiểu dữ liệu ảnh cần thu thập
Ảnh được thu thập từ nhiều nguồn khác nhau với kích thước không giới hạn, ưu tiên định dạng máy đọc được như JPG và PNG Để đảm bảo tính đồng nhất và tiết kiệm thời gian sàng lọc, nhóm quyết định lưu ảnh dưới định dạng JPG Ảnh cần phải rõ nét, có thể nhận diện khuôn mặt và kích thước, hình dạng cơ thể Hạn chế thu thập ảnh mờ, khó nhận diện và không thu thập ảnh gây nhiễu cho mô hình, như ảnh có trẻ em, người trưởng thành và người cao tuổi cùng một lúc.
Số lượng ảnh của từng kiểu dữ liệu ảnh
Để đảm bảo tính đa dạng trong bộ sưu tập ảnh, cần có ít nhất ba loại hình ảnh: trẻ em, người trưởng thành và người cao tuổi Số lượng ảnh giữa các nhóm này phải được cân đối và không được lặp lại hình ảnh của một người quá nhiều lần.
● Trẻ em 240 ảnh (trong mô hình gắn nhãn là Treem)
● Người trưởng thành 240 ảnh (trong mô hình được gắn nhãn là Nguoitruongthanh)
● Người cao tuổi 240 ảnh (trong mô hình gắn nhãn là Nguoicaotuoi)
Cách thức tổ chức kiểu dữ liệu ảnh trên máy
Với số lượng dữ liệu thu thập gồm 720 ảnh sẽ được sắp xếp vào 3 thư mục chính là training, validation, test và không có ảnh nào trùng nhau.
Cụ thể nhóm tổ chức sắp xếp kiểu dữ liệu ảnh trên máy như sau:
● Training gồm 300 ảnh trong đó có 100 ảnh trẻ em, 100 ảnh người trưởng thành, 100 ảnh người cao tuổi.
● Validation gồm 300 ảnh trong đó có 100 ảnh trẻ con, 100 ảnh người trưởng thành, 100 ảnh người cao tuổi.
● Test gồm 120 ảnh trong đó có 40 ảnh trẻ con, 40 ảnh người trưởng thành và 40 ảnh người cao tuổi.
Tổng quát thuật toán CNN
Đặc trưng
Mạng CNN đặc trưng bởi khả năng so sánh dựa trên các mảnh nhỏ gọi là feature Nó xác định sự tương đồng bằng cách tìm kiếm những đặc trưng khớp giữa hai hình ảnh Mỗi feature là một hình ảnh mini hai chiều, tương ứng với một khía cạnh của hình ảnh lớn hơn, và chúng có thể kết hợp với nhau để tạo ra nhận diện chính xác hơn.
Cấu trúc
The fundamental structure of Convolutional Neural Networks (CNN) consists of four key layers: the Convolutional layer, which performs the convolution operation; the Non-Linearity layer, which applies activation functions to introduce non-linearities; the Pooling layer, which reduces the dimensionality of the data; and the Fully Connected layer, which connects all neurons in the previous layer to every neuron in the next layer.
Mạng CNN bao gồm các lớp Convolution chồng lên nhau, sử dụng hàm kích hoạt phi tuyến để kích hoạt trọng số trong các node Sau khi kích hoạt, mỗi lớp tạo ra thông tin trừu tượng cho các lớp tiếp theo, với kết quả từ phép convolution của lớp trước đó, tạo ra các kết nối cục bộ Mỗi lớp có thể chứa hàng trăm nghìn filter, và lớp lấy mẫu (pooling) giúp tinh lọc các thông tin cần thiết và hữu ích.
Tích chập
Phép tích chập trong mạng nơ-ron tích chập (CNN) là một yếu tố quan trọng trong quá trình tính toán Nó thực hiện phép nhân giữa từng điểm ảnh trong đặc trưng với giá trị tương ứng của ảnh, nhằm xác định vị trí các đặc trưng khớp nhau.
Mã lệnh chương trình
Tạo thư mục dự án
- Đăng nhập Gmail, truy cập vào Drive
- Kích chọn My Drive/ chọn Tải thư mục lên
- Upload dữ liệu ảnh đã thu thập lên thư mục đã tạo.
1.2 Tạo file Colab notebook trên Google Drive
- Kích chọn My Drive/ chọn More/ chọn Colaboratory.
- Đặt tên cho tệp colab mới là Nhóm 3 - A07 BTL AI
Đọc dữ liệu và tiền xử lý ảnh
- Chạy đoạn code kết quả hiện ra như sau, chọn “ Kết nối với Google Drive” để cho phép Google Colab truy cập được vào Drive
- Chọn tài khoản Gmail của bạn:
- Chọn “cho phép” để tiếp tục kết nối
=> Kết quả xuất hiện thông báo: Mounted at /content/drive/
2.2 Tiền xử lý ảnh a Tiền xử lý dữ liệu ảnh với ImageDataGenerator
Tiền xử lý dữ liệu ảnh là bước quan trọng trong học máy, giúp xử lý, làm sạch và biến đổi dữ liệu về dạng số trước khi huấn luyện thuật toán Các kỹ thuật phổ biến bao gồm xử lý dữ liệu bị khuyết, mã hóa biến nhóm, chuẩn hóa và co giãn dữ liệu Để đơn giản hóa việc xử lý dữ liệu đầu vào mà không cần xử lý từng ảnh, chúng ta có thể sử dụng class ImageDataGenerator của Keras.
ImageDataGenerator là lớp học 16 của Keras, chuyên tổng hợp dữ liệu hình ảnh cho học sâu, giúp truy cập dễ dàng vào hệ thống tệp cục bộ và nhiều phương pháp tải dữ liệu từ các cấu trúc khác nhau Nó cung cấp khả năng xử lý trước và tăng cường dữ liệu mạnh mẽ, trong đó tham số rescale là một trong những thông số quan trọng, giúp chuẩn hóa dữ liệu hình ảnh để đảm bảo chúng có chung một tỉ lệ.
Tham số rescale=1/255 giúp chuẩn hóa dữ liệu ảnh về khoảng giá trị [0,1] Khi lưu trữ trên máy tính, file ảnh được biểu diễn dưới dạng ma trận số với giá trị từ 0 đến 255.
Chúng ta thấy Máy tính thấy
2.3 Đọc dữ liệu train và validation
- “train_data_gen.flow_from_directory”: Hàm được sử dụng để chuẩn bị dữ liệu từ thư mục train_data, chỉ định kích thước của hình ảnh
- “train_image_files_path”: Đường dẫn tới ảnh huấn luyện
Khi sử dụng "target_size = (50, 50)", các ảnh huấn luyện sẽ được biến đổi về kích thước đồng nhất 50x50 pixel, giúp nâng cao hiệu quả của mô hình Trước khi điều chỉnh, kích thước của các ảnh trong tập dữ liệu khá lớn và không đồng nhất Trong quá trình học máy, hình ảnh sẽ được phân tích thành các điểm ảnh nhỏ với nhiều tham số đầu vào Cụ thể, với kích thước 50x50 pixel, tổng số tham số đầu vào là 7500 (Px50x3).
- class_mode=’categorical’ giúp phân loại ảnh đa lớp (2 lớp)
- “validation_data_gen.flow_from_directory”: Hàm được sử dụng để chuẩn bị dữ liệu thử nghiệm cho mô hình
- “valid_image_files_path”: Đường dẫn tới ảnh thử nghiệm
- “target_size = (50, 50)” có tác dụng biến đổi các ảnh huấn luyện về cùng 1 kích thước [50x50]
- Kết quả chạy ta có:
Sau khi đọc dữ liệu Train và Validation, kết quả nhận được là 300 ảnh train và 300 ảnh validation từ 3 lớp khác nhau.
Xây dựng mô hình
Mô hình gồm 5 tầng: Input image – CNN1 – CNN2 – Fully connected layer –Output.
- Lớp CNN1: bao gồm 32 bộ lọc kích thước 3x3, tầng CNN1 kết nối với đầu vào nên phải mô tả rõ thông tin của đầu vào (input_shape = (50,50,3)).
Trong lớp CNN2, mỗi bộ lọc kích thước 3x3 được áp dụng lên các feature map của pool1 có kích thước 25x25x32, tạo ra một feature map mới có kích thước 25x25x1 Khi sử dụng 64 bộ lọc, lớp này sẽ tạo ra các feature maps conv2 với kích thước 25x25x64.
MaxPooling2D (2,2) là lớp tổng hợp tối đa hai chiều, thực hiện các phép toán tổng hợp tối đa cho dữ liệu không gian Lớp này giảm kích thước đầu vào theo chiều cao và chiều rộng bằng cách lấy giá trị lớn nhất từ một cửa sổ đầu vào có kích thước xác định bởi pool_size cho mỗi kênh đầu vào Cửa sổ này được dịch chuyển theo các bước strides dọc theo mỗi chiều.
Hàm kích hoạt 'relu' là một hàm phi tuyến tính, mang lại lợi ích vượt trội so với các hàm sigmoid nhờ không gặp phải vấn đề lỗi lan truyền ngược Điều này giúp tăng cường hiệu suất của các mạng nơ-ron lớn và cho phép xây dựng các mô hình dựa trên ReLU một cách nhanh chóng.
Flattening is a specific reshaping activity where all axes of a tensor are compressed and merged together To effectively flatten a tensor, a minimum of two axes is required.
Lớp ẩn, hay còn gọi là lớp kết nối đầy đủ, là một thành phần quan trọng trong mạng nơ ron nhân tạo Mỗi nơron trong lớp này nhận đầu vào từ tất cả các nơron của lớp trước, tạo ra sự kết nối mạnh mẽ giữa các lớp Điều này có nghĩa là mỗi nơron trong lớp trước đều được kết nối đến tất cả nơron trong lớp hiện tại, giúp cải thiện khả năng học tập và dự đoán của mạng.
Lớp output là lớp cuối cùng trong mạng nơron, nằm ở phía bên phải cùng, và thể hiện các đầu ra của mạng Trong bài toán nhận diện này, lớp output có 5 đầu ra.
Thiết lập các tham số để huấn luyện mô hình
- Compile: chọn các tham số để huấn luyện mô hình.
- Optimizer: thuật toán huấn luyện mô hình, sử dụng RMSprop với learning rate 0.001
Hàm loss là hàm mục tiêu trong quá trình huấn luyện mô hình học máy, giúp tối ưu hóa và đánh giá độ hiệu quả của mô hình Mục tiêu chính là tìm ra bộ trọng số sao cho giá trị hàm loss đạt mức tối thiểu, từ đó xác định độ "tốt" của mô hình Việc giảm thiểu hàm mất mát đóng vai trò quan trọng trong việc cải thiện hiệu suất và độ chính xác của mô hình.
Trong quá trình phát triển mô hình Machine Learning, việc đánh giá mô hình là yếu tố quan trọng để xác định chất lượng của nó Đánh giá mô hình giúp chúng ta lựa chọn những mô hình phù hợp nhất cho từng bài toán cụ thể.
Có nhiều phương pháp để đánh giá độ chính xác của mô hình, trong đó accuracy là phương pháp đơn giản và phổ biến nhất Accuracy của mô hình được tính bằng tỷ lệ giữa số liệu dự đoán đúng và tổng số điểm trong tập dữ liệu kiểm thử.
Huấn luyện mô hình
EPOCHS là một siêu tham số quan trọng trong thuật toán học máy, xác định số vòng lặp mà mô hình sẽ chạy Mỗi khi một epoch hoàn thành, toàn bộ dữ liệu huấn luyện được đưa vào mạng neural network một lần.
- Hàm fit(): Model.fit (_generator) yêu cầu trình tạo dữ liệu đầu vào để chạy mô hình Nó bao gồm: Train generator và Validation generator
Steps_per_epoch là tổng số bước cần thiết để trình tạo hoàn thành trước khi kết thúc một Epoch và bắt đầu Epoch tiếp theo Thông thường, giá trị này được tính bằng cách chia số lượng mẫu duy nhất trong bộ dữ liệu cho kích thước lô.
- Bước đầu nhóm cho chạy 100 vòng lặp mỗi vòng lặp, học máy sẽ chạy qua 2 bước.
Ta có kết quả như sau:
Trong quá trình chạy vòng lặp từ 1 đến 100, cả train_acc và val_acc đều có xu hướng tăng Tại vòng lặp cuối, train_acc đạt 0.7969 trong khi val_acc chỉ đạt 0.3281, cho thấy độ chính xác trên tập Train và Validation còn thấp Train_loss giảm dần về 0, cho thấy mô hình đang dự đoán gần đúng giá trị thực trên tập train Tuy nhiên, Val_loss ở mức 1.7458 vẫn còn cao, cho thấy mô hình chưa chính xác trên tập Validation Tỉ lệ chính xác trên tập Validation chỉ đạt 32.81%, dự đoán có thể sai lệch đáng kể so với giá trị thực, chứng tỏ mô hình đang hoạt động kém hiệu quả Nhóm nghiên cứu sẽ thử nghiệm điều chỉnh một số chỉ tiêu nhằm cải thiện độ chính xác của mô hình.
Tìm mô hình tối ưu
● Mô hình gốc ban đầu:
+ Lớp CNN thứ nhất có 32 bộ lọc, mỗi bộ lọc có kích thước 3x3.
+ Lớp CNN thứ hai có 64 bộ lọc, mỗi bộ lọc có kích thước 3x3.
- Một lớp ẩn với số bộ lọc là 512
=> Độ chính xác của mô hình ban đầu là 37,8 %, mô hình dự đoán đúng được 17/45 ảnh được kiểm tra, dự đoán sai 28/45 ảnh được kiểm tra.
Để cải thiện độ chính xác và hiệu quả thực tiễn của mô hình, cần xây dựng các kịch bản thay đổi nhằm nâng cao chất lượng của nó.
Những phương pháp khác nhau có thể nâng cao độ chính xác của mô hình gồm:
- Mở rộng dữ liệu huấn luyện, kiểm chứng về số lớp và số lượng ảnh.
- Thực nghiệm chuẩn hóa kích thước ảnh.
- Bổ sung thêm lớp mạng CNN, thay đổi số lượng và kích thước bộ lọc.
- Thay đổi tham số optimizer, đổi RMSprop sang SGD và Adam.
- Thay đổi giá trị số vòng lặp chạy mô hình EPOCHS, tăng số bước chạy cho mỗi EPOCHS.
6.1 Kịch bản: Thay đổi kích thước ảnh
Mô hình có kích thước 100x100 đạt độ chính xác 26,7%, nhận diện đúng 12 trên 45 ảnh kiểm thử, cho thấy hiệu suất giảm so với mô hình gốc.
● Với kích thước 120x120 mô hình đạt được độ chính xác là 33,33%, nhận diện đúng 15 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc.
Mô hình với kích thước ảnh 150x150 đạt độ chính xác 28,9%, nhận diện đúng 13 trên 45 ảnh kiểm thử, cho thấy hiệu suất giảm so với mô hình gốc.
Khi tăng kích thước ảnh, mô hình vẫn hoạt động ổn định so với phiên bản gốc, nhưng không thấy sự cải thiện về độ chính xác; thậm chí, độ chính xác còn giảm Do đó, nên giữ kích thước ảnh ở mức ban đầu là 50x50.
6.2 Kịch bản: Tăng lớp CNN của mô hình
6.2.1.1 Mô hình thêm tầng CNN3 với 64 bộ lọc:
Lớp CNN 1 với 32 bộ lọc
Lớp CNN 2 với 64 bộ lọc
Lớp CNN 3 với 64 bộ lọc
=> Độ chính xác của mô hình 1 là 17,78%, nhận diện đúng 7 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc ban đầu.
6.2.1.2 Mô hình thêm tầng CNN3 với 128 bộ lọc:
Lớp CNN 1 với 32 bộ lọc
Lớp CNN 2 với 64 bộ lọc
Lớp CNN 3 với 128 bộ lọc
=> Độ chính xác của mô hình 1 là 46,67%, nhận diện đúng 21 trên 45 ảnh kiểm thử Hiệu suất mô hình tăng nhẹ so với mô hình gốc ban đầu.
6.2.2 Bổ sung thêm 2 lớp mạng CNN3, CNN 4
Lớp CNN1 có 32 bộ lọc
Lớp CNN2 có 64 bộ lọc
Lớp CNN 3 với 128 bộ lọc
=> Độ chính xác của mô hình 1 là 24%, nhận diện đúng 11 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc ban đầu.
Tăng số lượng lớp CNN không cải thiện hiệu quả mô hình một cách đáng kể Mặc dù việc thêm một lớp CNN3 với 128 bộ lọc có thể nâng cao độ chính xác từ 37,8% lên 46,67%, nhưng sự cải thiện này không đủ lớn để biện minh cho việc tăng độ phức tạp của mô hình Việc thêm lớp CNN chỉ làm cho mô hình trở nên cồng kềnh, gây khó khăn trong việc đưa ra kết quả nhanh chóng và chính xác.
6.3 Kịch bản: Thay đổi bộ lọc của các lớp CNN
Lớp CNN 1 với 32 bộ lọc
Lớp CNN 2 với 32 bộ lọc
=> Độ chính xác của mô hình là 28,9%, nhận diện đúng 13 trên 45 ảnh kiểm thử Hiệu suất bị giảm so với mô hình gốc ban đầu.
Lớp CNN 1 với 64 bộ lọc
Lớp CNN 2 với 64 bộ lọc
=> Độ chính xác của mô hình là 35,56%, nhận diện đúng 16 trên 45 ảnh được kiểm thử. Hiệu suất bị giảm so với mô hình gốc ban đầu.
Lớp CNN 1 với 64 bộ lọc
Lớp CNN 2 với 128 bộ lọc
=> Độ chính xác của mô hình là 33,33%, nhận diện đúng 15 trên 45 ảnh được kiểm thử. Hiệu suất của mô hình giảm.
Lớp CNN 1 với 128 bộ lọc
Lớp CNN 2 với 128 bộ lọc
=> Độ chính xác của mô hình đạt 33,33%, nhận diện đúng 15 trên 45 ảnh được kiểm thử. Hiệu suất giảm nhẹ so với mô hình gốc ban đầu.
Việc tăng số lượng bộ lọc trong các lớp CNN không cải thiện độ chính xác của mô hình, nhưng giúp giảm thiểu kích thước của mô hình, từ đó nâng cao hiệu suất hoạt động một cách ổn định hơn.
6.4 Kịch bản: Thay đổi kích thước bộ lọc convolutional của các lớp CNN
Lớp CNN 1 có 32 bộ lọc, mỗi bộ lọc có kích thước 5x5
Lớp CNN 2 có 64 bộ lọc, mỗi bộ lọc có kích thước 5x5
=> Độ chính xác của mô hình đạt 100%, nhận diện đúng 45 trên 45 ảnh được kiểm thử. Hiệu suất tăng mạnh so với mô hình gốc ban đầu.
Lớp CNN 1 có 32 bộ lọc, mỗi bộ lọc có kích thước 6x6
Lớp CNN 2 có 64 bộ lọc, mỗi bộ lọc có kích thước 6x6
=> Độ chính xác của mô hình đạt 33,33%, nhận diện đúng 15 trên 45 ảnh được kiểm thử. Hiệu suất giảm so với mô hình gốc ban đầu.
Việc thay đổi kích thước bộ lọc convolutional trong lớp CNN1 và CNN2 từ 3x3 lên 5x5 đã cải thiện đáng kể độ chính xác của mô hình Tuy nhiên, việc tăng kích thước bộ lọc lên 6x6 không mang lại sự cải thiện nào cho mô hình.
6.5 Kịch bản: Tăng thêm lớp ẩn
Lớp ẩn 2 có 512 bộ lọc
=> Độ chính xác của mô hình đạt được là 46,6%, nhận diện đúng 21 trên 45 ảnh kiểm thử Hiệu suất mô hình tăng nhẹ so với mô hình gốc.
Lớp ẩn 1 có 512 bộ lọc
Lớp ẩn 2 có 512 bộ lọc
=> Độ chính xác là 33,33 %, nhận diện đúng 15 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc.
Lớp ẩn 1 có 512 bộ lọc
Lớp ẩn 2 có 1024 bộ lọc
=> Độ chính xác là 33,33 %, nhận diện đúng 15 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc.
Lớp ẩn 1 có 256 bộ lọc
Lớp ẩn 2 có 256 bộ lọc
Lớp ẩn 3 có 256 bộ lọc
=> Độ chính xác là 26,6 %, nhận diện đúng 12 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc.
Lớp ẩn 1 có 512 bộ lọc
Lớp ẩn 2 có 512 bộ lọc
Lớp ẩn 3 có 512 bộ lọc
=> Độ chính xác là 24,4 %, nhận diện đúng 11 trên 45 ảnh kiểm thử Hiệu suất mô hình giảm so với mô hình gốc.
Kịch bản tăng thêm lớp ẩn không mang lại cải thiện cho mô hình và không làm cho mô hình hoạt động hiệu quả hơn, vì vậy quyết định là giữ nguyên một lớp ẩn ban đầu.
6.6 Kịch bản: Thay đổi bộ lọc của lớp ẩn
Lớp ẩn của mô hình sử dụng 128 bộ lọc, đạt độ chính xác 100% với khả năng nhận diện chính xác 45/45 ảnh kiểm thử, cho thấy hiệu suất của mô hình đã tăng mạnh so với phiên bản gốc.
Lớp ẩn của mô hình sử dụng 256 bộ lọc, đạt độ chính xác 100% với khả năng nhận diện đúng 45/45 ảnh kiểm thử Hiệu suất của mô hình đã cải thiện đáng kể so với phiên bản gốc.
Lớp ẩn với 1024 bộ lọc đạt độ chính xác 100%, nhận diện chính xác 45/45 ảnh kiểm thử, cho thấy hiệu suất của mô hình đã tăng mạnh so với phiên bản gốc.
Việc điều chỉnh số lượng bộ lọc trong lớp ẩn từ 512 xuống 128 hoặc 256, hoặc tăng lên 1224 bộ lọc, sẽ giúp mô hình hoạt động ổn định hơn và cải thiện hiệu suất đáng kể, từ 37,8% lên 100% so với mô hình gốc.
6.7 Kịch bản: Thay đổi tham số optimizer
Khi thay đổi từ RMSprop sang SGD, độ chính xác của mô hình giảm xuống còn 35,6%, chỉ nhận diện đúng 16 trên 45 ảnh kiểm thử Sự thay đổi này dẫn đến hiệu suất của mô hình kém hơn so với phiên bản gốc.
● Thay đổi RMSprop sang Adam:
Khi thay đổi tham số optimizer, mô hình vẫn duy trì sự ổn định tương tự như mô hình gốc, với sự biến động hiệu suất không đáng kể Do đó, tham số optimizer sẽ được giữ nguyên như trong mô hình ban đầu.
Link các kịch bản được nhóm tiến hành chạy: https://drive.google.com/drive/folders/1jT8H8v7xVtDQ7fi-dp1WE3Ev1LzRE7Dq? usp=sharing
Sau khi thử nghiệm nhiều kịch bản khác nhau để nâng cấp mô hình, độ chính xác của mô hình có thể đạt mức tối ưu 100% với các kịch bản đã được kiểm tra.
● Thay đổi kích thước bộ lọc convolutional của các lớp CNN từ kích thước 3x3 thành kích thước 5x5
● Thay đổi số bộ lọc của lớp ẩn từ 512 thành 128 hoặc 256 hoặc 1024 bộ lọc.
Sử dụng mô hình
Khai báo thư viện, sau đó tải hình ảnh muốn dự đoán:
+ from google.colab import files; from keras.preprocessing import image; %matplotlib inline: Dùng để đưa dữ liệu ảnh vào.
+ import matplotlib.pyplot as plt; import matplotlib.image as mpimg: Dùng để khai báo thư viện matplotlib.pyplot, matplotlib.image
+ uploaded=files.upload(): Dùng để tạo chỗ upload ảnh cần dự đoán
Vòng lặp for trong Python cho phép thực hiện các thao tác lặp lại trong chương trình với số lần xác định Các phần mã lệnh nằm trong vòng lặp for cần được thụt lề để đảm bảo cấu trúc đúng.
+ path='/content/'+fn: đường dẫn ảnh cần dự đoán
+ plt.imshow(mpimg.imread(path)): dùng để in ảnh đọc được
+ img=image.load_img(path,target_size=(50,50)): tải một hình ảnh và đưa kích thước hình ảnh thành (50,50)
+ img_to_array(): dùng để thêm các kênh cho RGB và cho hình ảnh màu xám
+ expand_dim(): được sử dụng để thêm số lượng hình ảnh
+ np.vstack: nối mảng theo chiều dọc
Batch size là số lượng mẫu dữ liệu được sử dụng trong mỗi lần huấn luyện Do không thể đưa toàn bộ dữ liệu vào huấn luyện trong một epoch, việc chia tập dữ liệu thành các phần nhỏ là cần thiết Mỗi phần này được gọi là batch, với kích thước được xác định bởi batch size Ví dụ, nếu tập dữ liệu có 100 mẫu và batch size là 10, thì dữ liệu sẽ được chia thành 10 phần.
+ y_predict = model.predict(images,batch_size): Mô hình dự đoán thông qua ảnh với batch size tức là số lượng ảnh trong mỗi một lần lặp là 10
+ print(y_predict); print('Giá trị dự đoán:',Label[np.argmax(y_predict)]): In giá trị dự đoán
Sau khi chạy đoạn mã, bạn sẽ thấy yêu cầu chọn hình ảnh để phân loại Hãy nhấn vào hộp thoại “Chọn tệp” để mở hộp thoại lựa chọn tệp.
“Open” => chọn ảnh cần phân loại và đợi kết quả.