TỔNG QUAN
TÌNH HÌNH NGHIÊN CỨU
Công nghệ Deep Learning đang phát triển mạnh mẽ và được áp dụng rộng rãi trong các thiết bị hiện đại như ô tô, robot, cũng như các ứng dụng Internet như YouTube, Facebook và Google Sự tích hợp này không chỉ mang lại nhiều tiện ích cho người dùng mà còn hỗ trợ hiệu quả cho các nhà quản trị.
Công ty FPT đang tiên phong trong việc nghiên cứu và phát triển công nghệ xe tự lái tại Việt Nam, đóng góp vào sự phát triển mạnh mẽ của Deep Learning với những ứng dụng thực tế đột phá.
Nhận thức được vai trò quan trọng của công nghệ Deep Learning, nhóm đã quyết định nghiên cứu sâu về lĩnh vực này Để bắt đầu, nhóm lựa chọn tìm hiểu về mạng neural tích chập, hay còn gọi là Convolutional Neural Network (CNN).
MỤC TIÊU NGHIÊN CỨU
Ngôn ngữ lập trình Python
Áp dụng mạng CNN vào nhận dạng hình ảnh
Hệ thống băng chuyền ứng dụng nhận dạng ảnh
Điều khiển động cơ DC giảm tốc và servo với python.
GIỚI HẠN ĐỀ TÀI
Trong thời gian hạn chế để hoàn thành đồ án, nhóm nghiên cứu kiến thức mới về mạng CNN cho bài toán gán nhãn Đề tài của nhóm tập trung vào việc phân loại hai đối tượng dựa trên kích thước.
Nhóm nghiên cứu về kit Raspberry Pi đã khám phá một số tính năng quan trọng, bao gồm khả năng điều khiển động cơ thông qua các chân GPIO, quản lý camera Pi để thu thập hình ảnh, và xử lý hình ảnh một cách hiệu quả.
Sản phẩm hoàn thành chỉ dừng ở mức độ mô hình đơn giản.
1.4 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Nghiên cứu một số hàm trong thư viện Tensorflow.
Giao tiếp với các chân GPIO Raspberry.
Nghiên cứu và sử dụng ngôn ngữ lập trình Python trên Raspberry.
Với yêu cầu đề ra và xác định hướng giải quyết, nhóm nghiên cứu xây dựng luận văn gồm các nội dung chính như sau:
Trình bày về tình hình nghiên cứu hiện nay từ đó đưa ra được mục tiêu đối tượng, phạm vi nghiên cứu mà nhóm hướng tới.
Chương 2: Cơ Sở Lý Thuyết
Tìm hiểu về mạng CNN, thư viện tensorflow, giới thiệu Raspberry Pi và các thiết bị dùng trong hệ thống.
Chương 3: Thiết kế hệ thống Đặt vấn đề về thiết kế phần cứng và phần mềm, sơ đồ nguyên lí, sơ đồ khối, chức năng của từng khối.
Chương 4: Kết quả và thực nghiệm
Chương này sẽ trình bày kết quả mô hình và thực nghiệm nhằm kiểm chứng độ chính xác cũng như độ ổn định của hệ thống.
Chương 5: Kết luận và hướng phát triển
Chương này tổng kết những thành tựu đạt được và định hướng phát triển cho đề tài Dựa trên kết quả thực hiện, nhóm đã chỉ ra các vấn đề đã hoàn thành cũng như những vấn đề chưa hoàn thành Ngoài ra, chương cũng nêu rõ những hạn chế của đề tài và hướng phát triển trong tương lai.
NỘI DUNG ĐỒ ÁN
Với yêu cầu đề ra và xác định hướng giải quyết, nhóm nghiên cứu xây dựng luận văn gồm các nội dung chính như sau:
Trình bày về tình hình nghiên cứu hiện nay từ đó đưa ra được mục tiêu đối tượng, phạm vi nghiên cứu mà nhóm hướng tới.
Chương 2: Cơ Sở Lý Thuyết
Tìm hiểu về mạng CNN, thư viện tensorflow, giới thiệu Raspberry Pi và các thiết bị dùng trong hệ thống.
Chương 3: Thiết kế hệ thống Đặt vấn đề về thiết kế phần cứng và phần mềm, sơ đồ nguyên lí, sơ đồ khối, chức năng của từng khối.
Chương 4: Kết quả và thực nghiệm
Chương này sẽ trình bày kết quả của mô hình và thực hiện các thí nghiệm nhằm kiểm tra độ chính xác và tính ổn định của hệ thống.
Chương 5: Kết luận và hướng phát triển
Chương này tổng kết những thành tựu mà nhóm đã đạt được và định hướng phát triển cho đề tài Dựa trên kết quả thực hiện, nhóm nêu rõ các vấn đề đã hoàn thành và những vấn đề còn tồn đọng Bên cạnh đó, chương cũng chỉ ra những hạn chế của đề tài và đề xuất hướng phát triển trong tương lai.
CƠ SỞ LÝ THUYẾT
Ứng dụng của mô hình
Mạng neural tích chập (CNN) được sử dụng rộng rãi trong các bài toán nhận dạng, bao gồm nhận dạng vật thể trong hình ảnh và nhận dạng chữ viết tay Công nghệ này giúp cải thiện độ chính xác và hiệu quả trong việc chuyển đổi chữ viết tay thành văn bản số.
Trong thực tế, chúng ta có thể giải quyết các bài toán cụ thể với nhu cầu mở rộng không lớn và yêu cầu linh hoạt không cao Đối với những bài toán này, mạng neural tích chập vẫn là một mô hình hiệu quả.
TENSORFLOW
TensorFlow là thư viện mã nguồn mở cho máy học, hỗ trợ nhiều tác vụ nhận thức và hiểu ngôn ngữ Hiện nay, nó được 50 đội ngũ khác nhau sử dụng cho cả nghiên cứu và sản xuất trong các sản phẩm thương mại của Google, như nhận dạng giọng nói, Gmail, Google Photos, và tìm kiếm Ban đầu, TensorFlow được phát triển bởi đội Google Brain nhằm phục vụ cho nghiên cứu và sản xuất của Google, và đã được phát hành theo giấy phép mã nguồn mở Apache 2.0 vào ngày 9/11/2015.
Hình 2.4: Trang chủ “Tensorflow.org”.
2.2.2 Các khái niệm cơ bản trong Tensorflow
Node trong TensorFlow đại diện cho các điểm giao cắt trong đồ thị, nơi dữ liệu được xử lý Việc hiểu rõ về Node là rất quan trọng vì chúng giúp mô tả dòng chảy của dữ liệu một cách trực quan và hiệu quả trong quá trình xây dựng mô hình học máy.
Tensor là cấu trúc dữ liệu chủ đạo trong TensorFlow, đại diện cho mọi loại dữ liệu Tất cả dữ liệu đều được biểu diễn dưới dạng tensor, và quá trình trao đổi dữ liệu trong xử lý chỉ diễn ra thông qua tensor.
Hiểu đơn giản thì tensor là mảng n chiều hay list cộng thêm 1 vài thứ thú vị khác.
Có 3 thuộc tính là Rank, Shape, Type.
Rank: Rank là bậc hay độ sâu của một Tensor Ví dụ:
Tensor = [1] sẽ có rank là 1.
Tensor = [[[1,1,1],[178,62,74]]] sẽ có rank bằng 3.
Tensor = [[1,1,1],[178,62,74]] sẽ có rank bằng 2.
Cách nhanh nhất để xác định hạng của một Tensor là đếm số lần mở ngoặc vuông cho đến giá trị khác ngoặc vuông đầu tiên Việc xác định hạng này rất quan trọng vì nó giúp phân loại dữ liệu của Tensor Khi ở những hạng đặc biệt cụ thể, Tensor sẽ có những tên gọi riêng.
Scalar: Khi Tensor có rank bằng 0, Tensor đại diện cho một số hoặc một chuỗi cụ thể Ví dụ: scalar = 123.
Vector: Vector là một Tensor rank 1 Trong python thì Vector là một list hay mảng một chiều chứa các số Ví dụ: list = [123,345].
Matrix: Đây là một Tensor rank 2 hay mảng hai chiều theo khái niệm của Python Ví dụ: matrix = [[1,2],[2,1]].
N-Tensor: Khi rank của Tensor tăng lên lớn hơn 2, chúng được gọi chung là N-Tensor.
Shape: Shape là một tuple có số chiều bằng với rank của Tensor tương ứng dùng để mô tả lại cấu trúc của Tensor đó Ví dụ:
Based on the structure of Shape, it is evident that a fundamental constraint of a Tensor is that the dimensions of the elements within the Tensor at each level must be uniform.
Dtype là kiểu dữ liệu của các phần tử trong Tensor, và mỗi Tensor chỉ có một thuộc tính DType duy nhất Điều này có nghĩa là tất cả các phần tử trong Tensor hiện tại đều có cùng một kiểu DType.
Dưới đây là một số kiểu dữ liệu của một Tensor.
Table 2.1 presents various data types used in Tensor, including tf.float16, tf.float32, tf.float64, tf.bfloat16, tf.complex64, tf.complex128, tf.int8, tf.uint8, tf.uint16, tf.uint32, tf.uint64, tf.int16, tf.int32, tf.int64, and tf.boolean.
RASPBERRY
Hình 2.5: Máy tính Raspberry Pi.
Raspberry Pi, ra mắt vào tháng 2 năm 2012, là một chiếc máy tính nhỏ gọn chạy hệ điều hành Linux, được phát triển từ ý tưởng của tiến sĩ Eben Upton tại đại học Cambridge Ông mong muốn tạo ra một chiếc máy tính giá rẻ để học sinh có thể dễ dàng tiếp cận và khám phá thế giới tin học Ban đầu, mục tiêu khiêm tốn của ông là bán được 1000 bo mạch cho các trường học, nhưng sự ưa chuộng và thành công vượt bậc của Raspberry Pi đã vượt xa mong đợi.
Raspberry Pi là một lựa chọn tuyệt vời với mức giá chỉ 25$, cho phép người dùng thực hiện nhiều ứng dụng hàng ngày như lướt web, học lập trình, xem phim HD và thậm chí là những ý tưởng sáng tạo như điều khiển robot hay xây dựng nhà thông minh.
Raspberry Pi chạy hệ điều hành Linux: 99% những thứ làm được trên máy tính
Windows đều có thể thực hiện được trên Linux và quan trọng là tất cả đều miễn phí.
Raspberry Pi được trang bị ngõ GPIO, cho phép kết nối và điều khiển các thiết bị thực tế như đèn, động cơ và GPS, trở thành bộ điều khiển trung tâm cho nhiều ứng dụng nhà thông minh Ngoài ra, người dùng có thể biến Raspberry Pi thành một chiếc máy tính nhỏ gọn và tiện lợi.
Cộng đồng Raspberry Pi đang phát triển mạnh mẽ trên toàn cầu, với hầu hết các thắc mắc của người dùng được giải đáp nhanh chóng Người dùng không chỉ tìm thấy hàng ngàn dự án đã được thực hiện mà còn khám phá vô số ý tưởng độc đáo, tạo điều kiện thuận lợi cho việc học hỏi và sáng tạo.
Với những ưu điểm nổi bật, Raspberry Pi đã trở thành thiết bị yêu thích của nhiều người đam mê điện tử và lập trình, vượt ra khỏi môi trường học đường Sự thành công của Raspberry Pi đã mở ra một bước tiến mới trong lĩnh vực tin học, giúp đưa máy tính và cảm hứng lập trình đến gần với mọi người hơn bao giờ hết.
Phiên bản hiện tại trên thị trường là Loại B, thay thế cho Loại A, với sự khác biệt là Loại A chỉ có một cổng USB và không có cổng Ethernet Trong khi đó, Loại B được trang bị hai cổng USB và cổng Ethernet RJ45 Để kết nối mạng trên Raspberry Pi Loại A, người dùng cần sử dụng thêm USB Wi-Fi.
Raspberry Pi loại B nổi bật với nhiều cổng USB, kết nối Ethernet trực tiếp và ưu điểm về RAM cùng công suất vượt trội so với loại A, do đó được ưa chuộng hơn Phiên bản v1 của Raspberry Pi loại B được sản xuất tại Trung Quốc, trong khi phiên bản v2 được sản xuất tại Anh.
Bảng 2.2: So sánh Raspberry Model A và B.
Bộ nhớ (SDRAM) Cổng USB 2.0
Công suấtNguồn cấpKích thước
2.3.3 Môi trường lập trình trên Raspberry Pi
Dựa trên nền tảng Linux, có nhiều bản phân phối như Debian, Ubuntu và Fedora Trong số đó, Debian đã được tối ưu hóa cho Raspberry Pi và được gọi là Raspbian Raspbian là hệ điều hành chính thức được phát triển dành riêng cho Raspberry Pi.
Linux hoạt động chủ yếu trên hai môi trường: môi trường Desktop tương tự như Windows và môi trường Terminal sử dụng dòng lệnh giống như DOS Trước đây, Linux chủ yếu chỉ có trên Terminal, gây khó khăn cho người dùng quen thuộc với Windows Tuy nhiên, gần đây, Linux đã phát triển giao diện đồ họa hấp dẫn không thua kém gì Windows 8 hay MAC Trên Raspberry Pi, giao diện LXDE (Light X11 Desktop Environment) được cài đặt sẵn, cung cấp một môi trường đồ họa nhẹ nhàng, đủ để sử dụng mà không tiêu tốn nhiều tài nguyên.
Python được cài đặt sẵn trên Raspberry Pi và là một ngôn ngữ dễ học, mạnh mẽ với cấu trúc dữ liệu cấp cao hiệu quả Cú pháp tao nhã và kiểu dữ liệu động của Python, cùng với bản chất thông dịch, khiến nó trở thành ngôn ngữ lý tưởng cho việc viết kịch bản và phát triển ứng dụng nhanh chóng trong nhiều lĩnh vực và trên hầu hết mọi hệ thống.
Trình thông dịch Python cho phép mở rộng dễ dàng thông qua các chức năng và kiểu dữ liệu được viết bằng C hoặc C++, cũng như các ngôn ngữ có khả năng gọi từ C Ngoài ra, Python còn là lựa chọn lý tưởng để làm ngôn ngữ mở rộng cho các ứng dụng mà người dùng có thể tùy chỉnh.
THIẾT BỊ PHẦN CỨNG
Camera Raspberry Pi được trang bị cảm biến 5 Megapixel với khả năng nhạy sáng vượt trội, cho phép chụp ảnh chất lượng cao trong nhiều điều kiện ánh sáng khác nhau, cả trong nhà lẫn ngoài trời Đặc biệt, camera được thiết kế gắn chắc chắn, giúp bạn tiết kiệm cổng USB cho các thiết bị khác.
Bạn có thể thiết lập một hệ thống nhận diện vật thể bằng cách sử dụng camera và Raspberry Pi (RPi) Hệ thống này hoạt động bằng cách kết hợp hình ảnh từ camera với chương trình xử lý hình ảnh, từ đó đưa ra lệnh điều khiển chính xác.
Giới thiệu: Động cơ điện một chiều là máy điện chuyển đổi năng lượng điện một chiều sang năng lượng cơ.
Máy phát điện là thiết bị chuyển đổi năng lượng cơ học thành năng lượng điện Động cơ điện một chiều bao gồm hai loại chính: động cơ không chổi than và động cơ có chổi than.
Gồm có 3 phần chính stator (phần cảm), rotor (phần ứng), và phần chỉnh lưu (chổi than và cổ góp):
Stator của động cơ điện 1 chiều thường là 1 hay nhiều cặp nam châm vĩnh cửu, hay nam châm điện.
Rotor có các cuộn dây quấn và được nối với nguồn điện một chiều.
Bộ phận chỉnh lưu có nhiệm vụ chuyển đổi chiều dòng điện trong khi rotor quay liên tục Thông thường, bộ phận này bao gồm một cổ góp và chổi than tiếp xúc với cổ góp.
2.4.3 Module điều khiển động cơ L298N
Module điều khiển motor L298N có sẵn ốc gắn sử dụng IC điều khiển L298N có thể điều khiển 2 động cơ một chiều hoặc 1 động cơ bước 4 pha.
Được thiết kế chắc chắn, có sẵn chỗ bắt ốc vào mô hình.
IC L298N được trang bị tản nhiệt chống nóng, cho phép điều khiển dòng đỉnh lên đến 2A Ngoài ra, IC còn được kết nối với các đi ốt trên board, giúp bảo vệ vi xử lý khỏi các dòng điện cảm ứng phát sinh khi khởi động hoặc tắt động cơ.
Driver: L298N tích hợp hai mạch cầu H.
Dòng tối đa cho mỗi cầu H là:2A.
Điện áp của tín hiệu điều khiển: +5 V ~ +7 V.
Dòng của tín hiệu điều khiển: 0 ~ 36 mA.
Công suất hao phí: 20W (khi nhiệt độ T = 75 °C).
Động cơ Servo MG996 là lựa chọn phổ biến trong thiết kế Robot và dẫn hướng xe nhờ lực kéo mạnh mẽ Với các khớp và bánh răng hoàn toàn bằng kim loại, động cơ này đảm bảo độ bền cao Ngoài ra, MG996 còn được trang bị Driver điều khiển tích hợp theo cơ chế phát xung - quay góc, mang lại sự tiện lợi trong quá trình sử dụng.
Hình 2.10: Động cơ Servo MG996.
Trên thị trường hiện có nhiều loại Động cơ RC Servo MG996 với mức giá đa dạng, trong đó có những sản phẩm chất lượng tốt, rất phù hợp cho việc chế tạo Robot.
Loại sản phẩm chất lượng cao luôn đi kèm đầy đủ bộ phụ kiện như hình tròn, sao, chữ thập và 4 cánh, trong khi loại kém chất lượng thường thiếu phụ kiện Động cơ của loại tốt có độ nặng nhất định và hoạt động hiệu quả, trong khi loại không tốt thường nhẹ và yếu.
Loại chất lượng tốt có dây dẫn cứng hơn loại chất lượng kém do xài nguyên liệu tốt hơn.
Chủng loại: Analog RC Servo.
Điện áp hoạt động: 4.8-6.6VDC.
Kích thước: 40mm x 19mm x 43mm.
Cảm biến hồng ngoại sử dụng cặp LED thu phát hồng ngoại để phát hiện vật cản trong môi trường Khi tia hồng ngoại được phát ra và gặp vật cản, nó sẽ phản xạ trở lại LED thu, khiến LED báo vật cản sáng lên Ngược lại, khi không có vật cản, LED sẽ tắt.
Cảm biến có khả năng phát hiện vật cản trong khoảng từ 2 đến 30 cm, với khả năng điều chỉnh khoảng cách này thông qua chiết áp, giúp phù hợp với từng ứng dụng cụ thể như xe dò line và xe tránh vật cản.
Khoảng cách phát hiện: 2 ~ 30 cm.
LED báo nguồn và LED báo tín hiệu ngõ ra.
Mức thấp - 0V: khi có vật cản.
Mức cao - 5V: khi không có vật cản.
Hình 2.12: Vị trí các chân và thành phần trên cảm biến hồng ngoại [8].
Bảng 2.3: Ký hiệu và chức năng các chân của cảm biến hồng ngoại.
THIẾT KẾ HỆ THỐNG
YÊU CẦU HỆ THỐNG
Phạm vi nghiên cứu của nhóm chỉ tập trung vào mô hình nhỏ nhằm mô phỏng quy trình phân loại sản phẩm Các khối được đưa ra trong phần này là những khối cần thiết để hoàn thành mục tiêu đề ra trong đồ án.
Mô hình dây chuyền được thiết kế với các khối thu thập dữ liệu từ camera, sau đó truyền về trung tâm xử lý Tại đây, khối xử lý phân tích dữ liệu để đảm bảo độ chính xác và phát lệnh điều khiển các thiết bị hoạt động Khối nguồn được tối ưu hóa nhằm đảm bảo mọi hoạt động của mô hình diễn ra ổn định.
SƠ ĐỒ KHỐI
Mô hình sơ đồ khối:
Hình 3.1: Sơ đồ khối hệ thống.
Mô hình băng chuyền hoạt động dựa trên các khối thu thập dữ liệu như camera Pi và cảm biến hồng ngoại Dữ liệu thu thập được sẽ được gửi về bộ xử lý trung tâm, từ đó điều khiển động cơ giảm tốc kéo băng tải và động cơ Servo.
Toàn bộ hệ thống được cấp nguồn để hoạt động Trên mối khối sẽ có những
SƠ ĐỒ NGUYÊN LÝ
Sơ đồ nguyên lý của toàn hệ thống:
Hình 3.2: Sơ đồ nguyên lý của toàn hệ thống.
Sơ đồ nguyên lý từng khối:
Khối cảm biến hồng ngoại kết nối với Raspberry như sau:
Khối động cơ L298N kết nối với Raspberry như sau:
Hình 3.4: Khối điều khiển động cơ DC giảm tốc.
Khối Servo kết nối với Raspberry như sau:
Hình 3.5: Khối điều khiển Servo.
THIẾT KẾ PHẦN CỨNG
Raspberry Pi 3 là một chiếc máy tính tí hon chạy hệ điều hành Linux ra mắt vào
Raspberry Pi được sử dụng làm nơi lưu trữ và quản lý dữ liệu, đồng thời đóng vai trò là khối xử lý trung tâm chính trong dự án này.
Các chân GPIO của raspberry sẽ điều khiển tốc độ quay của động cơ
Khi kết nối tín hiệu để điều khiển Servo thì chân GPIO sẽ có chức năng điều khiển như một cách tay gạt để phân loại sản phẩm.
Truyền tín hiệu xuống cho module L298 điều khiền băng chuyền chạy theo yêu cầu.
3.4.2 Giao tiếp động cơ qua L298N
Sơ đồ kết nối giữa Raspberry, L298N và động cơ như hình bên dưới.
Module L298 có khả năng điều khiển 2 động cơ DC hoặc 1 động cơ bước, với 4 lỗ ở các góc để dễ dàng cố định vị trí Module được trang bị tản nhiệt giúp IC hoạt động ổn định với dòng đỉnh lên đến 2A Ngoài ra, IC L298N còn có các diode tích hợp trên board để bảo vệ vi xử lý khỏi dòng điện cảm ứng khi khởi động hoặc tắt động cơ.
Module camera 5Mpx dành cho Raspberry Pi được kết nối qua giao tiếp CSI tốc độ cao, cho phép chụp ảnh với kích thước lên tới 2592 x.
1944 pixel và Full HD video.
Module Raspberry Pi Camera có kích thước siêu nhỏ 25mm x 20mm x 9mm và cân nặng chỉ 3g, kết nới với main Raspberry Pi bằng cáp mỏng (Ribbon).
Cùng với những ưu điểm trên thì tính năng dễ dàng lắp và cài đặt cũng được trình bày rõ như hình 3.9.
Trước khi có thể sử dụng được raspberry pi camera board, bạn cần phải thiết lập cấu hình hệ thống và kích hoạt chức năng camera trên RPi.
Đăng nhập với user pi và chạy lệnh: “sudo raspi-config”.
Sau khi kích hoạt thành công, bạn khởi động lại bằng lệnh: “sudo shutdown -r now”.
Servo sẽ hoạt động để phân loại sản phẩm bằng cách quay 90 độ và đợi sản phẩm tiếp cận Sau khi sản phẩm gần đến, Servo sẽ quay về vị trí ban đầu, giúp chuyển sản phẩm cần phân loại đến nơi chứa thích hợp.
Sơ đồ kết nối chân giữa Raspberry và Servo như hình bên dưới.
Hình 3.9: Sơ đồ kết nối chân giữa động cơ Servo MG996 với
3.4.5 Giao tiếp với cảm biến hồng ngoại
Cảm biến hồng ngoại có chức năng phát hiện có hoặc không có sản phẩm chạy trên băng chuyền.
Sơ đồ kết nối chân giữa Raspberry và cảm biến hồng ngoại như hình bên dưới.
THIẾT KẾ PHẦN MỀM
3.5.1 Cài đặt thư viện Tensorflow trên raspberry
TensorFlow là một thư viện mã nguồn mở mạnh mẽ, cho phép thực hiện các phép toán số học thông qua biểu đồ mô tả sự biến đổi của dữ liệu Thư viện này rất hữu ích trong việc giải quyết các bài toán Học có giám sát trong lĩnh vực Machine Learning.
Các bước cài đặt thư viện Tensorflow:
Đầu tiên cài đặt các gói thư viện cần cho TensorFlow:
Vào Terminal của raspberry (Raspberry phải được kết nối Internet).
Gõ lệnh: sudo apt-get update (lệnh này update các thư viện có sẵn lên các phiên bản mới nhất).
- “sudo apt-get install python-pip python-dev”.
- “sudo apt-get install python3-pip python3-dev”.
Tiếp theo, tải file cài tensorflow theo link và cài đặt:
- “wget https://github.com/samjabrahams/tensorflow-on- raspberry-pi/releases/download/v1.1.0/tensorflow- 1.1.0-cp27-none-linux_armv7l.whl”.
- “sudo pip install tensorflow-1.1.0-cp27- none-linux_armv7l.whl”.
- “wget https://github.com/samjabrahams/tensorflow- on-raspberry-pi/releases/download/v1.1.0/tensorflow-
1.1.0-cp34-cp34m-linux_armv7l.whl”.
- “sudo pip3 install tensorflow-1.1.0-cp34- cp34m-linux_armv7l.whl”.
Cuối cùng, chúng ta cần cài đặt lại thư viện Mock để tránh bị lỗi khi nhập TensorFlow:
Phần này là các biện pháp khắc phục cho sự cố có thể xảy ra khi cài đặt từ pip khi có thông báo lỗi như sau:
“tensorflow-1.1.0-cp34-cp34m-any.whl is not a supported wheel on this platform”.
Bản cài này được phát triển trên nền tảng Python 2.7 và không tương thích với pip của Python 3 Nếu bạn gặp phải thông báo lỗi, hãy thử sử dụng lệnh sau để thay thế.
“sudo pip2 install tensorflow-1.1.0-cp27-none-linux_armv7l.whl”.
Thực hiện train dữ liệu:
Thu thập dữ liệu hình ảnh bằng cách sử dụng trực tiếp Camera Pi.
Camera sẽ được cố định trên mô hình raspberry.
Các dữ liệu hình ảnh sẽ được chụp với độ phân dải là 320x240.
Các hình ảnh sản phẩm sẽ được tổ chức vào các thư mục theo tên sản phẩm, với nhiều góc chụp khác nhau Điều này nhằm đảm bảo quá trình huấn luyện sau này đạt độ chính xác cao nhất khi hệ thống hoạt động.
B2 Cần thực hiện thêm các thành phần dùng để train:
Chú ý các file python chính của chương trình phải nằm cùng folder.
Hình 3.11: Di chuyển đến thư mục “our_data” chứa dữ liệu huấn luyện.
Folder bottleneck chứa những tính toán nút cổ chai của mạng norron network.
Folder inception là model dùng để train.
Folder image chứa các sản phẩm dữ liệu cần phân loại.
File retrained_graph.pb sẽ là file hoàn chỉnh sau khi train thành công, mạng neural network đã được học để nhận các biết các hình ảnh.
File retrained_labels.txt chứa tên những sản phẩm cần được phân loại.
Di chuyển đến folder chứa dữ liệu và file train Sau đó thực hiện các lệnh.
Quá trình train dữ liệu như sau:
Hình 3.12: Thực hiện các lệnh python.
Tạo ra những label chứa trong dữ liệu train.
Quá trình trích xuất bottleneck.
Hình 3.14: Trích xuất bottleneck của những bức ảnh.
Hình 3.15: Bắt đầu quá trình huấn luyện mạng với Tensorflow.
Sau khi train hoàn thành sẽ xuất hiện 2 file như sau:
Hình 3.16: 2 Files sau khi train dữ liệu.
Việc train đã hoàn thành, trong file retrained_labels.txt sẽ có nhãn các loại sản phẩm cần train.
Hình 3.17: Các nhãn dán sau khi train dữ liệu.
3.5.2 Xây dựng chương trình nhận dạng ảnh trên Raspberry
3.5.2.1 Bài toán nhận dạng ảnh trên raspberry
Hình 3.18: Bài toán nhận dạng.
Bài toán yêu cầu xây dựng một mô hình phân lớp sử dụng thuật toán CNN để xác định loại hộp (to, nhỏ hoặc không có hộp nào) từ một tập dữ liệu ảnh trên băng chuyền Đây là một bài toán phân loại đa lớp, nhằm phân loại chính xác các loại hộp dựa trên hình ảnh đầu vào.
3.5.2.2 Các bước thực hiện của bài toán
Bài toán phân loại được phân ra làm các bước như sơ đồ bên dưới.
Dữ liệu huấn luyện được chụp từ camera pi với số lượng thu thập như sau:
Bảng 3.1: Dữ liệu huấn luyện được chụp từ camera pi.
Nhóm đã chọn lọc những hình ảnh đặc trưng cho từng loại sản phẩm, thực hiện chụp ảnh trong nhiều trường hợp, tư thế và vị trí khác nhau Các hình ảnh này được tổ chức vào các thư mục theo từng loại sản phẩm Tập dữ liệu cho quá trình huấn luyện và kiểm tra bao gồm tổng cộng 650 ảnh, trong đó 500 ảnh được sử dụng cho tập dữ liệu huấn luyện (Training set).
150 ảnh được đưa vào tập kiểm tra (Test set).
Bảng 3.2: Số lượng ảnh từng loại trong Tập huấn luyện và Tập kiểm tra.
Xây dựng mô hình phân lớp theo CNN:
Trong phạm vi của đồ án, nhóm sử dụng phương pháp học chuyển tiếp
Chuyển tiếp (Transfer Learning) là phương pháp tối ưu hóa quá trình học cho nhiệm vụ mới bằng cách áp dụng kiến thức từ nhiệm vụ liên quan đã được học trước đó Điểm đặc biệt của học chuyển tiếp là các lớp học cũ sẽ được loại bỏ và thay thế bằng các lớp mới được huấn luyện để phù hợp với bài toán hiện tại.
Một vài (hoặc một) lớp của mạng neural kết nối đầy đủ.
Chuỗi lớp xoắn trong mạng học sâu sử dụng các tính năng đã được học như dữ liệu đầu vào Những tính năng này được chuyển đến lớp kết nối đầy đủ để thực hiện phân loại Tính năng được đưa vào lớp phân loại cuối cùng thường được gọi là tính năng nút cổ chai.
Bottleneck là thuật ngữ không chính thức chỉ lớp trước lớp đầu ra cuối cùng trong quá trình phân loại Lớp cuối cùng này được huấn luyện để cung cấp giá trị đủ tốt nhằm phân biệt giữa các lớp mà hệ thống cần nhận diện.
Hình 3.20: Quá trình trích xuất Bottleneck.
Chúng ta sẽ sử dụng mô hình học sâu Inception-v3, được phát triển bởi Google và đã được đào tạo trên bộ dữ liệu ImageNet với 14 triệu hình ảnh và hơn 1000 lớp, để trích xuất các tính năng nút cổ chai từ hình ảnh Mô hình này được chọn vì hiệu suất phân loại cao và dễ dàng cài đặt.
3.5.3 Lưu đồ giải thuật trên Raspberry Pi
Lưu đồ giải thuật chương trình chính:
Chương trình con chờ vật đi qua:
Hình 3.23: Lưu đồ thuật toán chương trình con điều khiển động cơ.
KẾT QUẢ VÀ THỰC NGHIỆM
KẾT QUẢ
Mô hình băng chuyền hoàn chỉnh:
Dưới đây là một số hình ảnh sản phẩm của nhóm sau khi hoàn thành.
Bộ khung của băng chuyền được làm từ các tấm ALU.
Khung được cố định bằng các ty ren đường kính 8mm và ống nhựa
Hình 4.1: Mô hình băng chuyền tổng thể.
Con lăn được làm từ: Ống nhựa PVC, bạc đạn, ty ren thép.
Raspberry Pi, Mạch cầu H, Động cơ giảm tốc 12v DC được đặt phía bên trong băng chuyền.
Hình 4.3: Hệ thống board mạch được đặt phía dưới băng chuyền.
Camera Pi được cố định tại vị trí đầu băng chuyền Đối diện là một tấm phông trắng có nhiệm vụ làm nền cho ảnh chụp từ Camera pi.
Hình 4.4: Camera Pi thu thập hình ảnh.
Cảm biến hồng ngoại và động cơ Servo trên hệ thống băng chuyền kết nối thực tế như hình bên dưới.
Hình 4.5: Cảm biến hồng ngoại trên hệ thống.
Hình 4.6: Động cơ Servo đẩy sản phẩm phân loại ra khỏi băng chuyền.
Hình 4.7: 2 sản phẩm cần phân loại hộp to và hộp nhỏ.
THỰC NGIỆM
Đối với đối tượng phân loại là “hộp nhỏ”: Việc tính toán tỉ lệ phân loại được thực hiện như sau:
Đối tượng "hộp nhỏ" được đưa qua hệ thống phân loại 50 lần, trong đó mỗi 10 lần, nhóm sẽ thay đổi tư thế đặt của "hộp nhỏ" theo các kiểu khác nhau, với vị trí đặt phải tương đối với dữ liệu huấn luyện.
Kết quả thu được như sau:
Số lần đưa “hộp nhỏ” vào: 50 lần.
Số lần phân loại được: 44 lần.
Khi cảm biến hồng ngoại nhận diện đối tượng là "hộp nhỏ", động cơ Servo sẽ tự động thực hiện chức năng phân loại bằng cách gạt đối tượng "hộp nhỏ" ra khỏi băng chuyền.
Ngược lại, nếu đối tượng “hộp nhỏ” được nhận dạng nhưng không đi qua cảm biến hồng ngoại, động cơ Servo sẽ không thực hiện chức năng.
Tỉ lệ phân loại hộp nhỏ chính xác trung bình sau khi tính toán: 88%
Quá trình hệ thống nhận dạng “hộp nhỏ” trên băng chuyền được thể hiện ở hình dưới.
Hình 4.8: Kết quả nhận dạng hộp nhỏ.
Đối với trường hợp không có vật trên băng chuyền: Hệ thống sẽ trả về thông báo “empty” trên màn hình.
Khi hệ thống hoạt động nhưng băng chuyền không còn vật, sau 5 lần thông báo "empty", băng chuyền sẽ tự động dừng Dù vậy, camera pi vẫn tiếp tục hoạt động và khi có vật được đưa vào băng chuyền, hệ thống sẽ tự động khởi động lại.
Quá trình hệ thống nhận biết trên băng chuyền không có vật và trả về tín hiệu
“empty” được thể hiện như hình dưới.
Hình 4.9: Kết quả nhận diện khi không có vật trên băng chuyền.
Đối với trường hợp phân loại là “hộp to”: việc tính toán tỉ lệ phân loại được thực hiện như sau:
Đối tượng "hộp to" được đưa qua hệ thống phân loại tổng cộng 50 lần Mỗi 10 lần, nhóm thực hiện việc thay đổi tư thế đặt của "hộp to" theo các kiểu khác nhau, đảm bảo rằng vị trí đặt phải tương đối với dữ liệu huấn luyện.
Kết quả thu được như sau:
Số lần đưa “hộp to” vào: 50 lần.
Số lần phân loại được: 45 lần.
Tỉ lệ phân loại hộp to chính xác trung bình sau khi tính toán: 90%
Khi cảm biến hồng ngoại phát hiện đối tượng là "hộp to", nếu đối tượng này tiếp tục di chuyển qua cảm biến và được đưa ra cuối băng chuyền, quá trình nhận diện và xử lý sẽ diễn ra liên tục.
Nếu đối tượng "hộp to" được nhận diện nhưng không đi qua cảm biến hồng ngoại, hệ thống băng chuyền sẽ tiếp tục hoạt động bình thường Quá trình nhận dạng "hộp to" trên băng chuyền được minh họa trong hình dưới đây.
Hình 4.10: Kết quả nhận dạng hộp to.
Sau khi nhận dạng, kết quả nhận được đáp ứng đúng yêu cầu đề ra ban đầu:
Nhận dạng được 2 sản phẩm đưa vào theo kích thước: hộp to và hộp nhỏ.
Xác định được trường hợp trên băng chuyền không có vật.
Tỉ lệ nhận dạng chính xác có thể thay đổi theo mỗi lần vật đi qua băng chuyền nhưng phần lớn các trường hợp đều nhận dạng đúng.
Tuy nhiên, sản phẩm vẫn còn một số khuyết điểm như:
Hệ thống phần cứng chưa hoạt động tốt như vật liệu chế băng tải thô sơ.
Trục quay con lăn nối với động cơ hoạt động chưa tốt.
Code xử lý chưa được tối ưu nên có một vài trường hợp nhận dữ liệu vào còn một vài sai sót.
Hệ thống còn đơn giản, tính ứng dụng vào thực tế chưa cao.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
KẾT LUẬN
Qua đề tài, nhóm đã nghiên cứu và giải quyết được những vấn đề sau:
Nghiên cứu một số lý thuyết cơ bản về mạng CNN.
Sử dụng ngôn ngữ lập trình python có nguồn sẵn dễ dàng cho việc lập trình Raspberry.
Nhận dữ liệu hình ảnh từ băng chuyền và điều khiển hệ thống phân loại.
Xây dựng mô hình băng chuyền xử lý được vấn đề nhận diện.
Hệ thống hiện tại vẫn chưa được tối ưu, vẫn tồn tại nhiều hạn chế như động cơ Servo hoạt động chưa đạt độ chính xác cao và thiếu hệ thống cung cấp ánh sáng ổn định cho camera.
HƯỚNG PHÁT TRIỂN
Vì thời gian, kiến thức và vấn đề kinh tế có hạn, mô hình hiện tại vẫn còn đơn giản Để áp dụng vào một dự án thực tế, cần nâng cấp mô hình này thêm.
Tăng số đối tượng phân loại.
Duy trì nguồn ánh sáng ổn định cung cấp cho camera hoạt động tốt.
Thêm dữ liệu training nhằm tăng tỉ lệ chính xác của hệ thống.
Tối ưu code xử lý, tăng độ nhạy của hệ thống điều khiển phân loại.
Tăng tốc độ xử lý phân loại.
Nâng cấp tính năng của hệ thống, phân loại sản phẩm ở nhiều trạng thái: sản phẩm tốt hoặc bị hư hỏng (do vận chuyển), màu sắc,
Nghiên cứu sâu hơn về mạng CNN.
Thêm vào hệ thống giám sát, hệ thống cảnh báo với các tình huống đặc biệt.
Mở rộng sang một hệ thống có quy mô lớn hơn, nhiều yêu cầu phức tạp hơn.
Chúng tôi hy vọng rằng với những định hướng phát triển cùng với ý tưởng và đóng góp của thầy cô và các bạn, đề tài này sẽ được nhóm tiếp tục phát triển để phù hợp hơn với các yêu cầu thực tế.
[1] http://genk.vn/cong-nghe-xe-o-to-tu-lai-cua-fpt-lan-dau-duoc-thu-nghiem-thuc- te-20171101084517649.chn.
[2] http://nhiethuyettre.net/mang-no-ron-tich-chap-convolutional-neural-network/.
[3] http://nhiethuyettre.net/mang-no-ron-tich-chap-convolutional-neural-network/.
[4] http://nhiethuyettre.net/mang-no-ron-tich-chap-convolutional-neural-network/.
[5] https://www.tensorflow.org/api_docs/python/tf/DType.
[6] https://www.adafruit.com/product/3055.
[7] https://www.raspberrypi.org/blog/new-8-megapixel-camera-board-sale-25/.
[8] https://iotmaker.vn/cam-bien-vat-can-hong-ngoai.html.
[9] https://kipalog.com/posts/Bat-dau-voi-Machine-Learning-thong-qua-
[10] http://nhiethuyettre.net/mang-no-ron-tich-chap-convolutional-neural-network/.
[11] Donald J Norris,”Beginning Artificial Intelligence with the Raspberry Pi”
[12] Ashwin Pajankar,“Raspberry Pi Image Processing Programming”