Đầu tiên trong quá trình nhận diện đối tượng là học mạng để tự xây dựng mạng neural với các đối tượng mong muốn. Học mạng gồm 3 bước cơ bản: thu thập dữ liệu, tạo dữ liệu đầu vào, quá trình training cho mạng.
Để học mạng được hiệu quả với các giải thuật trí tuệ nhân tạo AI trong xử lý ảnh thì khối lượng ảnh phải rất lớn. Vì vậy trong phạm vi đề tài, chương trình sẽ được viết để kết nối camera nhằm mục đích chụp, lưu trữ và tự đặt tên cho ảnh phục vụ cho việc xây dựng bộ dữ liệu đầu vào về sau.
Trong quá trình thực nghiệm đề tài, thấy rằng việc nhận diện ổn định và cụ thể như các hình dáng, màu sắc các loại thuốc thì cần khoảng 1045 ảnh là có thể đem lại hiệu quả cao với tỷ lệ sai sót đủ thấp.
a. Tạo dữ liệu đầu vào cho quá trình học
Ở bước trên, ta đã thu thập được số lượng ảnh cần thiết để nhận diện đối tượng mong muốn, để đưa bộ dữ liệu hình ảnh đó được vào học mạng ta cần tạo các thông số đầu vào.
Quá trình tạo bộ thông số này tuy là khá đơn giản, nhưng phải làm thủ công; với bộ ảnh đầu vào lớn thì công việc này mất rất nhiều thời gian.
Nhằm giảm thời gian, cũng như thuận tiện trong quá trình tạo dữ liệu đầu vào, đề tài đã tham khảo và xây dựng lại một công cụ có tên là Bbox Label Tool cho phù hợp với phiên bản Python 3.6.7 và viết thêm code để tạo dữ liệu đầu ra là file
*.xml phục vụ cho việc học sau này. Việc tạo ra file *.xml khá đơn giản, người
dùng chỉ việc kéo thả và nhấp chuột để thông báo vị trí của đối tượng cần nhận diện, ngoài ra còn thêm chức năng chọn nhiều đối tượng khác nhau trong cùng một ảnh.
Đối với ảnh nhiều đối tượng, người dùng cần chọn tên đối tượng trước khi kéo thả khoanh vùng đối tượng. Sau khi người dùng ấn Next (phím tắt ‘n’) được lưu ở cả dạng *.txt và *.xml tại thư mục được định sẵn.
Hình 4. 19. Thư mục lưu file *.xml và *.txt
Do sử dụng YOLO nên chúng ta chỉ quan tâm tới nội dung của file *.xml:
- Các tọa độ xmin, xmax, ymin, ymax chính là tọa độ điểm kích chuột đầu và cuối.
- P.DOL.EXTRA, P.MOL.TAB chính là tên của hai đối tượng đã khoanh vùng
ở trên.
- Ngoài ra trong đó còn chứa các thông số về đường dẫn đến ảnh, kích thước của ảnh.
Cụ thể hơn, đoạn code của chương trình này sẽ được nêu ở phần phụ, sau đây đề tài trình bày giải thuật cơ bản của script này:
b. Thực hiện quá trình training cho mạng
Sau khi có bộ dữ liệu đầu vào, đề tài sẽ sửa dụng học mạng theo chương trình của darkflow theo link: https://github.com/thtrieu/darkflow
Bằng thực nghiệm và trong phạm vi 2 đối tượng, đề tài nhận thấy quá trình học này nên diễn ra cho tới khi loss hội tụ về giá trị nhỏ hơn 0.5 mới đem lại kết quả ổn định.
Hình 4. 22. Học mạng theo chương trình darkflow
c. Sử dụng mạng đã được training
Để sử dụng mạng theo bộ thư viện của darkflow chỉ cần tuân theo các bước cơ bản sau:
o Khai báo sử dụng bộ thư viện của darkflow;
o Load các file *.weight và file cấu hình *.cfg của mạng vào chương trình;
o Áp dụng mạng với các ảnh thu được.
Kết quả thu được của đề tài sau khi xây dựng mạng với 2 đối tượng là 2 loại thuốc: