NHẬN DẠNG ĐỐI TƯỢNG TRÊN MATLAB SỬ DỤNG DEEPLEARING

by Thành Lê

Thời gian gần đây thuật ngữ Deep Learning đang được nhiều người nhắc đến, rất nhiều cá nhân, doanh nghiệp đang đầu tư trong lĩnh vực này, vậy thì nó là gì và tại sao gần đây nó lại “HOT” như vậy?

Deep Learning hay còn gọi Convolution Neural Network  là một phiên bản cải tiến của Neural Network, trong phạm vi bài viết này mình sẽ không mô tả chi tiết mô hình toán của chúng mà tập trung phân tích sự khác biệt và cách hoạt động của CNN. Mình sẽ trả lời các câu hỏi, tại sao nó lại ra đời? Nó được ứng dụng như thế nào trong công việc, cuộc sống, nghiên cứu….?

 

MẠNG NEURAL LÀ GÌ?

  • Hãy hình dung bn có đưc mt công thc:  

fx,y=a.x+y*b+c

Trong đó fx,y là outout, x,y là các input, và a,b và c là các hằng số đã biết trước. Chỉ cần đưa input vào công thức trên là bạn có ngay kết quả output là gì rồi phải không nào? Quá đơn giản, khó hơn tí nào!!!

  • May nhờ có ông Newton mà chúng ta biết được hầu hết các chuyển động trên trái đất này đều tuân theo cái quy luật 

F=m.a

Theo đó thì nếu ta biết được khối lượng của vật  và ngoại lực tác dụng lên vật thì ta biết ngay vật sẽ di chuyển với gia tốc bao nhiêu. Cũng quá đơn giản phải không nào, khó hơn chút xíu nhé!!

 

  • Đặc điêm chung của 2 trường hợp trên là bạn đã biết được mô hình toán của nó, vậy thì với bât kỳ input nào bạn cũng có thể dễ dàng  tìm được output. Thử tìm mô hình toán cho trường hợp sau đây nhé!

    • Tỷ lệ số bạn nam và bạn nữ trong một lớp như thế nào thì sẽ có kết quả học tập tốt nhất?

    • Một chiếc xa máy đang chạy, với input là góc kéo của tay ga, bạn hãy cho biết tốc độ của xe là bao nhiêu?

    • Một cái đèn điện dây đốt , với điện áp cấp vào thay đổi, bản hãy cho biết độ sáng và độ nóng của bóng đèn là bao nhiêu?

  • Đến đoạn này thì mệt rồi, làm sao để tìm ra được mô hình toán của chiếc xe máy bây giờ, biết bao nhiêu là thứ: ma sát của bánh xe, ma sát của dây côn, lực cản của gió thay đổi. độ rơ bánh xa, lực đẩy piton vân vân và vân vân. Nếu bỏ thời gian ra để đầu tư nghiên cứu thì cũng có thể tìm được. Vậy thì có cách nào đơn giản hơn không? 

  • Có đấy các bạn, vậy tại sao mình không đo trực tiếp input, rồi đo output, từ đó tìm ra mối liên hệ giữa input và output? Hãy xem lại công thức này

fx,y=a.x+y*b+c

  • Nếu có 3 bộ fx,y và 3 bộ x,y thì ta có thể tìm được ngay a,b và c rồi, đây là trường hợp đơn giản vì bạn sẽ có hệ 3phương trình và 3 ẩn, có thể dễ dàng giải được.

  • WOW, bạn vừa mới biết được 1 Noron rồi đấy, thật kì diệu phải không nào? – What?, nó troll mình à, nãy giờ có thấy neural chỗ nào đâu!

Có đấy bạn ạ, cái này  fx,y=a.x+y*b+c, nó là 1 noron rồi đấy, để mình vẽ ra cho nó giống neuron nhé.

 

  • Đấy nó đấy,nó hoạt động giống như một neural của não bộ con người nên ta gọi nó là neural nhân tạo. các số a,b được gọi là trọng số, trọng số nào càng lớn thì có tác động càng lớn đến đầu ra.

  • Khi một em bé được sinh ra, các neural thần kinh của trẻ có các trọng số ngẫu nhiên, ví dụ khi nhìn một con gà và một con chó, đầu ra noron của trẻ sẽ là gì đó mà không ai biết, do đó trẻ cần được dạy (train). Khi trẻ nhìn vào con chó, được dạy đó là con chó thì bộ não sẽ thay đổi trọng số của neural để có được đầu ra là con chó, khi này trẻ đã được học con chó, và neural đó đã được huấn luyện.

  • Đa số các các neural của trẻ đều chưa được huấn luyện nên trẻ học rất nhanh và nhớ rất lâu. Điều gì sẽ xảy ra nếu tất cả các neural đều đã được huấn luyện? – Khi đó không còn neural mới để học thêm cái mới, để học cái mới thì neural cũ sẽ phải thay đổi trọng số. Đó là lý do người trưởng thành học lâu hơn và dễ quên hơn. Cũng an ủi phần nào cho những ai hay quên vì bộ não họ đã chứa đầy kiến thức.

  • Tại sao lại có thiên tài, người thường, người rất thông minh người thì không? Trước giờ ông bà có câu “Cần cù bù thông minh” – Nay đã biết qua về Neural thì có thể phản biện rồi nhé các bạn, người thông minh hay thiên tài có lẽ số Neural của họ sẽ rất nhiều. Qua đây các bạn cũng nên tìm hiểu cách thức ăn uống, ngủ nghỉ, học tập để nuôi dưỡng các neural của mình nhé.

 

  • Thôi quay lại vấn đề chính thôi nhé! Trên đây là cấu tạo của một neural , trên thực tế các neural này sẽ được liên kết với nhau, đầu ra của neural này sẽ là đầu vào của neural khác để tạo ra một mạng các nơ tron, một neural có thể có nhiều đầu vào, như hình bên dưới

 

Image result for neural nhan tao

  • Vậy điều bạn cần làm là cho một tập dữ liệu input và output đã biết trước, và cần   tìm các trọng số sao cho ứng với input ta tìm được xấp xỉ output nhất. Mình dung từ xấp xỉ vì thực tế không thể nào tìm được bộ trọng số có thể thõa mã hết tất cả.

MẠNG CNN LÀ GÌ?

 

  • Với mạng Neural, chức năng chính của nó vẫn là classify – phân lớp thôi, cái này là thuật ngữ chuyên môn, đại ý  nó là với một input đưa vào thì cho ra output gì thôi.

  • Với chức năng chính là phân lớp, do đó input đưa vào phải ngắn gọn và mang ý nghĩa khác biệt nhất, nghĩa là input chưa phải là đầu vào thô, mà phải qua một bước xử lý để có dữ liệu tốt nhất. Ví dụ trong việc nhận dạng khuôn mặt so với cái khác như con vật, đồ vật … thì ta phải lấy ra những đặc điểm riêng mà khuôn mặt có được như: màu da, đặc điểm góc cạnh, vị trí mủi…. Và công việc này đỏi hòi người phải có chuyên môn, và phải biết trước thứ mà mình muốn nhận dạng là gì để có thể lựa chọn đặc trưng cụ thể. Vậy có cách nào khác để input vào là một tấm ảnh và có ngay output là tấm ảnh đó đang chứa gì không?

 

  • Vì yếu t đó mà CNN ra đi, gia lp input và lp output có rt nhiu lp, và mi lp có th đi din cho mt đc trưng nào đó như màu, góc cnh…. Vì có rt nhiu lp nên quá trình train rt lâu mi có th tìm đưc b trng s thõa đưc input và output.

 

Tại sao hiện nay CNN được sử dụng nhiều?

  • Nếu bạn biết trước bạn muốn tìm gì trong tập dữ liệu thì vấn đề sẽ đơn giản hơn,  một khía cạnh khác, bạn không biết trước tập dữ liệu bạn đang có gì, nghĩa là bạn không biết mô hình của bạn là gì, và bạn muốn biết dữ liệu đó là gì!

  • Ví dụ, bạn có một tấm ảnh, hãy tưởng tượng bạn là một đứa trẻ, bạn không có định nghĩa gì về con chó, con mèo, con gà, xe máy, xe đạp, con người …. Và bạn được giao một nhiệm vụ, hãy cho biết tấm ảnh đó  chứa nội dung gì?  -Vậy bạn sẽ phải làm sao?

  • Cách giải quyết: hãy cho tôi những tấm hình riêng biệt về con gà, con vịt, nhà cửa, thiên nhiên… đây là các input, đồng thời cho tôi biết luôn tấm ảnh đó nói về nội dung gì, và đây là output của tôi. Và tôi sẽ mất một khoảng thời gian để ghi nhớ với từng input  tôi có được 1 output và không được lẫn lộn. 

  • Khi tôi đã học (được train), hãy thử thách tôi, đưa tôi một tấm ảnh mà tôi chưa từng biết, tôi sẽ dựa vào những gì mình đã biết và đưa ra đánh giá, ví dụ với tấm ảnh bên dưới

Image result for dog

  • Hãy nhìn vào con chó đốm kia nhé, hãy tưởng tượng bạn không hề có định nghĩa gì về con chó nhé, và bạn được huấn luyện rằng đây là con chó. Vậy khi bạn gặp một hình như bên dưới bạn sẽ nói nó là con gì??

Image result for bò sữa

  • Nếu là con người thì quá dễ rồi  bộ não chúng ta làm việc phức tạp hơn nhiều, ngoài dữ liệu về hình ảnh chúng ta sẽ còn dữ liệu về kinh nghiệm, kích thước 3D… và khả năng suy đoán. Nhưng nếu là máy thì nó sẽ không biết được đâu các bạn ạ,nó chỉ dựa vào dữ liệu 2D, với một CNN nếu đã được huấn luyện đây là 1 con bò thì  thì khi gặp 2 ảnh này vẫn sẽ có tỉ lệ sai. Vậy nên những bạn nào tin vào tương lại một ngày nào đó Deep Learning sẽ thông minh hơn con người thì nên cân nhắc lại nhé.

Nếu CNN không chính xác vậy thì ai và khi nào sử dụng nó?

  • Nếu bạn là người dung Facebook, thì khi bạn đăng một tấm ảnh lên, hoặc đăng một status, hoặc like một nội dung nào đó. Hệ thống của họ sẽ xử lý từng tấm ảnh, nội dung status, nội dung bạn like , họ sẽ xem tấm ảnh đó chứa gì, con người, khung cảnh, và nhiều thứ khác, từ đó họ  thể biết được các thông tin như sỡ thích của bạn, khu vực bạn sống … Và từ đó đưa các thông tin liên quan nhất đến sở thích của bạn, và làm cho bạn luôn cảm thấy Facebook thật hiểu ý bạn.

  • Tương tự với Google. Nếu bạn sử dụng Google Photo, bạn sẽ thất những tấm ảnh được gom nhóm rất thông mình, đưa ra những hoạt ảnh, video rất phù hợp với cá tính, sở thích của bạn.

DEMO PHẦN MỀM NHẬN DẠNG ĐỐI TƯỢNG SỬ DỤNG DEEP LEARNING TRÊN MATLAB

  • Đ kim chng nhng gì mình phân tích, các bn có th xem đon video dưi đây , chương trình này mình viết bng phn mm Matlab, s dng các Model CNN pre-trained ca Google. Các model đưc train trên hàng ngàn đi tưng khác nhau, do đó hu hết có th biết đưc hu hết ni dung tm nh ca bn. 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đây là cửa hàng demo nhằm mục đích thử nghiệm — các đơn hàng sẽ không có hiệu lực. Bỏ qua