Tại Việt Nam, tình trạng an toàn giao thông đường bộ vẫn còn diễn biến phức tạp, số người chết vì tai nạn giao thông vẫn ở mức cao do tình trạng xâm phạm các công trình giao thông vẫn còn xảy ra phổ biến, hạ tầng giao thông kém, biển báo dày đặc nên gây ra rất nhiều khó khăn cho người tham gia giao thông. Cụ thể, trong 6 tháng đầu năm 2012, cả nước đã xảy ra 17.886 vụ tai nạn giao thông làm chết 4.953 người và bị thương 19.977 người. Các vụ tai nạn dẫn đến chết người xảy ra trên các tuyến quốc lộ có chiều hướng gia tăng. Theo đánh giá của Bộ Công an và các nhà chức năng, nguyên nhân của những vụ tai nạn giao thông trên chủ yếu do người điều khiển phương tiện đi sai phần đường, tránh vượt sai quy định, vi phạm tốc độ, chuyển hướng không quan sát hết biển báo giao thông. Chính vì thế, các nhà khoa học các nước tiên tiến trên thế giới nghiên cứu và đề xuất nhiều giải pháp như: Nâng cao cơ sở hạ tầng giao thông tương ứng với tốc độ tăng trưởng kinh tế. Kiểm tra và loại bỏ những phương tiện quá hạn hoặc không đáp ứng tiêu chuẩn an toàn để tham gia giao thông. Tuyên truyền cho người tham gia giao thông chấp hành tốt Luật giao thông và tham gia giao thông có văn hóa để giảm tai nạn giao thông Giải pháp quan trọng nhất, nắm hoàn toàn sự thành công là giải pháp nâ
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN - 🕮 - ĐỒ ÁN CHUYÊN NGÀNH NGÀNH: KHOA HỌC MÁY TÍNH ĐỀ TÀI: NHẬN DẠNG BIỂN BÁO GIAO THÔNG SỬ DỤNG MẠNG NƠRON TÍCH CHẬP Giảng viên hướng dẫn: TS Nguyễn Mạnh Cường Nhóm thực hiện: Nhóm 20 Thành viên nhón: Nguyễn Văn Việt Trương Văn Cảnh 2020602003 2020600216 Nguyễn Quang Huy 2020603048 Hà Nội-2023 MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU CHƯƠNG 1: BÀI TỐN NHẬN DIỆN BIỂN BÁO GIAO THƠNG 10 1.1 Tổng quan nhận dạng biển báo giao thông 10 1.2 Phát nhận dạng biển báo giao thông 22 1.3 Mục tiêu nhiệm vụ nghiên cứu 23 CHƯƠNG 2: CÁC PHƯƠNG PHÁP NHẬN DẠNG BIỂN BÁO GIAO THÔNG 28 2.1 CÁC PHƯƠNG PHÁP PHÁT HIỆN HÌNH ẢNH BIỂN BÁO GIAO THƠNG .28 2.1.1 Phát dựa ảnh mẫu .28 2.1.2 Phát dựa dạng hình học .28 2.2 PHƯƠNG PHÁP ĐƯỢC SỬ DỤNG TRONG LUẬN VĂN 29 2.2.1 Bộ lọc Gabor 29 2.2.2 Mạng Nơron nhân tạo 29 2.2.3 Ngôn ngữ lập trình Python 31 2.3 MƠ HÌNH GIẢI QUYẾT BÀI TỐN .33 2.3.1 Mơ hình tổng quát 33 2.3.2 Thu nhận hình ảnh (Capture Image) 34 2.3.3 Phát biển báo trích xuất vùng đặc trưng sử dụng lọc Gabor 34 2.3.4 Xử lý trước nhận dạng (Pre-recognized) 36 2.3.5 Quá trình nhận dạng (Recognized) .37 CHƯƠNG NHẬN DẠNG BIỂN BÁO GIAO THÔNG DÙNG BỘ LỌC GABOR VÀ MẠNG NƠRON 39 3.1 MƠ TẢ BÀI TỐN .39 3.1.1 Đặt vấn đề 39 3.1.2 Xây dựng sở liệu 39 3.1.3 Tập huấn luyện 40 3.1.4 Dùng lọc Gabor để biến đổi ảnh .40 3.1.5 Dùng mạng Nơron để huấn luyện nhận dạng .42 3.1.6 Thực nghiệm 44 CHƯƠNG 4: XÂY DỰNG SẢN PHẨM DEMO 45 4.1 Quy trình làm việc 45 4.2 Khám phá tập liệu thư viện cần thiết cho trình huấn luyện 45 4.3 Mơ hình CNN 49 4.4 Huấn luyện xác nhận mơ hình 52 4.5 Thử nghiệm mơ hình 54 4.6 Xây dựng giao diện ứng dụng 56 KẾT LUẬN 63 DANH MỤC HÌNH ẢNH Hình 1.1: Biển báo cảnh báo 12 Hình 1.2: Biển báo cảnh báo 12 Hình 1.3: Biển báo hướng dẫn 13 Hình 1.4: Biển báo cấm 13 Biển 1.5: Biển báo cấm 14 Hình 1.6: Biển báo hiệu lệnh 14 Hình 1.7: Biển báo hiệu lệnh 15 Hình 1.8: Biển báo hiệu lệnh 15 Hình 1.9: Biển báo văn hố 16 Hình 1.10 : Biển báo khẩn cấp 16 Hình 1.11: Biển báo hiệu lệnh 17 Hình 1.12: Biển báo dẫn .17 Hình 1.13: Biển báo dẫn .18 Hình 1.14: Biển phụ 18 Hình 1.15: Vạch kẻ đường 19 Hình 1.16: Biển báo cao tốc 19 Hình 1.17: Biển báo cao tốc 20 Hình 1.18: Biển báo theo hiệp định GMS 21 Hình 1.19: Biển báo theo hiệp định GMS 21 Hình 1.20 Bài tốn nhận diện biển báo giao thơng 23 Hình 2.1 - Mơ hình giải tốn 33 Hình 3.1 Tập liệu mẫu để huấn luyện 40 Hình 3.2 Tập biển báo chuẩn 40 Hình 3.3 Kết cảu ảnh qua lọc Gabor 41 Hình 3.4 Chạy demo với lọc Gabor cho ảnh trung bình 41 Hình 3.6 Ảnh trung bình lọc Gabor theo hướng .42 Hình 3.7 - Chạy demo tải vectors tải classes vào Với ảnh đầu vào 3600 giá trị điểm ảnh, ảnh đầu lớp 43 Hình 3.8 - Chọn ảnh để huấn luyện mạng Nơron 43 Hình 3.9 kết huấn luyện thay đổi số noron lớp ấn 44 Hình 4.1 thư viện cần trình huấn luyện .45 Hình 4.2 tiền xử lý phân loại liệu .48 Hình 4.3 Chia tách tập liệu thành tập huấn luyện , tập kiểm thử chuyển đổi nhãn 49 Hình 4.4 Đầu qua bước tiền xử lý .49 Hình 4.5 sử dung hàm model.fit() để huấn luyện 52 Hình 4.6 Kết độ xác 95% đạt độ ổn định sau 15 kỳ 52 Hình 4.7 Hàm vẽ đồ thị để trực quan hóa độ xác (accuracy) độ mát (loss) .53 Hình 4.8 Hai đồ thị để trực quan hóa độ xác (accuracy) độ mát (loss) 54 Hình 4.9 kiểm thử độ xác mơ hình huấn luyện tập liệu kiểm thử 55 Hình 4.10 Kết sau kiểm thử độ xác .55 Hình 4.11 Kết qảu chạy mơ hình demo .62 LỜI CẢM ƠN Với tình cảm chân thành sâu sắc nhất, nhóm em mong muốn bày tỏ đến tất cá nhân, tổ chức tạo điều kiện hỗ trợ giúp đỡ nhóm suốt trình nghiên cứu đề tài Trong thời gian qua, nhóm em nhận nhiều quan tâm quý thầy cô, nhà trường bạn bè Trải qua thời gian vừa qua, nhóm em nhận quan tâm đồng hành từ quý thầy cô, nhà trường bạn bè Đây nguồn động viên định hướng quan trọng hành trình nghiên cứu học tập nhóm Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc tới thầy TS Nguyễn Mạnh Cường, người truyền đạt vốn kiến thức cần có cho chúng tơi suốt q trình học tập môn học Sự tận tâm bảo tận tình thầy giúp chúng tơi hồn thành đề tài cách tốt Mặc dù báo cáo học phần chúng em thực khoảng thời gian ngắn, chắn không tránh khỏi sai sót Vì vậy, chúng em mong nhận đóng góp ý kiến từ thầy để giúp nhóm hồn thiện kiến thức bổ sung thêm thơng tin cần thiết cho báo cáo học phần Một lần nữa, chúng em xin chân thành cảm ơn thầy tất người giúp đỡ đồng hành chúng em chặng đường Em xin chân thành cảm ơn! Sinh viên thực Trương Văn Cảnh Nguyễn Quang Huy Nguyễn Văn Việt LỜI MỞ ĐẦU Tại Việt Nam, tình trạng an tồn giao thơng đường cịn diễn biến phức tạp, số người chết tai nạn giao thơng mức cao tình trạng xâm phạm cơng trình giao thơng cịn xảy phổ biến, hạ tầng giao thông kém, biển báo dày đặc nên gây nhiều khó khăn cho người tham gia giao thơng Cụ thể, tháng đầu năm 2012, nước xảy 17.886 vụ tai nạn giao thông làm chết 4.953 người bị thương 19.977 người Các vụ tai nạn dẫn đến chết người xảy tuyến quốc lộ có chiều hướng gia tăng Theo đánh giá Bộ Công an nhà chức năng, nguyên nhân vụ tai nạn giao thông chủ yếu người điều khiển phương tiện sai phần đường, tránh vượt sai quy định, vi phạm tốc độ, chuyển hướng không quan sát hết biển báo giao thông Chính thế, nhà khoa học nước tiên tiến giới nghiên cứu đề xuất nhiều giải pháp như: - Nâng cao sở hạ tầng giao thông tương ứng với tốc độ tăng trưởng kinh tế - Kiểm tra loại bỏ phương tiện q hạn khơng đáp ứng tiêu chuẩn an tồn để tham gia giao thông - Tuyên truyền cho người tham gia giao thông chấp hành tốt Luật giao thông tham gia giao thơng có văn hóa để giảm tai nạn giao thông - Giải pháp quan trọng nhất, nắm hồn tồn thành cơng giải pháp nâng cáo ý thức người điều khiển phương tiện tham gia giao thông - Biển báo giao thông nhận dạng cách tự động lúc nhận biết biển báo xuất đường, hỗ trợ nhiều cho người tham gia giao thông đưa cảnh báo kịp thời, xác để giảm ùn tắc, an tồn - Trên giới, có nhiều hệ thống hỗ trợ cho người điều khiển phương tiện giao thơng, hệ thống hệ thống nhận dạng biển báo giao thông, cảnh báo cho người điều khiển phương tiện Giải pháp áp dụng Việt Nam, chưa sở hạ tầng giao thông nước ta chưa phù hợp chi phí cho sản phẩm cao - Sử dụng lọc Gabor thiết kế gồm nhiều lọc với tính chất khác xem xét đáp ứng ảnh cho tiếp xúc với lọc tập kết trả cho ta thấy rõ tính chất ảnh góc, cạnh, màu sắc… mạng Nơron đóng vai trị quan trọng ứng dụng xử lý ảnh, tăng tốc độ xử lý, đảm bảo độ xác theo thời gian thực - Về nhu cầu cần có hệ thống nhận dạng biển báo giao thông phục vụ, hỗ trợ việc lái xe an toàn, thỏa mái đạt hiệu cao cần thiết ứng dụng để đưa cảnh báo giao thơng số ứng dụng khác Đó lý mà chọn nghiên cứu thực đề tài: “Nhận dạng biển báo giao thông sở mạng Nơron.” hướng dẫn Thầy Nguyễn Mạnh Cường - Trong báo cáo nhóm chia thành nội dung theo trình tự sau: Chương 1: Khảo Sát Và Phát Biểu Bài Toán Trong chương 1, nhóm nêu lên tổng quan biển báo giao thông Việt Nam từ giai đoạn hình thành phát triển đến nay, nêu khái niệm biển báo giao thơng gì? Và phát biểu toán mà đề tài cần giải Chương 2: Các kỹ thuật giải toán Sau xác định được, phát biểu toán u cầu tốn Ở chương chúng tơi trình bày số kỹ thuật, phương phát để giải yêu cầu toán đề Chương Thực nghiệm Tập trung trình bày trình thực nghiệm kết đạt với kỹ thuật giải toán đề xuất chương Tiến hành so sánh kết thực nghiệm thu từ phương pháp đề xuất giải với số phương pháp phổ biến đưa nhận xét Chương 4: Xây dựng sản phẩm demo Để tận dụng biểu thị rõ ràng kết mà nhóm đạt q trình thực nghiệm Nhóm thực xây dụng mơ hình ứng dụng nhận dạng biển báo Phần kết luận: Tổng kết lại nhũng đạt báo cáo, rút học kinh nghiệm kiến thực tiếp thu trình nghiên cứu thực hiền đề tài CHƯƠNG 1: BÀI TỐN NHẬN DIỆN BIỂN BÁO GIAO THƠNG 1.1 Tổng quan nhận dạng biển báo giao thông a Giới thiệu nhận dạng Nhận dạng trình xác định phân biệt đối tượng, thuộc tính ngữ cảnh dựa thơng tin mà hệ thống thu thập Có nhiều loại nhận dạng khác nhau, bao gồm nhận dạng khuôn mặt, nhận dạng giọng nói, nhận dạng vân tay, nhiều Nhận dạng đóng vai trị quan trọng nhiều lĩnh vực, từ công nghiệp đến y tế an ninh Dưới số khía cạnh quan trọng nhận dạng: Nhận dạng Khuôn Mặt (Facial Recognition): Sử dụng để nhận diện xác định danh tính người sử dụng dựa đặc điểm khuôn mặt Ứng dụng phổ biến bao gồm hệ thống mở khóa điện thoại di động, kiểm soát truy cập giám sát an ninh Nhận dạng Giọng Nói (Voice Recognition): Sử dụng để xác định xác minh người nói dựa đặc điểm giọng nói Áp dụng hệ thống nhận dạng người nói, điều khiển giọng, mơi trường điều khiển giọng nói Nhận dạng Vân Tay (Fingerprint Recognition): Dựa đặc điểm vân tay để xác định danh tính Được sử dụng rộng rãi thiết bị di động hệ thống an ninh Nhận dạng Vật Thể Hình Ảnh (Object and Image Recognition): Nhận dạng đối tượng, định dạng vật thể hình ảnh video Ứng dụng cơng nghiệp, y tế, ô tô tự lái, nhiều lĩnh vực khác Nhận Dạng Văn Bản (Text Recognition): Phân tích nhận dạng văn từ hình ảnh tệp PDF Được sử dụng quét tài liệu, chuyển đổi hình ảnh thành văn chỉnh sửa 10 #Building the model model = Sequential() model.add(Conv2D(filters=32, kernel_size=(5,5), activation=’relu’, input_shape=X_train.shape[1:])) model.add(Conv2D(filters=32, kernel_size=(5,5), activation=’relu’)) model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(rate=0.25)) model.add(Conv2D(filters=64, kernel_size=(3, 3), activation=’relu’)) model.add(Conv2D(filters=64, kernel_size=(3, 3), activation=’relu’)) model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(rate=0.25)) model.add(Flatten()) model.add(Dense(256, activation=’relu’)) model.add(Dropout(rate=0.5)) model.add(Dense(43, activation=’softmax’)) #Compilation of the model model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’]) Đây kiến trúc mạng neural học sâu (CNN) thiết kế để phân loại ảnh, đặc biệt thiết kế cho vấn đề có 43 lớp Hãy phân tích thành phần mơ hình: Lớp đầu vào: - Lớp đầu vào xác định ngầm cách xác định hình dạng đầu vào lớp tích chập - Hình dạng đầu vào xác định `X_train.shape[1:]`, giả sử `X_train` liệu huấn luyện bạn Các lớp tích chập - Sử dụng hai lớp tích chập: - Bộ có 32 lọc với kích thước kernel (5, 5) kích hoạt ReLU - Bộ thứ hai có 64 lọc với kích thước kernel nhỏ (3, 3) kích hoạt ReLU - Các lớp tích chập sử dụng để phát mơ hình đặc trưng cục ảnh đầu vào Các lớp MaxPooling: 50 - Thêm hai lớp MaxPooling sau lớp tích chập - MaxPooling với kích thước (2, 2) sử dụng để giảm kích thước khơng gian trích xuất đặc trưng quan trọng Các lớp Dropout: - Thêm hai lớp Dropout sau lớp MaxPooling với tỷ lệ dropout 0,25 - Dropout áp dụng để chống mức, ngăn chặn việc mức đặt phần đơn vị đầu vào thành trình huấn luyện Lớp Flatten: - Lớp Flatten sử dụng để chuyển đổi đầu 2D từ lớp trước thành mảng 1D, chuẩn bị cho lớp kết nối đầy đủ Các lớp Fully Connected: - Một lớp dense (đầy đủ kết nối) với 256 nút kích hoạt ReLU thêm vào - Một lớp Dropout với tỷ lệ 0,5 thêm vào để chống mức - Lớp dense cuối có 43 nút (giả sử có 43 lớp để phân loại) với kích hoạt softmax, phù hợp cho vấn đề phân loại đa lớp Biên dịch: - Hàm mát chọn crossentropy phân loại, phù hợp cho vấn đề phân loại đa lớp - Bộ tối ưu hóa Adam sử dụng cho tối ưu hóa - Các số để đánh giá trình huấn luyện bao gồm độ xác Tóm tắt: - Kiến trúc CNN tuân theo khuôn mẫu phổ biến cho nhiệm vụ phân loại ảnh - Các lớp tích chập sử dụng để trích xuất đặc trưng, max pooling để giảm kích thước khơng gian - Dropout áp dụng để chống mức - Các lớp dense cuối chịu trách nhiệm cho việc phân loại 51 - Mơ hình biên dịch crossentropy phân loại tối ưu hóa Adam Để hiểu đầy đủ hiệu suất khả tổng quát mô hình, quan trọng phải huấn luyện đánh giá liệu cụ thể 4.4 Huấn luyện xác nhận mơ hình Để huấn luyện mơ hình mình, chúng tơi sử dụng phương thức model.fit() hoạt động tốt sau xây dựng thành công kiến trúc mơ hình Với trợ giúp 64 kích cỡ lơ, chúng tơi đạt độ xác 95% tập huấn luyện đạt độ ổn định sau 15 kỷ nguyên Hình 4.5 sử dung hàm model.fit() để huấn luyện Kết quả: Hình 4.6 Kết độ xác 95% đạt độ ổn định sau 15 kỳ 52 Hình 4.7 Hàm vẽ đồ thị để trực quan hóa độ xác (accuracy) độ mát (loss) Output: 53 Hình 4.8 Hai đồ thị để trực quan hóa độ xác (accuracy) độ mát (loss) 4.5 Thử nghiệm mơ hình Một thư mục có tên “test” có sẵn tập liệu chúng tơi; bên đó, chúng tơi có tệp hoạt động phân tách dấu phẩy có tên là” test.csv” Nó bao gồm hai thứ, đường dẫn hình ảnh nhãn lớp tương ứng chúng Chúng ta sử dụng thư viện python gấu trúc để trích xuất đường dẫn hình ảnh với nhãn tương ứng Tiếp theo, 54 cần thay đổi kích thước hình ảnh thành 30×30 pixel để dự đốn mơ hình tạo mảng gọn gàng chứa đầy liệu hình ảnh Để hiểu cách mơ hình dự đốn nhãn thực tế, cần nhập điểm xác từ sklearn.metrics Cuối cùng, gọi phương thức Keras model.save() để giữ lại mơ hình huấn luyện Hình 4.9 kiểm thử độ xác mơ hình huấn luyện tập liệu kiểm thử Output: Hình 4.10 Kết sau kiểm thử độ xác Mục đích đoạn mã kiểm thử mơ hình máy học (CNN) huấn luyện liệu hình ảnh Dưới chi tiết mục đích phần đoạn mã: Đọc Bộ Dữ Liệu Kiểm Thử: - Sử dụng thư viện pandas để đọc tệp CSV ("Test.csv") chứa thông tin hình ảnh kiểm thử - Trích xuất nhãn (ClassId) đường dẫn (Path) hình ảnh từ liệu kiểm thử Tải Hình Ảnh Kiểm Thử: 55 - Đối với đường dẫn hình ảnh liệu kiểm thử, đọc hình ảnh, thay đổi kích thước 30x30 pixel chuyển đổi thành mảng NumPy - Tạo mảng chứa liệu hình ảnh tiền xử lý Dự Đốn Bằng Mơ Hình: - Sử dụng mơ hình huấn luyện để dự đốn lớp hình ảnh kiểm thử - Kết dự đoán lưu vào biến `pred` dạng xác suất cho lớp Tính Tốn Độ Chính Xác: - Chuyển đổi dự đoán từ xác suất thành lớp dự đoán cách chọn số có xác suất cao cho hình ảnh - Sử dụng hàm `accuracy_score` từ scikit-learn để tính độ xác so sánh lớp dự đốn nhãn thực tế liệu kiểm thử - In hình độ xác liệu kiểm thử Lưu Mơ Hình: - Lưu mơ hình huấn luyện vào tệp có tên "traffic_classifier.h5" để sử dụng lại sau 4.6 Xây dựng giao diện ứng dụng Chúng sử dụng thư viện python tiêu chuẩn có tên Tkinter để xây dựng giao diện người dùng đồ họa (GUI) cho trình nhận dạng biển báo giao thơng chúng tơi Chúng ta cần tạo tệp python riêng có tên “gui.py” cho mục đích Đầu tiên, cần tải mơ hình đào tạo ‘traffic_classifier.h5’ với trợ giúp kỹ thuật học sâu thư viện Keras Sau đó, chúng tơi xây dựng GUI để tải hình ảnh lên nút phân loại để xác định hình ảnh chúng tơi thuộc lớp Chúng tơi tạo hàm phân loại() cho mục đích này; nhấp vào nút GUI, chức gọi 56 ngầm Để dự đoán biển báo giao thơng, chúng tơi cần cung cấp độ phân giải hình dạng giống sử dụng thời điểm đào tạo mơ hình Vì vậy, phương thức phân loại(), chuyển đổi hình ảnh thành kích thước hình dạng (1 * 30 * 30 * 3) Hàm model.predict_classes(image) sử dụng để dự đốn hình ảnh, trả số lớp (0-42) cho hình ảnh Sau đó, trích xuất thơng tin từ từ điển số lớp import tkinter as tk from tkinter import filedialog from tkinter import * from PIL import ImageTk, Image import numpy #load the trained model to classify sign from keras.models import load_model model = load_model('traffic_classifier.h5') #dictionary to label all traffic signs class classes = { 1:'Speed limit (20km/h)', 2:'Speed limit (30km/h)', 3:'Speed limit (50km/h)', 4:'Speed limit (60km/h)', 5:'Speed limit (70km/h)', 6:'Speed limit (80km/h)', 7:'End of speed limit (80km/h)', 57 8:'Speed limit (100km/h)', 9:'Speed limit (120km/h)', 10:'No passing', 11:'No passing veh over 3.5 tons', 12:'Right-of-way at intersection', 13:'Priority road', 14:'Yield', 15:'Stop', 16:'No vehicles', 17:'Veh > 3.5 tons prohibited', 18:'No entry', 19:'General caution', 20:'Dangerous curve left', 21:'Dangerous curve right', 22:'Double curve', 23:'Bumpy road', 24:'Slippery road', 25:'Road narrows on the right', 26:'Road work', 27:'Traffic signals', 28:'Pedestrians', 29:'Children crossing', 58 30:'Bicycles crossing', 31:'Beware of ice/snow', 32:'Wild animals crossing', 33:'End speed + passing limits', 34:'Turn right ahead', 35:'Turn left ahead', 36:'Ahead only', 37:'Go straight or right', 38:'Go straight or left', 39:'Keep right', 40:'Keep left', 41:'Roundabout mandatory', 42:'End of no passing', 43:'End no passing vehicle with a weight greater than 3.5 tons' } #initialise GUI top=tk.Tk() top.geometry('800x600') top.title('Traffic sign classification') top.configure(background='#CDCDCD') label=Label(top,background='#CDCDCD', font=('arial',15,'bold')) sign_image = Label(top) def classify(file_path): 59 global label_packed image = Image.open(file_path) image = image.resize((30,30)) image = numpy.expand_dims(image, axis=0) image = numpy.array(image) pred = model.predict_classes([image])[0] sign = classes[pred+1] print(sign) label.configure(foreground='#011638', text=sign) def show_classify_button(file_path): classify_b=Button(top,text="Classify Image",command=lambda: classify(file_path),padx=10,pady=5) classify_b.configure(background='#364156', foreground='white',font=('arial',10,'bold')) classify_b.place(relx=0.79,rely=0.46) def upload_image(): try: file_path=filedialog.askopenfilename() uploaded=Image.open(file_path) uploaded.thumbnail(((top.winfo_width()/2.25),(top.winfo_height()/2.25))) im=ImageTk.PhotoImage(uploaded) 60 sign_image.configure(image=im) sign_image.image=im label.configure(text='') show_classify_button(file_path) except: pass upload=Button(top,text="Upload an image",command=upload_image,padx=10,pady=5) upload.configure(background='#364156', foreground='white',font=('arial',10,'bold')) upload.pack(side=BOTTOM,pady=50) sign_image.pack(side=BOTTOM,expand=True) label.pack(side=BOTTOM,expand=True) heading = Label(top, text="check traffic sign",pady=20, font=('arial',20,'bold')) heading.configure(background='#CDCDCD',foreground='#364156') heading.pack() top.mainloop() Output: 61 Hình 4.11 Kết qảu chạy mơ hình demo 62 KẾT LUẬN Trong nghiên cứu việc nhận diện biển báo giao thông sử dụng mạng nơ-ron tích chập, chứng kiến mạnh mẽ công nghệ đại việc giải vấn đề giao thơng an tồn hiệu Mạng nơ-ron tích chập chứng minh khả xuất sắc việc nhận diện phân loại biển báo giao thông từ ảnh đầu vào Kết nghiên cứu cho thấy việc tích hợp mạng nơ-ron tích chập vào hệ thống nhận diện biển báo khơng giúp cải thiện độ xác mà cịn tăng cường tốc độ xử lý, làm cho hệ thống trở nên linh hoạt thích ứng tốt với mơi trường đường sá thực tế Tính ứng dụng mơ hình kiểm chứng thông qua thử nghiệm đánh giá chất lượng, đặt sở cho việc triển khai thực tế hệ thống giám sát giao thơng Điều mang lại lợi ích lớn an tồn giao thơng, giảm rủi ro tai nạn cải thiện hiệu suất hệ thống quản lý giao thông Tuy nhiên, để đạt thành công ổn định hệ thống, cần phải tiếp tục nghiên cứu phát triển, đồng thời đảm bảo tính linh hoạt khả mở rộng mơ hình tình đa dạng thay đổi Đồng thời, yếu tố bảo mật thông tin bảo vệ quyền riêng tư cần xem xét cẩn thận triển khai hệ thống thực tế Tóm lại, kết hợp mạng nơ-ron tích chập nhận diện biển báo giao thơng đóng góp quan trọng hứa hẹn việc nâng cao chất lượng an toàn giao thông đường sá 63 TÀI LIỆU THAM KHẢO [1] https://en.wikipedia.org/wiki/Traffic-sign_recognition [2] https://pyimagesearch.com/2019/11/04/traffic-sign-classification-with-kerasand-deep-learning/ [3] https://www.analyticsvidhya.com/blog/2021/12/traffic-signs-recognitionusing-cnn-and-keras-in-python/ [4] https://www.vicos.si/research/traffic-sign-detection/ [5] https://www.kaggle.com/code/kanncaa1/convolutional-neural-network-cnntutorial 64