Trí tuệ nhân tạo là một lĩnh vực của khoa hoc công nghệ làm cho các hệ thống điện tử, thông tin, các hệ máy nhúng xử lý thông tin và đáp ứng có khả năng giống như con người : Biết suy ng
Trang 1KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Khoa Điện -Điện Tử Độc lập - Tự do - Hạnh phúc
Bộ Môn Điện Tử Viễn Thông
Tp Hồ Chí Minh, ngày … tháng năm 2014 Phiếu Đánh Giá Đồ Án Môn Học 2 (KMT) (Hướng Điện tử, tin học: Phần cứng có giao tiếp máy tính) Họ và tên sinh viên:……….… MSSV:……… ……….
Họ và tên sinh viên:……….… MSSV:……… ……….
Nhóm:……… ……….……….………
Tên đề tài:……… ………
GVHD:……… ………
1.
STT
2 Hạng mục đánh giá 3 Th
an g điể m (tối đa)
4 Điểm đánh giá của giáo viên chấ m
5 Ghi chú
6. 7 Đánh giá của GVHD
8 (Chiếm 30%)
9 30
đ
10.
11. 12 Điểm GVHD chấm (theo thang 10) được nhân
3.
13.
14. 15 Phần cứng, phần
mềm kèm theo mô
phỏng (nếu có)
16 (Chiếm 35%)
17 35 đ
18.
19. • Mô hình mạng và phần mềm (nếu có) đi kèm
hoạt động và sinh viên hiểu tốt thì SV đạt 35đ.
• Nếu phạm vi đề tài là mô phỏng và SV thực hiện
mô phỏng tốt thì vẫn được tối đa 35đ.
• Tuỳ theo mức độ thực hiện tương ứng với số lượng SV trong 1 đề tài và lĩnh vực nghiên cứu, tính sáng tạo, tổ chấm có thể nâng phần đánh giá này lên tối đa 50đ (Thưởng SV 15đ).
Trang 3• Trường hợp khác, Tổ chấm quyết định (tùy đề tài).
28. 29 Tùy mức độ trình bày của sinh viên theo mẫu
có sẵn.
30 ĐAMH cần phải có các mục sau:
• Cơ sở lý thuyết cần thiết.
• Sơ đồ khối, phân tích, thiết kế, sơ đồ mạng (Phần cứng).
• Sơ đồ khối, phân tích, giải thuật mô phỏng, kết quả mô phỏng, nhận xét (Phần mềm).
35. 36 Sinh viên trả lời các câu hỏi của Tổ chấm
Trang 6CHƯƠNG 1 GIỚI THIỆU
1.1 Tổng quan
Lĩnh vực trí tuệ nhân tạo (AI – Artificial Intelligence) mang nghĩa rất rộng
lớn trong xã hội thời đại công nghệ ngày nay Trí tuệ nhân tạo là một lĩnh vực
của khoa hoc công nghệ làm cho các hệ thống điện tử, thông tin, các hệ máy
nhúng xử lý thông tin và đáp ứng có khả năng giống như con người : Biết suy
nghĩ và lập luận để từ đó đưa ra quyết định một vấn đề , giao tiếp ngôn ngữ hình
thức riêng do con người thiết kế , biết học và thích nghi môi trường,…
Bellman (1978) đã đưa ra khái niệm : Trí tuệ nhân tạo là tự động hóa các
hoạt động phù hợp với suy nghĩ con người, giống như cách giải quyết của con
người chẳng hạn các hoạt động quyết định , giải toán,…
Winston (1992) đã bổ sung : Trí tuệ nhân tạo là lĩnh vực nghiên cứu các
tính toán để máy có thể nhận thức, lập luận và tác động , xử lý các thông tin môi
trường xung quanh
Nắm bắt được vấn đề công nghệ ngày nay ,tìm hiểu về các công nghệphát triển của các nước tiên tiến trên thế giới, Nhóm thực hiện đồ án đã chọn lựa
đề tài nằm trong lĩnh vực trí tuệ nhân tạo liên quan đến thị giác máy tính (CV –
Computer Vision) Đề tài sẽ thiết kế một hệ thống camera được gắn trên hệ trục
truyền động có khả năng giám sát và bám theo một đối tượng nhất định , vận
hành độc lập và không thông qua sự điều khiển của con người dựa trên giải
thuật xử lý các đặc trưng Haar-Like
Trang 71.2 Mục đích của đề tài
Hình 1.1 Hệ camera Pan-Til An ninh
Đề tài phát triển xây dựng hệ thống camera có khả năng nhận dạng đối tượng
dựa trên phương pháp xử lý ảnh Haar-like , và điều chỉnh góc quay hệ thống bám theo
đối tượng đã biết trước.Trong đề tài này thì nhóm thực hiện chọn đối tượng được nhận
dạng là mặt người
Hệ thống gồm các phần chính là bộ phận thu nhận thông tin và bộ phận xử lý thông tin
thông qua quá trình truyền nhận dữ liệu giao tiếp máy tính giữa MCU và PC
Hình 1.2 Nhận dạng khuôn mặt
Trang 8• Độ đáp ứng camera so với tốc độ của đối tượng được tracking chưa đáp ứng
nhanh
Trang 9CHƯƠNG 2 NGHIÊN CỨU LÝ THUYẾT
2.1 Hệ thống pantilt camera
Pantil camera là hệ thống camera có thể xoay thay thế cho loại camera cố
định góc quay truyền thống.Với hệ thống pantil camera thì góc quay của camera
sẽ rộng hơn ,có thể tự do điều khiển bẳng tay hoặc auto zoom focuc vào mục
tiêu đối tượng cụ thể nào đó
Tìm hiểu về hệ thống truyền động Pan-Tilt Z của camera an ninh , được
lắp thêm động cơ có thể xoay chuyển camera theo nhiều góc độ và hướng khác
nhau Nhóm thực hiện đề tài chọn lựa giải pháp thiết kế hệ trục truyền động
gồm 2 Servo (1Servo MG946R và 1 Micro Servo SG90) 2 servo này sẽ là giải
pháp chọn lựa đáp ứng được yêu cần bài toán đặt ra về tốc độ, độ ổn định , tính
tháo lắp thuận lợi cũng như về mặt giá thành trong phạm vi đề tài đặt ra
2.2 Servo
Servo điều khiển và động cơ đều được cấp nguồn DC (thường từ 4.8 – 7.2
V)
Để quay động cơ, tín hiệu số được gới tới mạch điều khiển Tín hiệu này
khởi động động cơ, thông qua chuỗi bánh răng, nối với vôn kế Vị trí của trục vôn
kế cho biết vị trí trục ra của servo Khi vôn kế đạt được vị trí mong muốn, mạch
điều khiển sẽ tắt động cơ
Như ta dự đoán, động cơ servo được thiết kế để quay có giới hạn chứ
không phải quay liên tục như động cơ DC hay động cơ bước Mặc dù ta có thể
chỉnh động cơ servo R/C quay liên tục (sẽ trình bày sau) nhưng công dụng chính
của động cơ servo là đạt được góc quay chính xác(tùy vào loại servo mà giới hạn
góc quya sẽ khác nhau) Việc điều khiển này có thể ứng dụng để lái robot, di
chuyển các tay máy lên xuống, quay một cảm biến để quét khắp phòng…
Trang 102.3 Kit Arduino UNO R3
2.3.1 Tổng quan
Hình 2.1 ARDUINO UNO R3
Arduino UNO có thể sử dụng 3 vi điều khiển 8bit họ AVR là ATmega8,
ATmega168, ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều
khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo
nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,
Sử dụng chip AVR ATmega328 của ATmel Mạch arduino được lắp ráp từ các
linh kiện dễ tìm và hướng đến đối tượng người dùng đa dạng Đừng lo nếu bạn là dân
nghiệp dư vì arduino có một hệ thống thư viện phong phú, cộng đồng người dùng
arduino đông đảo sẵn sàng chia sẻ kiến thức và mã nguốn sẽ giúp bạn tạo nên những
dự án thiết thực
Trang 11Bảng 1.Thông số kỹ thuật của Arduino UNO R3
Trang 122.3.2 Sơ đồ chân
Hình 2.2 Sơ đồ chân Arduino UNO R3
• GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với
nhau
• 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA.
• 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA.
• Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương
của nguồn với chân này và cực âm của nguồn với chân GND
• IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở
chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ
chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
• RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với
việc chân RESET được nối với GND qua 1 điện trở 10KΩ
• 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive –
RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2
chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây
Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
• Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân
giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói
Trang 13một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến
5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
• Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức
năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với
các thiết bị khác
• LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi
chân này được người dùng sử dụng, LED sẽ sáng
Bộ nhớ của Arduino UNO R3
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
• 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai
báo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ
RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn
phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất
EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống như
một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không
phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
2.3.3 Lập trình cho Arduino IDE
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngôn
ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói Và Wiring lại là một
biến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C+
+
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát
triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình Arduino
được gọi là Arduino IDE (Intergrated Development Environment)
Trang 14Hình 2.3 Chương trình lập trình cho Arduino UNO R3
2.4 Phương pháp xử lý ảnh
2.4.1 Đặc trưng Haar-like
Mục đích của việc sử dụng các đặc trưng Haar-like là thay vì sử dụng
giá trị của những điểm ảnh thô thì việc sử dụng các đặc trưng Haar-like để
làm các giá trị đầu vào cho thuật toán máy học nhằm làm giảm số lớp đầu
vào và tăng giá trị của các lớp đầu ra nhằm làm cho việc phân loại dễ dàng
hơn Mỗi một đặc trưng Haar-like bao gồm 2 hoặc 3 khối hình màu trắng và
đen liên kết nhau
Trang 15Hình 2.4 Đặc trưng Haar-like cơ bản
Để áp dụng các đặc trưng này vào việc bài toán xác định mặt người, 4 đặc trưng
Haar-like cơ bản được mở rộng ra, và được chia làm 3 tập đặc trưng như sau:
Hình 2.5 Đặc trưng cạnh (edge features)
Hình 2.6 Đặc trưng đường (line features)
Hình 2.7 Đặc trưng xung quanh tâm (center-surround features)
Lợi ích của các đặc trưng Haar-like là nó diễn đạt được tri thức về các đối tượng
trong ảnh (bởi vì nó biểu diễn mối liên hệ giữa các bộ phận của đối tượng), điều mà
bản thân từng điểm ảnh không diễn đạt được Để tính giá trị các đặc trưng haar-like, ta
tính sự chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như
trong công thức sau:
f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel)
Trang 16Hình 2.8 Ví dụ về sử dụng đặc trưng Haar-likeHình 11 cho ta thấy cách áp dụng các đặc trưng Haar-like để nhận dạng mắt trên
khuôn mặt một người
2.4.2 Phương pháp Cascade of Boosted Classifiers
Ta thấy quá trình huấn luyện, bộ phân loại phải duyệt qua tất cả các đặc trưng
của các mẫu trong tập training Việc này tốn rất nhiều thời gian Tuy nhiên, trong các
mẫu đưa vào, không phải mẫu nào cũng thuộc loại khó nhận dạng, có những mẫu
background rất dễ nhận ra (ta gọi đây là những mẫu background đơn giản) Đối với
những mẫu này, ta chỉ cần xét một hay vài đặc trưng đơn giản là có thể nhận diện được
chứ không cần xét tất cả các đặc trưng Nhưng đối với các bộ phân loại thông thường
thì cho dù mẫu cần nhận dạng là dễ hay khó thì nó vẫn sẽ xét tất cả các đặc trưng mà
nó rút ra được trong quá trình học Do đó, chúng tốn thời gian xử lý một cách không
cần thiết
Cascade of Classifiers được xây dựng chính là nhằm rút ngắn thời gian xử lý,
giảm thiểu false alarm cho bộ phân loại Cascade of classifier gồm nhiều stage, mỗi
Trang 17h h h
hitrate = hNfalsealarms = fNInput pattern classified as a non-object
luyện bằng những mẫu negative mà stage classifier trước nó nhận dạng sai, tức là nó sẽ
tập trung học từ các mẫu background khó hơn, do đó sự kết hợp các stage classifiers
này lại sẽ giúp bộ phân loại có false alarm thấp Với cấu trúc này, những mẫu
background dễ nhận diện sẽ bị loại ngay từ những stages đầu tiên, giúp đáp ứng tốt
nhất đối với độ phức tạp gia tăng của các mẫu đưa vào, đồng thời giúp rút ngắn thời
gian xử lý
Thuật toán Cascade training:
Hình 2.9 Sơ đồ nguyên lý phương pháp cacade of classifier
Minh họa sự huấn luyện của một cascade gồm N stages Ở mỗi stage, weak
classifier tương ứng sẽ được huấn luyện sao cho độ chính xác của nó là h và false
alarm bằng f.
2.4.3 Phương pháp Adaboost
AdaBoost ( Adaptive Boost ) là một bộ phân loại mạnh phi tuyến phức dựa trên
hướng tiếp cận boosting được Freund và Schapire đưa ra vào năm 1995 Adaboost hoạt
động trên nguyên tắc kết hợp tuyến tính các weak classifier dựa trên các đặc trưng
Haar- Line để hình thành một strong classifier
Viola và Jones đã sử dụng rất thành công cascade of boosting classifiers cho bài
toán nhận dạng mặt người Với tập huấn luyện gồm 4196 hình mặt người được đưa về
ảnh grayscale kích thước 24x24 và 9500 hình background, hai ôngđã xây dựng cấu
Trang 18mẫu background (không phải mặt người) và có độ chính xác là d = 100% Classifier ở
stage thứ 2 sử dụng 10 đặc trưng loại được 80% mẫu background với độ chính xác vẫn
là 100% Hệ thống này được so sánh với hệ thống của Rowley-Baluja-Kanade (sử dụng
mạng neural), Schneiderman-Kanade (sử dụng phương pháp thống kê), và cho thấy tỉ
lệ nhận dạng là ngang nhau, trong khi hệ thống của Viola và Jones chạy nhanh hơn đến
15 lần so với hệ thống của Rowley-Baluja-Kanade và nhanh hơn 600 lần hệ thống của
Schneiderman-Kanade
AdaBoost (Adaptive Boost) được Freund và Schapire đề xuất trong những năm
1995 là một bộ phân loại mạnh phi tuyến Adaboost hoạt động trên nguyên tắc kết hợp
tuyến tính các phân lớp yếu (weak classifier) Nghiên cứu của Viola và
Jones [16] xây dựng Adaboost dựa trên dữ liệu đầu vào là các đặc trưng Haar- Like để
hình thành một phân lớp mạnh hơn (strong classifier) theo nguyên tắc của boosting
[19]: “tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu được
nhận dạng đúng bởi phân lớp yếu (weak classifier) vừa xây dựng” Ý tưởng chính của
Boosting là thực hiện lặp lại nhiều lần quá trình học của bộ phân lớp yếu, nghĩa là tập
trung học lại các phần tửbịphân lớp sai Tại mỗi giai đoạn (stages) của Cascades of
Boosted Classifiers được huấn luyện là một Adaboost
Để có thể kết hợp các bộ phân loại yếu, adaboost sử dụng một trọng số (weight)
để đánh dấu các mẫu khó nhận dạng Trong quá trình huấn luyện, cứ mỗi weak
classifier được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho
việc xây dựng weak classifier tiếp theo: tăng trọng số của các mẫu bị nhận dạng sai và
giảm trọng số của các mẫu được nhận dạng đúng bởi weak classifier vừa xây dựng
Bằng cách này, các weak classifier sau có thể tập trung vào các mẫu mà các weak
classifier trước đó chưa thực hiện tốt Sau cùng các weak classifier sẽ được kết hợp tùy
theo mức độ ‘tốt’ của chúng để tạo nên một strong classifier
Các weak classifiers hk(x) là các bộ phân loại yếu, được biểu diễn như sau:
Trang 19pk: hệ số quyết định chiều của bất phương trình
Công thức trên có thể diễn giải như sau: Nếu giá trị đặc trưng của mẫu cho bởi hàm
đánh giá của bộ phân loại vượt qua một ngưỡng cho trước thì mẫu đấy là khuôn mặt
( gọi là object : đối tượng cần nhận dạng ), ngược lại thì mẫu là background ( không
phải là đối tượng )
Lý do mà cấu trúc cascade đạt tốc độ nhận dạng nhanh chính là nhờ nó sớm loại bỏ
được các mẫu background đơn giản (thường có số lượng lớn hơn nhiều so với các mẫu
chứa object – các mẫu chưa khuôn mặt cần tiến hành nhận dạng) Bên cạnh đó, hệ
thống của Viola và Jones cũng đạt được độ chính xác khá cao nhờ vào thuật toán
cascade training, các bộ nhận dạng được huấn luyện bằng AdaBoost với đặc trưng
Haar-like mô tả tốt thông tin đối tượng, cùng với cách Integral Image tính nhanh các
đặc trưng, không làm giảm tốc độ nhận dạng của hệ thống Như vậy, mô hình Cascade
of Boosted Classifiers thật sự là một cách tiếp cận tốt cả về tốc độ lẫn khả năng nhận
dạng, rất phù hợp với bài nhận dạng mặt người
Trang 20Bắt đầu huấn luyện
Xác định các đặc trưng trong từng mẫu, xây dựng các bộ phân loại yếu tương ứng Đặc trưng haar-like
Tính toán giá trị lỗi cho mỗi đặc trưng (false alarm)
Đúng
Hình 2.10 Lưu đồ giải thuật cách tạo ra bộ phân loại bằng phương pháp cascade boost
of classifier
Trang 21CHƯƠNG 3 TÍNH TOÀN THIẾT KẾ