ỨNG DỤNG XỬ LÝ ẢNH ĐỂ NHẬN DẠNG BIỂN BÁO GIAO THÔNG TỪ FILE ẢNH, TỪ CAMERA Cần file code full liên hệ: 0799155065 Biển báo giao thông là các qui định cho người điều khiển phương tiện tham gia giao thông bắt buộc phải tuân thủ để đảm bảo an toàn cho người và phương tiện tham gia giao thông. Đây là những ký hiệu đơn giản và bắt buộc phải biết đối với những người tham gia giao thông, chúng được đặt ở những vị trí giúp cho người điều kiển phương tiện tham gia giao thông dễ quan sát nhất. Tuy nhiên, trên thực tế một số biển báo giao thông đã bị che khuất bởi một số công trình xây dựng, biển quảng cáo trái phép hay cây mọc phía trước không được dọn dẹp thường xuyên và đôi khi do tác động ngoại cảnh làm biển báo giao thông có thể bị quay nghiêng đi một góc làm cho việc quan sát của người điều khiển phương tiện giao thông gặp rất nhiều khó khăn. Ngày nay, khi mà nền khoa học đang phát triển lên những tầm cao mới, các nhà khoa học mong muốn đưa xe thông minh - loại phương tiện có khả năng tự di chuyển tham gia giao thông cùng với các phương tiện khác do con người điều khiển. Để làm được điều này, có rất nhiều vấn đề được đặt ra từ khâu tự động tránh vật cản tĩnh, tự động tránh các phương tiện khác cũng đang tham gia giao thông (vật cản động) cho đến vấn đề tuân thủ các qui định bắt buộc trên tuyến đường thông qua biển báo giao thông. Vấn đề tự động quan sát và hiểu được biển báo giao thông cho xe thông minh một cách chính xác trong mọi điều kiện khác nhau về ánh sáng, sương mù, trời mưa, tuyết và ngay cả khi trời tối đang được đặt ra cho các nhà khoa học, với mong muốn giải quyết đồng thời tính chính xác và tốc độ xử lý cao. Rất nhiều nghiên cứu thực nghiệm và lý thuyết đã và đang được thực hiện, tuy nhiên thực tế trong nhiều tình huống không mong muốn các nghiên cứu đang gặp rất nhiều khó khăn. Bài báo này phát triển giải thuật cho việc dò tìm và nhận diện các biển báo giao thông trong điều kiện khác nhau về thời tiết, ánh sáng và sương mù (chương trình này đã được tác giả lập, cho chạy thử nghiệm tại Viện Công nghệ Châu Á, Thái lan và hoàn thiện tại trường Đại học Nha trang). Trong nghiên cứu này, một điểm ảnh có thể được coi là điểm biên nếu ở đó có sự thay đổi đột ngột về mức xám; tập hợp các điểm biên tạo thành biên. Ảnh được phân tích, xử lý dựa vào biên. Các ảnh dùng trong nghiên cứu này là ảnh đa cấp xám được chụp từ thực tế trên một số tuyến đường trong điều kiện thời tiết khác nhau, với ảnh màu sẽ được chuyển sang đa cấp xám trước khi đưa vào xử lý.
MỤC ĐÍCH
Nghiên cứu và áp dụng các phương pháp nhận dạng để phát hiện biển báo giao thông là một bước quan trọng trong việc xây dựng chương trình nhận diện Chương trình này sẽ được cài đặt và thực nghiệm trên bộ ảnh tĩnh nhằm nâng cao hiệu quả nhận diện biển báo giao thông.
Chương trình này được thiết kế để cung cấp cho người dùng một phương pháp tiếp cận nhanh chóng và hiệu quả về luật giao thông, đặc biệt là giúp họ hiểu rõ công dụng của các biển báo giao thông.
PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp tài liệu bao gồm việc tìm hiểu lập trình Python và lý thuyết cơ bản về thuật toán CNN, nghiên cứu các phương pháp nhận dạng biển báo giao thông, và lựa chọn công cụ hỗ trợ phù hợp cho quá trình phát triển dự án.
Phương pháp thực nghiệm: Xây dựng chương trình thực nghiệm
NỘI DUNG NGHIÊN CỨU
Tìm hiểu các kĩ thuật xử lý ảnh trong nhận diện hình học Tìm hiểu thuật toán để xử lý nhận dạng
Xây dựng chương trình nhận diện các biển báo khác nhau Công cụ thực hiện: Pycharm
Tổng quan
TRÍ TUỆ NHÂN TẠO
Trí tuệ nhân tạo (AI) là sự thông minh được phát triển bởi con người cho máy móc Kể từ khi máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã nỗ lực xây dựng hệ thống máy tính, bao gồm cả phần cứng và phần mềm, với mục tiêu đạt được khả năng thông minh tương tự như con người.
Mặc dù ước mơ về trí tuệ nhân tạo hoàn hảo vẫn còn xa vời, những thành tựu đạt được trong lĩnh vực này là đáng kể Chúng ta đã phát triển các hệ thống như phần mềm chơi cờ vua trên siêu máy tính GeneBlue, có khả năng đánh bại nhà vô địch cờ thế giới, cũng như các phần mềm chứng minh các bài toán hình học Điều này cho thấy, trong một số lĩnh vực, máy tính có thể hoạt động hiệu quả hơn hoặc tương đương với con người, mặc dù không phải ở tất cả các lĩnh vực.
Hình 2: Trí tuệ nhân tạo
XỬ LÝ ẢNH
Xử lý ảnh là một lĩnh vực quan trọng trong kỹ thuật thị giác máy tính, đóng vai trò then chốt cho nhiều nghiên cứu trong ngành này Hai nhiệm vụ chính của xử lý ảnh bao gồm nâng cao chất lượng thông tin hình ảnh và cung cấp dữ liệu cho các quy trình khác, trong đó có ứng dụng thị giác vào điều khiển.
Quá trình xử lý ảnh bắt đầu bằng việc thu nhận hình ảnh từ các thiết bị số hoặc tương tự và gửi đến máy tính Dữ liệu ảnh sau đó được lưu trữ ở định dạng phù hợp để phục vụ cho việc xử lý Người lập trình sẽ áp dụng các thuật toán tương ứng lên dữ liệu ảnh nhằm thay đổi cấu trúc của ảnh cho phù hợp với các ứng dụng khác nhau.
Quá trình xử lý nhận dạng ảnh là thao tác nhằm tạo ra kết quả mong muốn từ ảnh đầu vào Kết quả có thể là một ảnh đã được xử lý hoặc một kết luận cụ thể Ảnh được coi là tập hợp các điểm ảnh, mỗi điểm ảnh thể hiện cường độ sáng hoặc một dấu hiệu tại vị trí nhất định trong không gian, và có thể được mô tả như một hàm n biến P(c,c1,c2,…) Do đó, ảnh trong xử lý ảnh có thể được xem như ảnh n chiều.
Gần đây, nhiều cải tiến công nghệ mới đã xuất hiện dựa trên công nghệ nhận dạng hình ảnh, bao gồm tính năng nhận dạng khuôn mặt trong điện thoại thông minh, chế độ tự hành trong xe tự lái và chẩn đoán hình ảnh trong chăm sóc sức khỏe Các giải pháp này giúp máy tính cảm nhận và phân tích các vật thể xung quanh, dẫn đến thuật ngữ "thị giác máy tính" hay "điện toán thị giác" Nhờ vào công nghệ này, máy tính có khả năng đưa ra quyết định chính xác dựa trên những gì chúng quan sát được.
Nhận diện hình ảnh, hay còn gọi là thị giác máy tính, là kỹ thuật tự động hóa các tác vụ mà hệ thống thị giác của con người có thể thực hiện Một số ví dụ tiêu biểu bao gồm TensorFlow của Google, DeepFace của Facebook và Dự án Oxford của Microsoft, tất cả đều là những hệ thống nhận diện hình ảnh học sâu ấn tượng Bên cạnh đó, các API được lưu trữ như Google Cloud Vision, Clarifai và Imagga giúp doanh nghiệp tiết kiệm chi phí cho đội ngũ phát triển.
Nhận dạng hình ảnh hiện nay tương tự như nhận thức thị giác của con người, đã trở thành một phần quan trọng trong cuộc sống hàng ngày và phục vụ nhiều nhu cầu khác nhau Các nền tảng như Facebook áp dụng công nghệ này để cải thiện tìm kiếm hình ảnh và hỗ trợ người dùng khiếm thị Trong lĩnh vực bán lẻ, doanh nghiệp sử dụng nhận dạng hình ảnh để quét cơ sở dữ liệu lớn, từ đó nâng cao trải nghiệm khách hàng cả tại cửa hàng và trực tuyến Trong chăm sóc sức khỏe, hệ thống nhận dạng và xử lý hình ảnh y tế giúp chuyên gia dự đoán rủi ro sức khỏe, phát hiện bệnh sớm và cung cấp dịch vụ chăm sóc bệnh nhân tốt hơn.
Nhận dạng các vật thể trong hình ảnh là một phần quan trọng của các nhiệm vụ thị giác máy tính, bao gồm tìm kiếm trực quan, phát hiện đối tượng và phân đoạn ngữ nghĩa.
Nhận dạng vật thể trong hình ảnh là quá trình phát triển thuật toán giúp máy móc phân tích và xác định các đối tượng trong ảnh đầu vào thô Điều quan trọng là máy móc không thể "nhìn" hay "cảm nhận" hình ảnh như con người, mà chúng chỉ hoạt động dựa trên các phép toán và dữ liệu.
Hình 3: Nhận dạng vật thể
Các công ty hàng đầu như Tesla, Google, Uber và Adobe Systems đang áp dụng công nghệ nhận diện hình ảnh Theo các thống kê gần đây, thị trường toàn cầu cho công nghệ này dự kiến sẽ đạt 38,92 tỷ USD vào năm tới, chứng tỏ sự phổ biến và tiềm năng phát triển mạnh mẽ của nó trên toàn thế giới.
Năm 2021 đánh dấu sự bùng nổ của ứng dụng imagetech, với việc nhận diện hình ảnh được áp dụng rộng rãi trong nhiều lĩnh vực, bao gồm cả kinh doanh Sự phát triển này được thúc đẩy bởi các công cụ mã nguồn mở, giúp lập trình trở nên dễ dàng hơn và chi phí ngày càng giảm Các khung công tác và thư viện mã nguồn mở cho phép các công ty tận dụng công nghệ nhận diện hình ảnh một cách hiệu quả và nhanh chóng.
Các cơ sở dữ liệu mở lớn như Pascal VOC và ImageNet cung cấp hàng triệu hình ảnh được gắn thẻ, giúp các công ty công nghệ hình ảnh phát triển và cải tiến thuật toán học máy của họ Đối với các nhà phát triển chuyên nghiệp, nhận diện hình ảnh thời gian thực thường sử dụng thư viện đa nền tảng nguồn mở OpenCV, được coi là điểm khởi đầu quan trọng và là nguồn tài nguyên uy tín cho các chuyên gia trong lĩnh vực này Ngoài OpenCV, còn có nhiều thư viện tuyệt vời khác cho tầm nhìn máy tính như OpenNN và VXL.
OPEN CV
OpenCV là thư viện mã nguồn mở chuyên về thị giác máy tính, được phát triển bằng C và C++, và tương thích với các hệ điều hành như Linux, Windows và Mac OS X Thư viện này hỗ trợ nhiều ngôn ngữ lập trình như Python, Ruby và Matlab, giúp người dùng dễ dàng triển khai Được thiết kế để tối ưu hóa hiệu suất tính toán, OpenCV đặc biệt mạnh mẽ trong các ứng dụng thời gian thực và tận dụng tối đa khả năng của bộ vi xử lý đa lõi.
OpenCV tự động tích hợp thư viện IPP khi có sẵn, nhằm tối ưu hóa hiệu suất trong quá trình thực thi Mục tiêu chính của OpenCV là cung cấp nền tảng cho thị giác máy tính, giúp người dùng phát triển nhanh chóng các ứng dụng phức tạp Thư viện này bao gồm hơn 500 chức năng, phục vụ cho nhiều lĩnh vực như kiểm tra sản phẩm trong nhà máy, hình ảnh y tế, an ninh, giao diện người dùng, hiệu chỉnh máy ảnh, thị giác 3 chiều và robot.
Thị giác máy tính và lập trình thường gắn liền với nhau, với OpenCV đóng vai trò quan trọng trong việc phát triển Machine Learning Library (MLL) MLL rất hữu ích cho các tác vụ liên quan đến thị giác máy tính, mà OpenCV chuyên thực hiện Ngoài ra, Sublibrary tập trung vào nhận dạng mẫu thống kê và phân nhóm, góp phần nâng cao hiệu quả trong các ứng dụng thị giác máy tính.
Chức năng có trong thư viện OpenCV:
Thư viện OpenCV bao gồm một số tính năng nổi bật như:
Bộ công cụ hỗ trợ 2D và 3D
Nhận dạng chuyển động, đối tượng, hành vi,
Tương tác giữa con người và máy tính
Hỗ trợ thực tế tăng cường
Hình 4: Ví dụ về dùng OpenCV để nhận diện khuôn mặt
OpenCV là một bộ thư viện lớn được chia thành 5 phần chính, trong đó 4 phần được phân chia rõ ràng CV bao gồm các hàm xử lý hình ảnh cơ bản và thuật toán nhận dạng cao cấp; MLL là thư viện hỗ trợ cho máy học; HighGUI chứa các lệnh nhập xuất và hàm truy xuất hình ảnh, video; CXCore cung cấp các cấu trúc cơ bản, hàm vẽ và các hàm chung cho toàn bộ thư viện.
Trong hình bên dưới, không bao gồm CvAux, các thành phần chứa thuật toán vẫn đang trong giai đoạn thử nghiệm hoặc các hàm đã ngừng phát triển Tuy nhiên, trong CvAux, người dùng có thể tìm thấy nhiều hàm tiềm năng sẽ được chính thức đưa vào OpenCV trong tương lai.
- Nhận dạng cử chỉ từ camera
- Đặc tả các texture (vân bề mặt)
- Theo dõi mắt và miệng
- Tìm khung xương của vật thể
Hình 5: Cấu trúc thư viện OpenCV
Mô tả chương trình
QUY TRÌNH
Quy trình xử lý ảnh biển báo giao thông bắt đầu với việc nhập ảnh có biển báo và nền Hệ thống sẽ phân đoạn ảnh để loại bỏ nền, giúp làm nổi bật các đối tượng là biển báo giao thông Sau đó, các đối tượng này được lọc để xác định vùng ứng viên là biển báo Tiếp theo, ảnh biển báo đã được tách sẽ được đưa vào mô hình CNN đã được huấn luyện để nhận dạng loại biển báo Cuối cùng, hệ thống cung cấp thông tin về biển báo cho người dùng.
Phương pháp đề xuất và triển khai thuật toán
CÁC PHƯƠNG PHÁP PHÁT HIỆN VÀ NHẬN DẠNG BIỂN BÁO
Biển báo giao thông, hay còn gọi là hệ thống báo hiệu, là các tín hiệu được lắp đặt trên đường nhằm thông báo cho người tham gia giao thông về tình trạng của tuyến đường Hệ thống này cung cấp chỉ dẫn và cảnh báo cần thiết, giúp người tham gia giao thông đưa ra những quyết định hợp lý và kịp thời.
3.1.1 CÁC PHƯƠNG PHÁP PHÁT HIỆN
Phát hiện đối tượng là bước đầu quan trọng trong nhận dạng, đặc biệt là đối với biển báo giao thông Việc xác định biển báo từ khung hình camera với sự hỗ trợ của máy tính gặp nhiều thách thức Hiện nay, đã có nhiều phương pháp và cách tiếp cận khác nhau để giải quyết vấn đề xác định biển báo giao thông.
3.1.1.1 Phương pháp dựa trên màu sắc (color-based detection methods)
Một phương pháp phổ biến để xác định biển báo giao thông là tìm kiếm vùng ảnh chứa màu sắc đặc trưng, sử dụng phân ngưỡng đơn giản hoặc cao cấp Kết quả từ vùng ảnh này được xem như là biển báo giao thông hoặc là vùng cần chú ý Tuy nhiên, nhược điểm lớn của phương pháp này là độ tin cậy của màu sắc thường bị ảnh hưởng bởi thời gian trong ngày, điều kiện thời tiết và bóng râm Không gian màu RGB rất nhạy cảm với ánh sáng, do đó nhiều nhà nghiên cứu đã chuyển sang sử dụng phân ngưỡng trong các không gian màu khác như HSI.
3.1.1.2 Phương pháp dựa trên hình dạng (shape-based methods)
Phát hiện biển báo giao thông dựa trên hình dạng đã được nghiên cứu qua nhiều phương pháp khác nhau, trong đó phương pháp sử dụng phép biến đổi Hough là phổ biến nhất Phép biến đổi Hough là một kỹ thuật cho phép xác định hình dạng ngẫu nhiên trong ảnh, với ý tưởng cơ bản là sử dụng các cạnh của ảnh Mỗi điểm ảnh trên cạnh có thể được coi là tâm của đối tượng nếu nó nằm trên biên, giúp nhận diện biển báo hiệu quả.
Kỹ thuật nhận dạng biển báo giao thông do Loy và Barnes phát triển đã trở thành một phương pháp hiệu quả trong lĩnh vực thị giác máy tính Họ đã giới thiệu bộ phát hiện đa giác đều tổng quát, sử dụng phép biến đổi đối xứng xuyên tâm nhanh, tương tự như phép biến đổi Hough Quá trình bắt đầu bằng việc tính đạo hàm cấp một của ảnh gốc, sau đó phân ngưỡng để loại bỏ các điểm có biên độ thấp Những điểm ảnh còn lại có thể là vị trí của tâm đa giác đều, với khả năng chọn điểm ảnh dọc theo đường trực giao với đạo hàm Cần lưu ý rằng có hai đường thẳng có thể thỏa mãn yêu cầu, một theo hướng đạo hàm và một theo hướng ngược lại, giúp nhận diện biển báo bất kể độ sáng của nó so với nền.
Hình 7: Các vị trí đề cử điểm ảnh cho tâm đối tượng
Chiều dài của đường biểu quyết phụ thuộc vào bán kính của đa giác đều Các điểm ảnh tại cuối đường thẳng được chọn với trọng số tiêu cực nhằm giảm thiểu ảnh hưởng của những đường thẳng quá dài, không thể coi là cạnh của đa giác Kết quả ảnh đề cử (vote image) được gán nhãn là 0r.
Ngoài ảnh đề cử (vote image), còn có ảnh đẳng giác (equiangular image) được tạo ra Thủ tục đề xuất là nhân góc đạo hàm của các điểm ảnh trên cạnh của một đa giác đều với một hệ số nhất định, từ đó tạo ra các góc bằng nhau.
Xét một tam giác đều, ta thử nghiệm giá trị đạo hàm tại mỗi cạnh Giả sử các giá trị đạo hàm thu được là 73°.
193 0 , và 313 0 Các đạo hàm được cách nhau một khoảng 360 0 / n
Sau khi thực hiện các phép toán, ta có 73 0 x 3 = 219 0 và 193 0 x 3 = 579 0, từ đó tính được 579 0 – 360 0 = 219 0 Tương tự, 313 0 x 3 = 939 0 và 939 0 – 2 x 360 0 = 219 0 Mỗi điểm ảnh được chọn làm tâm của đa giác sẽ tạo ra một vector đơn vị, với độ dốc của vector tương ứng với góc đạo hàm của điểm ảnh nhân với số mặt của đa giác đều Các điểm ảnh tiếp theo được chọn theo một đường thẳng đề cử, nhưng với dạng của một vector đơn vị Những điểm này được thể hiện trong một ảnh mới gọi là ảnh đẳng giác, nơi mỗi điểm đại diện cho một vector tổng hợp từ các điểm đã chọn Các điểm được chọn từ các cạnh của đa giác đẳng giác sẽ có cùng độ dốc, dẫn đến độ lớn của các vector tại trọng tâm đa giác đẳng giác là lớn nhất.
Hình 8: Nhân các góc gradient của một tam giác cho 3 kết quả các góc sẽ bằng nhau
Cuối cùng, ảnh đề cử và định mức của ảnh đẳng giác được kết hợp để tạo ra đáp ứng tổng thể Phương thức này có độ phức tạp dựa trên độ dài cực đại của đường thẳng, số lượng điểm ảnh trong ảnh và số lượng bán kính đang xem xét Một trong những khuyết điểm chính là bán kính của đa giác cần được biết trước, điều này thường không dễ thực hiện Mặc dù có thể thử nghiệm với nhiều bán kính, nhưng phương pháp này tiêu tốn quá nhiều thời gian xử lý.
Gavrila sử dụng biến đổi khoảng cách dựa trên mẫu phù hợp để xác định hình dạng, bắt đầu bằng việc tìm các cạnh trong ảnh gốc Sau đó, một ảnh biến đổi khoảng cách (Distance Transform - DT) được tạo ra, trong đó mỗi điểm ảnh đại diện cho khoảng cách tới cạnh gần nhất Để phát hiện hình dạng đặc trưng, phương pháp dựa vào mẫu phù hợp (như tam giác đều) được áp dụng lên ảnh DT Để tối ưu hóa mẫu phù hợp, các phép biến đổi cơ bản như xoay, tỉ lệ và dời được sử dụng Trong phần mở rộng ý tưởng của Gavrila, các cạnh cần có sự khác biệt về hướng, dẫn đến việc tính toán các ảnh DT riêng biệt cho từng hướng và phân chia các mẫu theo hướng của chúng Biện pháp tổng thể nhằm tối ưu hóa là tổng hợp các biện pháp kết hợp giữa ảnh DT và các mẫu theo hướng đặc biệt Ngoài ra, Gavrila còn áp dụng mẫu phân cấp, trong đó các mẫu tương đồng được nhóm thành một prototype, giúp tiết kiệm chi phí khi tìm kiếm mẫu tốt nhất trong các prototype đã xác định.
Hình 9: Xây dựng ảnh biến đổi khoảng cách
Từ trái sang: Ảnh gốc; Ảnh cạnh và ảnh biến đổi khoảng cách; Mẫu cho ảnh DT được tìm kiếm là một tam giác đơn giản
3.1.1.3 Phương pháp phát hiện dựa trên máy học (methods based on machine learning)
Hai phương pháp tiếp cận dựa trên màu sắc và hình dạng yêu cầu giải quyết bài toán một cách thủ công Tuy nhiên, kiến thức này có thể được phát hiện thông qua máy học Nghiên cứu của Viola và Jones là một cột mốc quan trọng trong thị giác máy tính, khi họ phát triển thuật toán xác định đối tượng trong thời gian thực Bộ phát hiện được huấn luyện từ tập mẫu tích cực và tiêu cực, ban đầu chỉ dành cho phát hiện khuôn mặt, nhưng đã được áp dụng thành công cho nhiều đối tượng khác, bao gồm cả biển báo giao thông Bộ phát hiện này kết hợp hai khái niệm Adaboost và bộ phân lớp Haar-like.
3.1.2 CÁC PHƯƠNG PHÁP NHẬN DẠNG
Có rất nhiều phương pháp nhận dạng: SVM, PCA , CNN
Máy vectơ hỗ trợ (SVM) là một phương pháp học có giám sát trong thống kê và khoa học máy tính, được sử dụng để phân loại và phân tích hồi quy SVM chuẩn nhận dữ liệu đầu vào và phân loại chúng thành hai lớp khác nhau.
3.1.2.2 Phương pháp PCA Đây là thuật toán sinh ra để giải quyết vấn đề dữ liệu có quá nhiều chiều dữ liệu, cần giảm bớt chiều dữ liệu nhằm tăng tốc độ xử lí, nhưng vẫn giữ lại thông tin nhiều nhất có thể (high variance).
Mô hình mạng neural tích chập (CNN) là một công nghệ tiên tiến trong việc nhận dạng và phân loại hình ảnh, đặc biệt phổ biến trong các ứng dụng xác định đối tượng và nhận dạng khuôn mặt.
PHƯƠNG PHÁP ĐỀ XUẤT (MÔ HÌNH MẠNG NEURAL TÍCH CHẬP CNN)
Dùng thuật toán CNN đã được thiết kế sẵn để train lại, tùy chình để giải quyết bài toán.
Hình 10: Mạng lưới thần kinh tích chập hay Convolutional Neural
Các mạng thần kinh hoạt động dựa trên các thuật toán xếp chồng, khiến cho mỗi thuật toán phụ thuộc vào kết quả của các thuật toán khác Quá trình này nhằm mô phỏng lý luận logic của con người, lý do tại sao nó được gọi là Trí tuệ nhân tạo Đối với nhận dạng hình ảnh, mạng thần kinh được sử dụng là mạng thần kinh tích chập, hay còn gọi là Convolutional Neural Networks (CNN).
Cấu trúc của mạng CNN:
Mạng CNN bao gồm nhiều lớp Convolution chồng lên nhau, sử dụng các hàm kích hoạt phi tuyến như ReLU và tanh để kích hoạt trọng số trong các node Sau khi trải qua các hàm kích hoạt, mỗi lớp sẽ tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo.
Mỗi lớp trong mạng nơ-ron sau khi áp dụng các hàm kích hoạt sẽ tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng nơ-ron truyền tiếp (feedforward neural network), mỗi nơ-ron đầu vào sẽ kết nối với từng nơ-ron đầu ra trong các lớp kế tiếp.
Mô hình mạng kết nối đầy đủ, hay còn gọi là mạng toàn vẹn, khác với mô hình CNNs, nơi các layer liên kết với nhau thông qua cơ chế convolution.
Kết quả convolution từ lớp trước tạo ra các kết nối cục bộ, giúp mỗi neuron ở lớp kế tiếp được hình thành từ kết quả của filter áp dụng lên một vùng ảnh cục bộ của neuron trước đó.
Mỗi lớp trong mạng nơ-ron sử dụng hàng trăm đến hàng nghìn bộ lọc khác nhau để kết hợp và tối ưu hóa kết quả Bên cạnh đó, các lớp pooling hoặc subsampling được áp dụng để lọc ra thông tin hữu ích, loại bỏ những dữ liệu nhiễu không cần thiết.
Trong quá trình huấn luyện mạng nơ-ron tích chập (CNN), các giá trị được tự động học qua các lớp lọc dựa trên phương pháp thực hiện của người dùng Cụ thể, trong tác vụ phân loại ảnh, CNN sẽ nỗ lực xác định các thông số tối ưu cho các bộ lọc theo thứ tự từ pixel thô, đến cạnh và cuối cùng là hình dạng.
> facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh.
THUẬT TOÁN CHƯƠNG TRÌNH
3.3.1 SƠ ĐỒ HOẠT ĐỘNG CHƯƠNG TRÌNH
Hình 12: Sờ đồ hoạt động chương trình
3.3.2 CÀI ĐẶT PHẦN MỀM, THƯ VIỆN, TẢI DỮ LIỆU HÌNH ẢNH
VỀ VÀ TẠO FILE CHƯA TÊN CÁC LỚP
Bước 1: Tải Visual Studio code, xem hướng dẫn tại địa chỉ: https://youtu.be/89O0kDGSsCw.
Hình 12: Giao diện tạo file
Chọn New File → chọn Python File → Ctrl + S để lưu file.
Tạo 3 file lần lượt có tên là TrainingCode.py, TestCodeImage
Py, TestCodeCamera.py và lưu vào folder xla.
Hình 13: Giao diện TERMINAL Ở phần thư viện nhập lệnh: pip install tên thư viện (Tất cả thư viện ở phần 4.1 YÊU CẦU)
Bước 4: Tải tập dữ liệu hình ảnh của Đức
Truy cập vào đường link(https://www.miai.vn/2020/08/03/phan- loai-bien-bao-giao-thong-bang-deep-learning-cnn/) và chọn vào: link này.
Lưu tập dữ liệu vào folder xla.
Hình 14: Hình ảnh nơi chứa đường link tải tập dữ liệu hình ảnh
Bước 5: Tạo file chứa tên các lớp
Tạo file labels.csv trong excel với dữ liệu như bên dưới và cho vào cùng một folder xla.
6 End of speed limit (80km/h)
10 No passing for vechiles over 3.5 metric tons
11 Right-of-way at the next intersection
16 Vechiles over 3.5 metric tons prohibited
19 Dangerous curve to the left
20 Dangerous curve to the right
24 Road narrows on the right
32 End of all speed and passing limits
42 End of no passing by vechiles over 3.5 metric tons
Bảng 1: Dữ liệu file labels trong excel
Sử dụng bộ dữ liệu GTSRB - German Traffic Sign Recognition Benchmark gồm 42 loại biển báo của Đức
Hình 15: Biển báo giao thông Đức
3.3.4 TIỀN XỬ LÝ VÀ PHÂN CHIA DỮ LIỆU
Với bài toán này thì dữ liệu được chia thành 3 bộ:
Val: Để validation model trong quá trình train
Test: Để kiểm thử model sau khi train xong
Hình 16: Sơ đồ chia dữ liệu
Chúng ta sẽ tiến hành chia tập dữ liệu ảnh thành tập train và tập validation.
Hình 17: Phân chia dữ liệu
# X_train = sắp xếp hình ảnh để đào tạo
# y_train = id tương ứng với hình ảnh đào tạo
Hình 18: Kiểm tra số lượng hình ảnh có phù hợp với số nhãn cho mỗi tập hợp dữ liệu không
Hình 19: Tạo mô hình và định nghĩa mô hình
3.3.7 GỬI DỮ LIỆU TRỰC TIẾP VÀO MODEL MÀ ĐÀO TẠO
Hình 22: Ghi dữ liệu vào file model_trained.p
Demo chương trình
YÊU CẦU
-Các gói package cần cài:
NumPy là một thư viện toán học mạnh mẽ và phổ biến trong Python, cho phép xử lý hiệu quả các ma trận và mảng Thư viện này đặc biệt hữu ích khi làm việc với dữ liệu lớn, mang lại tốc độ xử lý nhanh hơn nhiều so với việc sử dụng Python thuần.
Matplotlib là một thư viện vẽ đồ thị mạnh mẽ, lý tưởng cho người dùng Python và NumPy Pyplot, module phổ biến nhất của Matplotlib, cung cấp giao diện tương tự MATLAB nhưng sử dụng Python và hoàn toàn miễn phí.
Nó biểu diễn dữ liệu dưới dạng đồ thị 2 chiều, 3 chiều.
Opencv-python: OpenCV là một thư viện các chức năng lập trình chủ yếu nhắm vào thị giác máy tính thời gian thực
Sklearn, hay còn gọi là Scikit-learn, là một thư viện máy học mã nguồn mở cho ngôn ngữ lập trình Python Thư viện này cung cấp nhiều thuật toán phân loại, hồi quy và phân cụm như máy vectơ hỗ trợ, rừng ngẫu nhiên, tăng cường độ dốc, k-means và DBSCAN Sklearn được thiết kế để tương tác hiệu quả với các thư viện khoa học và số liệu của Python, đặc biệt là NumPy.
Tensorflow: Thư viện Tensorfow là thư viện mã nguồn mở dùng cho tính toán số học sử dụng đồ thị luồng dữ liệu.
Keras: Keras là một open source cho Neural Network được viết bởi ngôn ngữ Python
CHẠY PROJECT
Bước 1: Chạy file TrainingCode.py
Bước 2: Chạy file TestCodeImage.py để chạy chương trình với ảnhBước 3: Chạy file TestCodeCamera.py để chạy chương trình với camera
KẾT QUẢ CHẠY
Qua quá trình train ta chạy chương trình và nhận dạng một số biển báo như hình bên dưới:
Hình 23: Kết quả chạy nhận dạng hình ảnh Priority road
Hình 24: Kết quả chạy nhận dạng biển báo từ camera
- Đã xây dựng thành công được chương trình nhận diện biển báo giao thông đơn giản
- T ìm hiểu được các kĩ thuật xử lý ảnh trong nhận diện hình học, thuật toán CNN xây dựng nên chương trình nhận diện biển báo giao thông.
-Vì mang tính nghiên cứu nên hệ thống chỉ mới làm việc trên tập dữ liệu thử nghiệm với số ít loại biển báo khác nhau
Ứng dụng gặp khó khăn khi tương tác với một số phần cứng không đáp ứng yêu cầu về khả năng xử lý hoặc có chất lượng camera nhận dạng kém.
Trong tương lai, nhóm nghiên cứu sẽ cải tiến phương pháp phát hiện biển báo để xử lý các trường hợp biển báo hư hỏng hoặc bị chồng lấp Đồng thời, nhóm cũng sẽ tăng cường số lượng mẫu huấn luyện và kiểm tra nhằm nâng cao độ chính xác của hệ thống Bên cạnh đó, hệ thống sẽ được mở rộng để phát hiện và nhận diện thêm nhiều kiểu biển báo khác.