1MỤC LỤCLỜI MỞ ĐẦU ...............................................................................................................................................2CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VÀ CÔNG NGHỆ SỬ DỤNG................................................31. Tổng quan về nhận diện biển số xe ....................................................................................31.1. Tổng quan.......................................................................................................................................31.2. Lịch sử phát triển............................................................................................................................31.3. Ứng dụng thực tiễn tại Việt Nam ...................................................................................................42. Công nghệ sử dụng...............................................................................................................42.1. CNN (Convolution Neural Network).............................................................................................42.2 SDD (Single Shot Detector)..........................................................................................................10CHƯƠNG 2: TÌM KIẾM DỮ LIỆU VÀ TRIỂN KHAI MÔ HÌNH ..........................................................151. Tìm kiếm và xử lý dữ liệu..................................................................................................151.1. Tìm kiếm ......................................................................................................................................151.2. Xử lý dữ liệu.................................................................................................................................152. Xây dụng mô hình huấn luyện..........................................................................................162.1. VGG16 .........................................................................................................................................162.2. EXTRAS LAYER........................................................................................................................172.3. LOCATION LAYER VÀ CONFIDENCE LAYER...................................................................182.4. DEFAULT BOX ..........................................................................................................................182.5. NONMAXIMUN SUPRESSION(NMS)....................................................................................202.6. LOSS FUNCTION.......................................................................................................................212.7. HUẤN LUYỆN MÔ HÌNH .........................................................................................................23CHƯƠNG 3: KẾT QUẢ CỦA TỪNG BƯỚC ...........................................................................................231. Tách biển số........................................................................................................................232. Tách kí tự............................................................................................................................243. Nhận diện kí tự: .................................................................................................................254. Tổng hợp các kết quả.........................................................................................................27CHƯƠNG 4: HẠN CHẾ VÀ HƯỜNG PHÁT TRIỂN ..............................................................................271. Hạn chế ...............................................................................................................................272. Hướng phát triển................................................................................................................28DANH MỤC TÀI LIỆU THAM KHẢO ....................................................................................................282LỜI MỞ ĐẦUThị giác máy tính là một lĩnh vực đang rất được quan tâm hiện nay. Ứng dụng về thị giácmáy tính rất rộng rãi có thể áp dụng được cho rất nhiều lĩnh vực như y tế, giáo dục, quốcphòng, an ninh,.. Tuy nhiên, thị giác máy tính đang gặp rất nhiều thách thức để đạt tới mứcđộ thị giác tự nhiên của con người. Một trong những thách thức đối với thị giác máy tính đólà làm sao có thể xác định chính xác vị trí của đối tượng để đưa ra dự đoán về đối tượng nhằmđưa ra những mô tả về đối tượng ví dụ: xác định con ngườimáy, biển số xe, v..v.Những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt bậc trong ngành Thị giácmáy tính (Computer Vision). Các kiến trúc Object Detection xử lý về Computer Visionngày càng hoàn thiện và đạt tới độ chính xác cao, thậm trí vượt trội so với khả năng quansát của con người nếu nguồn dữ liệu chính xác và được xử lý trọn vẹn. Một vài thuật toánđáp ứng được việc xử lý nhanh áp dụng cho realtime trong các hệ thống camera như :SSD, Yolo(v4), RCNN(2014), Fast RCNN(2015), v..v.Convolutional Neural Network (CNNs – Mạng neural tích chập) là một trong những môhình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minhvới độ chính xác cao như hiện nay.Các kiến trúc object detection đều dựa trên một deep CNN network chẳng hạn như VGG16hoặc Alexnet ở giai đoạn đầu giúp trích lọc features và nhận diện các region proposal. Sauđó phát triển thuật toán nhằm tìm ra bounding box và confidence của đối tượng chứa trongbounding box. Tùy vào thiết kế mà các mô hình có thể theo dạng pipeline hoặc trong mộtsingle model. Tốc độ xử lý của mô hình phụ thuộc vào số lượng bounding box mà nó tạora.Nội dung bài báo cáo bao gồm 3 chương:• Chương 1: Giới thiệu bài toán và công nghệ sử dụng• Chương 2: Tìm kiếm dữ liệu và triển khai mô hình• Chương 3: Áp dụng mạng neural tích chập trong nhận dạng ký tự3CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VÀ CÔNG NGHỆ SỬ DỤNG1. Tổng quan về nhận diện biển số xe1.1. Tổng quanHệ thống nhận dạng biển số xe là hệ thống có khả năng phân tích hình ảnh và xác định vùngchứa biển số trên xe, thông qua video, thiết bị ghi hình hoặc hình ảnh.Đầu vào của hệ thống sẽ là ảnh chụpvideo từ camera với kích thước bất kì. Yêu cầu hệthống nhanh chóng xác định được vị trí của biển số từ đó xác định được giá trị các con sốtrên biển.1.2. Lịch sử phát triểnNăm 1992, công nghệ ALPR (Automatic License Plate Number) hay còn gọi là tự độngnhận dạng biển số xe, được phát triển tại Đại học Cambridge ở Vương quốc Anh để ứngphó với chủ nghĩa khủng bố.Đến năm 1996, công nghệ ALPR đã được hoàn thiện tại mỗi cổng phía Tây Vương quốcAnh để đọc tất cả các biển đăng ký xe từ Ireland. Công nghệ ALPR tiếp tục được nghiêncứu và phát triển tại Anh. Kể từ tháng ba năm 2006, hầu hết các con đường, các trung tâmthị trấn, cảng, trạm xăng của London đã được lắp đặt camera chạy phần mềm ALPR.Trên thế giới hiện nay, bài toán nhận dạng biển số xe được nghiên cứu và phát triển mộtcách sâu rộng. Nhiều tác giả với các công trình nghiên cứu được công bố với tỉ lệ nhận dạngngày càng chính xác. Một số bài báo cáo nghiên cứu của các tác giả tiêu biểu trong vài nămtrở lại đây như:• Chirag N. Paunwala, 2010 với nội dung: rút trích vùng số xe trong ảnh. Ảnh đầu vàođược tiền xử lý bằng cách phương pháp nâng cao chất lượng ảnh, sau đó tìm biênbằng Vertical Edge và xử lý một lần nữa bằng Opening và Closing. Các vùng ứngviên sau đó được kiểm tra bằng thuật toán scan theo dòng để tìm được vùng chứabiển số xe chính xác. Kết quả nhận dạng 750 ảnh trong các điều kiện khác nhau cho4tỉ lệ 742750 = 99.2.• Choo Kar Soon, 2012 với nội dung: nhận dạng biển số xe tại Malaysia, sử dụng giảithuật Adaboots để training tập dữ liệu gồm gần 100 ảnh biển số. Các ký tự được nhậndạng bằng phương pháp KNN. Kết quả nhận dạng biển số 98% và nhận dạng ký tự95% trên ảnh tĩnh. Báo cáo này nghiên cứu cách nhận dạng biển số xe với sự kết hợpcủa phép biến đổi Hough và giải thuật tìm Contour để cải thiện kết quả phát hiệnvùng các ứng viên sau đó tiếp tục được scan theo dòng để đếm số đối tượng bị cắt vàso sánh với ngưỡng, nhằm tìm ra vùng ứng viên thõa mãn. Kết quả nhận dạng đạt9899%.Phần mềm nhận dạng biển số xe đã được ứng dụng thực tế tại các trạm cân, trạm gửi xe,các trụ đèn giao thông để phát hiện xe vi phạm.1.3. Ứng dụng thực tiễn tại Việt NamHệ thống nhận dạng biển số xe được xây dựng nhằm mục đích giám sát, kiểm soát cácphương tiện. Dưới đây chúng ta đề cập đến một số ứng dụng phổ biến đối với hệ thống nhậndạng biển số xe:• Thu phí giao thông: lắp đặt hệ thống “Nhận dạng biển số xe” tại các trạm thuphí nhằm hỗ trợ hoặc tự động hóa công tác thu phí.• Kiểm soát xe tại các đường biên giới: mỗi quốc gia đều có những quy định riêng vềbiển số xe, để phục vụ cho công tác quản lý và phát hiện những phương tiện giaothông (xe) vượt biên giới bất hợp pháp. Việc lắp hệ thống “Nhận dạng biển số xe”tại các trạm kiểm soát sẽ góp phần hỗ trợ công tác kiểm tra và an ninh quốc gia.• Các trạm gác cổng: việc lắp đặt hệ thống “Nhận dạng biển số xe” sẽ hỗ trợ hoặc tựđộng hóa công tác mở cổng cho xe vào. Ngoài ra, hệ thống còn được ứng dụng vàocông tác chống trộm xe, các bãi giữ xe tự động, điều tiết giao thông (chẳng hạn nhưThành phố Dublin đã ứng dụng công nghệ “Nhận dạng biển số xe tự động” trong việcđiều tiết giao thông theo dạng biển số chẵnlẻ).2. Công nghệ sử dụng2.1. CNN (Convolution Neural Network)2.1.1. Các Layer của mạng CNNConvolution layerẢnh xám được biểu diễn dưới dạng ma trận A kích thước mn.5Ta định nghĩa kernel là một ma trận vuông kích thước kk trong đó k là số lẻ (1, 3, 5, 7, 9,…)Ví dụ kernel kích thước 33Kí hiệu phép tính convolution (⊗), kí hiệu Y = X⊗WVới mỗi phần tử xij trong ma trận X lấy ra một ma trận có kích thước bằng kích thước củakernel W có phần tử xij làm trung tâm (đây là vì sao kích thước của kernel thường lẻ) gọi làma trận A. Sau đó tính tổng các phần tử của phép tính của ma trận A và ma trận W, rồi viếtvào ma trận kết quả Y.Tuy nhiên ảnh màu có tới 3 channels red, green, blue nên khi biểu diễn ảnh dưới dạng tensor3 chiều. Nên ta cũng sẽ định nghĩa kernel là 1 tensor 3 chiều kích thước kk3.Phép tính convolution trên ảnh màu với k=3.Ta định nghĩa kernel có cùng độ sâu (depth) với biểu diễn ảnh, rồi sau đó thực hiện dichuyển khối kernel tương tự như khi thực hiện trên ảnh xám.6PaddingNhư ở trên thì mỗi lần thực hiện phép tính convolution xong thì kích thước ma trận Y đều nhỏhơn X. Tuy nhiên giờ ta muốn ma trận Y thu được có kích thước bằng ma trận X => Tìm cáchgiải quyết cho các phần tử ở viền => Thêm giá trị 0 ở viền ngoài ma trận X.Ma trận X khi thêm viền 0 bên ngoàiRõ ràng là giờ đã giải quyết được vấn đề tìm A cho phần tử x11 , và ma trận Y thu được sẽbằng kích thước ma trận X ban đầu.Phép tính này gọi là convolution với padding=1. Padding=k nghĩa là thêm k vector 0 vào mỗiphía của ma trận.StrideNhư ở trên ta thực hiện tuần tự các phần tử trong ma trận X, thu được ma trận Y cùng kíchthước ma trận X, ta gọi là stride=1.7stride=1, padding=1Tuy nhiên nếu stride=k (k > 1) thì ta chỉ thực hiện phép tính convolution trên các phầntử x1+i∗k,1+j∗k. Ví dụ k = 2.padding=1, stride=2Hiểu đơn giản là bắt đầu từ vị trí x11 sau đó nhảy k bước theo chiều dọc và ngang cho đến hếtma trận X.Convolutional layer tổng quátGiả sử input của 1 convolutional layer tổng quát là tensor kích thước H W D.Kernel có kích thước F F D (kernel luôn có depth bằng depth của input và F là số lẻ),stride: S, padding: P. Convolutional layer áp dụng K kernel.=> Output của layer là tensor 3 chiều có kích thước:8Pooling layerPooling layer thường được dùng giữa các convolutional layer, để giảm kích thước dữ liệu nhưngvẫn giữ được các thuộc tính quan trọng. Kích thước dữ liệu giảm giúp giảm việc tính toán trongmodel.Gọi pooling size kích thước KK. Input của pooling layer có kích thước HWD, ta tách ra làmD ma trận kích thước HW. Với mỗi ma trận, trên vùng kích thước KK trên ma trận ta tìmmaximum hoặc average của dữ liệu rồi viết vào ma trận kết quả. Quy tắc về stride và paddingáp dụng như phép tính convolution trên ảnh.Nhưng hầu hết khi dùng pooling layer thì sẽ dùng size=(2,2), stride=2, padding=0. Khi đó outputwidth và height của dữ liệu giảm đi một nửa, depth thì được giữ nguyên .Có 2 loại pooling layer phổ biến là: max pooling và average pooling.9Trong một số model người ta dùng convolutional layer với stride > 1 để giảm kích thước dữliệu thay cho pooling layer.Fully connected layerSau khi ảnh được truyền qua nhiều convolutional layer và pooling layer thì model đã học đượctương đối các đặc điểm của ảnh (ví dụ mắt, mũi, khung mặt,…) thì tensor của output của layercuối cùng, kích thước HWD, sẽ được chuyển về 1 vector kích thước (HWD)Sau đó ta dùng các fully connected layer để kết hợp các đặc điểm của ảnh để ra được outputcủa model.2.1.1. Cấu trúc mạng VGG16VGG16 là mạng convolutional neural network được đề xuất bởi K. Simonyan and A.Zisserman, University of Oxford. Model sau khi train bởi mạng VGG16 đạt độ chính xác92.7% top5 test trong dữ liệu ImageNet gồm 14 triệu hình ảnh thuộc 1000 lớp khác nhau.Giờ áp dụng kiến thức ở trên để phân tích mạng VGG 16.10Kiến trúc vgg16Phân tích:• Convolutional layer: kích thước 33, padding=1, stride=1. Mặc định sẽ là stride=1 vàpadding để cho output cùng width và height với input.• Pool2 : max pooling layer với size 22• 33 conv, 64: thì 64 là số kernel áp dụng trong layer đấy, hay depth của output của layerđấy.• Càng các convolutional layer sau thì kích thước width, height càng giảm nhưng depth càngtăng.• Sau khá nhiều convolutional layer và pooling layer thì dữ liệu được flatten và cho vào fullyconnected layer.2.2 SDD (Single Shot Detector)Một số định nghĩa:• scale: Tỷ lệ chiều dài và chiều rộng so với khung hình gốc. VD: Nếu khung hình gốccó giá trị là (w,h) thì sau scale khung hình mới có kích thước là (sw,sh). Giá trịcủa s thường nằm trong khoảng s∈(0,1. Scale sẽ kết hợp với aspect ratio để nhận đượccác khung hình có tỷ lệ cạnh wh khác nhau.• aspect ratio: Tỷ lệ cạnh, được đo bằng tỷ lệ giữa wh nhằm xác định hình dạng tươngđối của khung hình bao chứa vật thể. Chẳng hạn nếu vật thể là người thường có aspectratio = 1:3 hoặc xe cộ nhìn từ phía trước là 1:1.• bounding box: Khung hình bao chứa vật thể được xác định trong quá trình huấn luyện.• ground truth box: Khung hình được xác định trước từ bộ dữ liệu thông qua tọađộ (
MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VÀ CÔNG NGHỆ SỬ DỤNG Tổng quan nhận diện biển số xe 1.1 Tổng quan 1.2 Lịch sử phát triển 1.3 Ứng dụng thực tiễn Việt Nam Công nghệ sử dụng 2.1 CNN (Convolution Neural Network) 2.2 SDD (Single Shot Detector) 10 CHƯƠNG 2: TÌM KIẾM DỮ LIỆU VÀ TRIỂN KHAI MƠ HÌNH 15 Tìm kiếm xử lý liệu 15 1.1 Tìm kiếm 15 1.2 Xử lý liệu 15 Xây dụng mô hình huấn luyện 16 2.1 VGG16 16 2.2 EXTRAS LAYER 17 2.3 LOCATION LAYER VÀ CONFIDENCE LAYER 18 2.4 DEFAULT BOX 18 2.5 NON-MAXIMUN SUPRESSION(NMS) 20 2.6 LOSS FUNCTION 21 2.7 HUẤN LUYỆN MƠ HÌNH 23 CHƯƠNG 3: KẾT QUẢ CỦA TỪNG BƯỚC 23 Tách biển số 23 Tách kí tự 24 Nhận diện kí tự: 25 Tổng hợp kết 27 CHƯƠNG 4: HẠN CHẾ VÀ HƯỜNG PHÁT TRIỂN 27 Hạn chế 27 Hướng phát triển 28 DANH MỤC TÀI LIỆU THAM KHẢO 28 LỜI MỞ ĐẦU Thị giác máy tính lĩnh vực quan tâm Ứng dụng thị giác máy tính rộng rãi áp dụng cho nhiều lĩnh vực y tế, giáo dục, quốc phòng, an ninh, Tuy nhiên, thị giác máy tính gặp nhiều thách thức để đạt tới mức độ thị giác tự nhiên người Một thách thức thị giác máy tính xác định xác vị trí đối tượng để đưa dự đoán đối tượng nhằm đưa mơ tả đối tượng ví dụ: xác định người/máy, biển số xe, v v Những năm gần đây, ta chứng kiến nhiều thành tựu vượt bậc ngành Thị giác máy tính (Computer Vision) Các kiến trúc Object Detection xử lý Computer Vision ngày hồn thiện đạt tới độ xác cao, trí vượt trội so với khả quan sát người nguồn liệu xác xử lý trọn vẹn Một vài thuật toán đáp ứng việc xử lý nhanh áp dụng cho real-time hệ thống camera : SSD, Yolo(v4), R-CNN(2014), Fast R-CNN(2015), v v Convolutional Neural Network (CNNs – Mạng neural tích chập) mơ hình Deep Learning tiên tiến giúp cho xây dựng hệ thống thơng minh với độ xác cao Các kiến trúc object detection dựa deep CNN network chẳng hạn VGG16 Alexnet giai đoạn đầu giúp trích lọc features nhận diện region proposal Sau phát triển thuật tốn nhằm tìm bounding box confidence đối tượng chứa bounding box Tùy vào thiết kế mà mơ hình theo dạng pipeline single model Tốc độ xử lý mơ hình phụ thuộc vào số lượng bounding box mà tạo Nội dung báo cáo bao gồm chương: • Chương 1: Giới thiệu tốn cơng nghệ sử dụng • Chương 2: Tìm kiếm liệu triển khai mơ hình • Chương 3: Áp dụng mạng neural tích chập nhận dạng ký tự CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VÀ CÔNG NGHỆ SỬ DỤNG Tổng quan nhận diện biển số xe 1.1 Tổng quan Hệ thống nhận dạng biển số xe hệ thống có khả phân tích hình ảnh xác định vùng chứa biển số xe, thông qua video, thiết bị ghi hình hình ảnh Đầu vào hệ thống ảnh chụp/video từ camera với kích thước u cầu hệ thống nhanh chóng xác định vị trí biển số từ xác định giá trị số biển 1.2 Lịch sử phát triển Năm 1992, công nghệ ALPR (Automatic License Plate Number) hay gọi tự động nhận dạng biển số xe, phát triển Đại học Cambridge Vương quốc Anh để ứng phó với chủ nghĩa khủng bố Đến năm 1996, công nghệ ALPR hồn thiện cổng phía Tây Vương quốc Anh để đọc tất biển đăng ký xe từ Ireland Công nghệ ALPR tiếp tục nghiên cứu phát triển Anh Kể từ tháng ba năm 2006, hầu hết đường, trung tâm thị trấn, cảng, trạm xăng London lắp đặt camera chạy phần mềm ALPR Trên giới nay, toán nhận dạng biển số xe nghiên cứu phát triển cách sâu rộng Nhiều tác giả với cơng trình nghiên cứu cơng bố với tỉ lệ nhận dạng ngày xác Một số báo cáo nghiên cứu tác giả tiêu biểu vài năm trở lại như: • Chirag N Paunwala, 2010 với nội dung: rút trích vùng số xe ảnh Ảnh đầu vào tiền xử lý cách phương pháp nâng cao chất lượng ảnh, sau tìm biên Vertical Edge xử lý lần Opening Closing Các vùng ứng viên sau kiểm tra thuật tốn scan theo dịng để tìm vùng chứa biển số xe xác Kết nhận dạng 750 ảnh điều kiện khác cho tỉ lệ 742/750 = 99.2 • Choo Kar Soon, 2012 với nội dung: nhận dạng biển số xe Malaysia, sử dụng giải thuật Adaboots để training tập liệu gồm gần 100 ảnh biển số Các ký tự nhận dạng phương pháp KNN Kết nhận dạng biển số 98% nhận dạng ký tự 95% ảnh tĩnh Báo cáo nghiên cứu cách nhận dạng biển số xe với kết hợp phép biến đổi Hough giải thuật tìm Contour để cải thiện kết phát vùng ứng viên sau tiếp tục scan theo dòng để đếm số đối tượng bị cắt so sánh với ngưỡng, nhằm tìm vùng ứng viên thõa mãn Kết nhận dạng đạt 98-99% Phần mềm nhận dạng biển số xe ứng dụng thực tế trạm cân, trạm gửi xe, trụ đèn giao thông để phát xe vi phạm 1.3 Ứng dụng thực tiễn Việt Nam Hệ thống nhận dạng biển số xe xây dựng nhằm mục đích giám sát, kiểm soát phương tiện Dưới đề cập đến số ứng dụng phổ biến hệ thống nhận dạng biển số xe: • Thu phí giao thơng: lắp đặt hệ thống “Nhận dạng biển số xe” trạm thu phí nhằm hỗ trợ tự động hóa cơng tác thu phí • Kiểm soát xe đường biên giới: quốc gia có quy định riêng biển số xe, để phục vụ cho công tác quản lý phát phương tiện giao thông (xe) vượt biên giới bất hợp pháp Việc lắp hệ thống “Nhận dạng biển số xe” trạm kiểm sốt góp phần hỗ trợ công tác kiểm tra an ninh quốc gia • Các trạm gác cổng: việc lắp đặt hệ thống “Nhận dạng biển số xe” hỗ trợ tự động hóa cơng tác mở cổng cho xe vào Ngồi ra, hệ thống cịn ứng dụng vào công tác chống trộm xe, bãi giữ xe tự động, điều tiết giao thông (chẳng hạn Thành phố Dublin ứng dụng công nghệ “Nhận dạng biển số xe tự động” việc điều tiết giao thông theo dạng biển số chẵn/lẻ) Công nghệ sử dụng 2.1 CNN (Convolution Neural Network) 2.1.1 Các Layer mạng CNN Convolution layer Ảnh xám biểu diễn dạng ma trận A kích thước m*n Ta định nghĩa kernel ma trận vng kích thước k*k k số lẻ (1, 3, 5, 7, 9,…) Ví dụ kernel kích thước 3*3 Kí hiệu phép tính convolution (⊗), kí hiệu Y = X⊗W Với phần tử xij ma trận X lấy ma trận có kích thước kích thước kernel W có phần tử xij làm trung tâm (đây kích thước kernel thường lẻ) gọi ma trận A Sau tính tổng phần tử phép tính ma trận A ma trận W, viết vào ma trận kết Y Tuy nhiên ảnh màu có tới channels red, green, blue nên biểu diễn ảnh dạng tensor chiều Nên ta định nghĩa kernel tensor chiều kích thước k*k*3 Phép tính convolution ảnh màu với k=3 Ta định nghĩa kernel có độ sâu (depth) với biểu diễn ảnh, sau thực di chuyển khối kernel tương tự thực ảnh xám Padding Như lần thực phép tính convolution xong kích thước ma trận Y nhỏ X Tuy nhiên ta muốn ma trận Y thu có kích thước ma trận X => Tìm cách giải cho phần tử viền => Thêm giá trị viền ma trận X Ma trận X thêm viền bên Rõ ràng giải vấn đề tìm A cho phần tử x11 , ma trận Y thu kích thước ma trận X ban đầu Phép tính gọi convolution với padding=1 Padding=k nghĩa thêm k vector vào phía ma trận Stride Như ta thực phần tử ma trận X, thu ma trận Y kích thước ma trận X, ta gọi stride=1 stride=1, padding=1 Tuy nhiên stride=k (k > 1) ta thực phép tính convolution phần tử x1+i∗k,1+j∗k Ví dụ k = padding=1, stride=2 Hiểu đơn giản vị trí x11 sau nhảy k bước theo chiều dọc ngang hết ma trận X Convolutional layer tổng quát Giả sử input convolutional layer tổng quát tensor kích thước H * W * D Kernel có kích thước F * F * D (kernel ln có depth depth input F số lẻ), stride: S, padding: P Convolutional layer áp dụng K kernel => Output layer tensor chiều có kích thước: Pooling layer Pooling layer thường dùng convolutional layer, để giảm kích thước liệu giữ thuộc tính quan trọng Kích thước liệu giảm giúp giảm việc tính tốn model Gọi pooling size kích thước K*K Input pooling layer có kích thước H*W*D, ta tách làm D ma trận kích thước H*W Với ma trận, vùng kích thước K*K ma trận ta tìm maximum average liệu viết vào ma trận kết Quy tắc stride padding áp dụng phép tính convolution ảnh Nhưng hầu hết dùng pooling layer dùng size=(2,2), stride=2, padding=0 Khi output width height liệu giảm nửa, depth giữ ngun Có loại pooling layer phổ biến là: max pooling average pooling Trong số model người ta dùng convolutional layer với stride > để giảm kích thước liệu thay cho pooling layer Fully connected layer Sau ảnh truyền qua nhiều convolutional layer pooling layer model học tương đối đặc điểm ảnh (ví dụ mắt, mũi, khung mặt,…) tensor output layer cuối cùng, kích thước H*W*D, chuyển vector kích thước (H*W*D) Sau ta dùng fully connected layer để kết hợp đặc điểm ảnh để output model 2.1.1 Cấu trúc mạng VGG16 VGG16 mạng convolutional neural network đề xuất K Simonyan and A Zisserman, University of Oxford Model sau train mạng VGG16 đạt độ xác 92.7% top-5 test liệu ImageNet gồm 14 triệu hình ảnh thuộc 1000 lớp khác Giờ áp dụng kiến thức để phân tích mạng VGG 16 Kiến trúc vgg16 Phân tích: • • • • • Convolutional layer: kích thước 3*3, padding=1, stride=1 Mặc định stride=1 padding output width height với input Pool/2 : max pooling layer với size 2*2 3*3 conv, 64: 64 số kernel áp dụng layer đấy, hay depth output layer Càng convolutional layer sau kích thước width, height giảm depth tăng Sau nhiều convolutional layer pooling layer liệu flatten cho vào fully connected layer 2.2 SDD (Single Shot Detector) Một số định nghĩa: • scale: Tỷ lệ chiều dài chiều rộng so với khung hình gốc VD: Nếu khung hình gốc có giá trị (w,h) sau scale khung hình có kích thước (sw,sh) Giá trị s thường nằm khoảng s∈(0,1] Scale kết hợp với aspect ratio để nhận khung hình có tỷ lệ cạnh w/h khác • aspect ratio: Tỷ lệ cạnh, đo tỷ lệ w/h nhằm xác định hình dạng tương đối khung hình bao chứa vật thể Chẳng hạn vật thể người thường có aspect ratio = 1:3 xe cộ nhìn từ phía trước 1:1 • bounding box: Khung hình bao chứa vật thể xác định q trình huấn luyện • ground truth box: Khung hình xác định trước từ liệu thông qua tọa độ (𝑐𝑥 , 𝑐𝑦 ,w,h) giúp xác định vật thể • offsets: Các tọa độ (𝑐𝑥 , 𝑐𝑦 ,w,h) để xác định vật thể 10 Kết trả tensor có shape (feature_width, feature_height, n_boxes, 8), chiếu cuối = tương ứng với offsets default bounding box variances đại diện cho scales default bounding box CHƯƠNG 2: TÌM KIẾM DỮ LIỆU VÀ TRIỂN KHAI MƠ HÌNH Tìm kiếm xử lý liệu 1.1 Tìm kiếm Bài tồn nhận diện biển số xe cần nhiều ảnh gồm loại phương tiện có chứa biển số Đây mơ hình xác định đối tượng nên lượng liệu tương đối nhiều từ nhiều loại xe khác nhằm có tính tổng qt tính xác với tất cảc loại ảnh Nguồn liệu tìm kiếm từ Google tự chụp gần 3000 ảnh bao gồm tất cácloại ảnh phương tiện 1.2 Xử lý liệu SSD cần đầu vào ảnh ground truth boxes ám vị trí bounding box vật thể suốt trình huấn luyện Do cần xử lý ảnh cách xác định vị trí điểm xung quang đối tượng ảnh Chúng em sử dụng labelImg để xác định đối tượng Các thông số sau xác định lưu vào file annotation.xml 15 height, width : chiều cao chiều rộng ảnh name : nhãn ghi “lpn” xmin, ymin, xmax, ymax : tọa độ điếm xung quanh biển số Sau viết hàm để chuẩn hóa thơng số theo chuẩn mơ hình để huấn luyện : xmin /= width, ymin /= height, xmax /= width, ymax /=height Xây dụng mơ hình huấn luyện 2.1 VGG16 SSD sử dụng base network VGG 16 để trích xuất feature map 38x38, 19x19 Mơ hình sử dụng nhiều Convolution layer với kích thước khác xen kẽ Maxpooling layer, 16 Relu layer nhằm trích xuất đặc trưng quan trọng để xác định đối tượng kích thước nhỏ 2.2 EXTRAS LAYER Sau ảnh lan truyền qua mạng VGG 16 trích xuất feature map 38x38, 19x19 cần xây dựng thêm lớp Convolution2D trích xuất feature map nhỏ 10x10, 5x5, 3x3, 1x1 để có thêm nhiều đặc trưng xác định đối tượng lớn 17 2.3 LOCATION LAYER VÀ CONFIDENCE LAYER Ảnh sau qua lớp VGG 16 Extras thu output source feature map 38x38, 19x19, 10x10, 5x5, 3x3, 1x1 Mỗi pixel feature map xác định box bao quanh pixel với tỉ lệ width/height khác (aspect ratio) độ tự tin (confidence ) pixel với đối tượng cần xác định Qua lớp này, với ảnh đầu vào 300x300 SSD đưa output gồm ma trận 1x8732x4 mô tả 8732 box xác định đồng thời độ tự tin xác định đối tượng box ma trận 1x8732x2 (2 gồm biển số xe/kí tự background) 2.4 DEFAULT BOX Chúng ta cần liên kết tợp hợp default bounding boxes với cell feature map Các default boxes phân bố lát gạch feature map theo thứ tự từ xuống từ trái qua phải để tính tích chập, vị trí default box tương ứng với cell mà liên kết cố định tương ứng với vùng ảnh ảnh gốc 18 Tại default bounding box feature map dự báo offsets tương ứng với tọa độ kích thước offsets hiểu tọa độ gồm tham số (𝑐𝑥 , 𝑐𝑦 ,w,h) Trong (𝑐𝑥 , 𝑐𝑦 ) giúp xác định tâm (w, h) kích thước dài rộng bounding box Thành phần thứ dự báo điểm số bounding box tương ứng với class Lưu ý ta có thêm class thứ C+1 để đánh dấu trường hợp default bounding box khơng có vật thể (hoặc rơi vào background) • Ví dụ feature map có kích thước m x n tương ứng với p channels (chẳng hạn kích thước x x 4), kernel filter kích thước x x p áp dụng tồn feature layer • Các giá trị kernel tham số mơ hình tinh chỉnh q trình training • Các kernel filter dự đoán đồng thời Xác suất nhãn kích thước offset tương ứng với tọa độ default box • Với location (hoặc cell) nằm feature map ta liên kết với k bounding boxes Các boxes có kích thước khác tỷ lệ cạnh khác • Với bounding box, tính phân phối điểm C classes c=(𝑐1 , 𝑐2 , … , 𝑐𝐶 ) offsets tương ứng với kích thước ban đầu default bounding box • Kết cuối ta thu (C+4) x mnk outputs 19 2.5 NON-MAXIMUN SUPRESSION(NMS) Sau thực object detection feed ảnh qua mạng neural, thu nhiều proposals (như hình dưới) Ở trạng thái này, có nhiều proposals boding box cho object nhất, điều dẫn tới việc dư thừa Chúng ta sử dụng thuật toán Non-maximum suppression (NMS) để giải 20 toán 2.6 LOSS FUNCTION Việc xây dựng Loss Function cho SSD tương đối phức tạp Trong phạm vi báo cáo, em đưa hàm mà không vào xây dựng chi tiết 21 Hàm Loss Funtion nhận đầu vào output ảnh lan truyền qua mạng SSD, kết lan truyền qua mạng predicted box (𝑐𝑥 , 𝑐𝑦 , w, h) độ tự tin (confidence) đối tượng cụ thể danh sách 8732 default box Hàm Loss Function tính tốn sai lệch so 22 với ground truth box đối tượng cross-entropy so với nhãn đối tượng C classes 2.7 HUẤN LUYỆN MƠ HÌNH Sau tìm kiểm, xử lý chuẩn hóa liệu, xây dựng lớp cần thiết để trích xuất feature map, layer để dự đoán độ tự tin pixel với đối tương, hàm mát dùng Colab để huấn luyện mơ hình tách biển số khỏi ảnh Chúng ta thêm xử lý chuẩn hóa liệu biển số sau tách thành box kí tự (em trình bày mục sau) Và huấn luyện mơ hình tách kí tự Colab Cuối cần huấn luyện mơ hình để phân lớp ký tự theo nhãn chúng CHƯƠNG 3: KẾT QUẢ CỦA TỪNG BƯỚC Tách biển số Ảnh đầu vào sau qua xử lý (chuyển kích thước 300x300) đưa qua mạng SSD với trọng số w huấn luyện layer Kết bước thu hình ảnh biển số xe 23 Tách kí tự Dựa vào mơ hình tách tất biển số xe có tập liệu ban đầu làm liệu tương tự xử lý liệu bước Đưa tập liệu bao gồm ảnh biển số xe vị trí kí tự chuẩn hóa huấn luyện mơ hình thứ : mơ hình tách kí tự 24 Kết thu sau bước : kí tự biển số xe tách Nhận diện kí tự: Sử dụng mơ hình thứ để tách tồn kí tự ảnh biển số tập liệu thứ chia chúng vào folder để thực bước : phân lớp ký tự (0-9, A-Z) Các folder ảnh ký tự tách từ biển 25 Ví dụ folder Xử lý diệu làm layer mơ hình thứ 3: Classification Huấn luyện mơ hìnhh Colab Kết bước : Các kí tự đưa qua mạng nhận diện 26 A Tổng hợp kết Kết hợp kết bước xếp lại vị trí kí tự hiển thị kết CHƯƠNG 4: HẠN CHẾ VÀ HƯỜNG PHÁT TRIỂN Hạn chế Dữ liệu làm thủ công chia cho thành viên nên việc vẽ box lệch vẽ sai dẫn đến sai lệch việc huấn luyện Mơ hình cho kết khả quan tương đối xác khơng thể đưa vào ứng dụng thực tế tốc độ xử lý ảnh cao : trung bình 0.15s cho ảnh không phù hợp với video (các frame ảnh đọc liên tục) Mơ hình dự đốn tốt ảnh có biển số to, rõ ràng khơng dự đốn thật xác ảnh có biển số mờ nhỏ, dẫn đến việc tách nhận diện kí tự gặp khó khăn Tập liệu mơ hình dự đốn kí tự khơng tốt cân liệu Do nguồn liệu lấy trực tiếp mơ hình thứ nên lượng liệu chữ số không đồng dẫn đến nhận diện kí tự nhầm lẫn : ➔ Z, ➔ 7, 2➔L, ➔ D,… 27 Nhận dạng sai thành L Nhận diện sai biển Hướng phát triển Sử dụng mơ hình khác có độ xác cao nhanh : Yolov4, Faster R-CNN,… Làm liệu chuẩn : vẽ box chuẩn, dùng model train để tự vẽ liệu, cân liệu kí tự,… 28 DANH MỤC TÀI LIỆU THAM KHẢO [1] Ebook Machine learning tác giả Vũ Hữu Tiệp [2] Trang Deep Learning bản: https://nttuan8.com/ [3] Blog Khoa học liệu: https://phamdinhkhanh.github.io [4] Paper gốc SSD: https://arxiv.org/abs/1512.02325 [4] Xây dựng mơ hình SSD : https://www.youtube.com/watch?v=wLbUbDZelc&list=PLVnyU2MngPdbMX8NmJ5VFwD_g6Al4fH1m 29 ... Vision ngày hoàn thiện đạt tới độ xác cao, trí vượt trội so với khả quan sát người nguồn liệu xác xử lý trọn vẹn Một vài thuật toán đáp ứng việc xử lý nhanh áp dụng cho real-time hệ thống camera... Anh để ứng phó với chủ nghĩa khủng bố Đến năm 1996, công nghệ ALPR hồn thiện cổng phía Tây Vương quốc Anh để đọc tất biển đăng ký xe từ Ireland Công nghệ ALPR tiếp tục nghiên cứu phát triển Anh... ảnh lan truyền qua mạng SSD, kết lan truyền qua mạng predicted box (