- vừa được xem lúc

Sử dụng Roboflow cho bài toán Object Detection đơn giản

0 0 16

Người đăng: Nguyen Toan Thinh

Theo Viblo Asia

Object Detection là một lĩnh vực đang phát triển trong lĩnh vực học máy và đã nhận được sự quan tâm trong thời gian gần đây. Đây là một kỹ thuật thị giác máy tính được sử dụng để xác định vị trí của các đối tượng (chẳng hạn như khuôn mặt người, biển số xe, cây trồng, v.v.) trong hình ảnh hoặc video. Nếu công việc của bạn liên quan đến việc xây dựng Computer Vision vào các ứng dụng của mình, thì việc sử dụng nền tảng Roboflow sẽ cung cấp cho bạn mọi thứ bạn cần.

Roboflow là gì ?

Roboflow là một framework dành cho nhà phát triển Thị giác Máy tính để thu thập dữ liệu tốt hơn để xử lý trước và các kỹ thuật đào tạo mô hình . Roboflow có sẵn các tập dữ liệu công khai cho người dùng và cũng có quyền truy cập để người dùng tải lên dữ liệu tùy chỉnh của riêng họ. Roboflow chấp nhận các định dạng chú thích khác nhau. Trong quá trình xử lý trước dữ liệu, có các bước liên quan như định hướng hình ảnh, thay đổi kích thước, độ tương phản và tăng cường dữ liệu .

Toàn bộ quy trình làm việc có thể được điều phối với các nhóm trong khuôn khổ. Đối với đào tạo mô hình, có một loạt thư viện mô hình đã có mặt như EfficientNet, MobileNet, Yolo, TensorFlow, PyTorch , v.v. Sau đó , các tùy chọn trực quan và triển khai mô hình cũng có sẵn do đó bao gồm toàn bộ hiện đại.

Roboflow được sử dụng trong các ngành công nghiệp thị giác máy tính khác nhau cho các trường hợp sử dụng như - phát hiện rò rỉ khí đốt, phát hiện thực vật và cỏ dại, bảo trì máy bay, ước tính thiệt hại mái nhà, hình ảnh vệ tinh, ô tô tự lái, bộ đếm giao thông, dọn rác và nhiều hơn nữa.

Sử dụng Roboflow cho bài toán Object Detection

Ngay cả khi bạn chưa từng thực hiện bài toán Object Detection, Roboflow sẽ giúp bạn làm việc thông qua tất cả các khía cạnh của thị giác máy tính, từ tải lên, chú thích và tổ chức hình ảnh của bạn đến đào tạo và triển khai mô hình thị giác máy tính.

Mình tin rằng bạn không cần phải là một nhà khoa học dữ liệu hoặc cần một nền tảng mã hóa sâu rộng để có thể sử dụng thị giác máy tính. Bạn có mọi thứ bạn cần ngay bây giờ.

image.png *Quy trình làm việc của thị giác máy tính. (Hình ảnh của Roboflow và Streamlit ; được phép sử dụng.) *

Nếu bạn chưa có tài khoản Roboflow, bạn sẽ cần truy cập Roboflow và tạo một tài khoản . Nếu bạn muốn bắt đầu đào tạo mô hình của mình từ tập dữ liệu công khai, Roboflow có một hướng dẫn tuyệt vời mô tả cách cải thiện mô hình của bạn nhanh hơn. (Hoặc, bạn có thể tải lên tập dữ liệu của riêng mình !) Sau đây chúng ta sẽ đi vào từng bước thực hiện bài toán:

Thu thập tập dữ liệu hoặc sử dụng tập dữ liệu có sẵn công khai

Bước đầu tiên của một dự án phát hiện đối tượng là lấy dữ liệu để đào tạo. Bạn có thể tải xuống bộ dữ liệu có sẵn công khai hoặc tạo bộ dữ liệu của riêng bạn! Thông thường các bộ dữ liệu công cộng được sử dụng cho mục đích giáo dục và nghiên cứu. Tuy nhiên, nếu bạn muốn xây dựng các dự án phát hiện đối tượng cụ thể trong đó tập dữ liệu công khai không có các đối tượng mà bạn muốn phát hiện, bạn có thể muốn xây dựng tập dữ liệu của riêng mình.

Chúng ta có thể chọn bất kỳ tập dữ liệu nào mà chúng ta cảm thấy thích từ những tập dữ liệu này hoặc tải lên tập dữ liệu tùy chỉnh của riêng chúng ta từ phần máy tính cá nhân. Nếu bạn muốn sử dụng tập dữ liệu công khai, hãy đảm bảo phân tách nó sau khi mở. Sau khi fork một tập dữ liệu, nếu chúng ta muốn, chúng ta cũng có thể thêm hình ảnh của riêng mình.

Dán nhãn dữ liệu

Tiếp theo, chúng ta sẽ chuyển sang chú thích tập dữ liệu mà chúng ta có. Chú thích có nghĩa là đơn giản vẽ các hộp hình chữ nhật xung quanh mỗi đối tượng mà chúng ta muốn phát hiện và gán nhãn cho chúng. Chúng tôi sẽ giải thích cách thực hiện việc này bằng Roboflow. Công cụ này sẽ cho phép chúng tôi xử lý thêm các hình ảnh này sau khi gắn nhãn cho chúng. Hơn nữa, nó có thể dễ dàng xuất tập dữ liệu được gắn nhãn sang định dạng ta mong muốn.

  • Bước 1: Truy cập vào trang Roboflow, ấn tạo dự án mới để bắt đầu dự án. image.png
  • Bước 2: Điền vào Tên dự án , giữ Giấy phép (CC BY 4.0) và loại Dự án (Phát hiện đối tượng (Hộp phân vùng)) làm mặc định. Trong mô hình của bạn sẽ dự đoán điều gì? , điền vào tên nhóm chú thích.
  • Bước 3: Tiến hành tải tập dữ liệu đã chuẩn bị sẵn lên. Sau khi hình ảnh được xử lý, nhấp vào Hoàn tất tải lên . Kiên nhẫn chờ đợi cho đến khi hình ảnh được tải lên. image.png
  • Bước 4: Gán nhãn hình ảnh. Chọn một hình ảnh, vẽ một hình hộp chữ nhật xung quanh vật thể cần nhận diện và chọn nhãn tương ứng. làm tương tự với các vật thể khác trong ảnh. image.png
  • Bước 5: Tiếp tục chú thích cho các ảnh khác. Roboflow có một tính năng được gọi là Hỗ trợ nhãn , nơi nó có thể dự đoán trước các nhãn để việc dán nhãn của bạn sẽ nhanh hơn nhiều. Tuy nhiên, nó sẽ không hoạt động với tất cả các loại đối tượng, mà là một loại đối tượng được chọn. Để bật tính năng này, bạn chỉ cần nhấn nút Hỗ trợ nhãn , chọn mô hình , chọn các lớp và điều hướng qua các hình ảnh để xem các nhãn được dự đoán với các hộp giới hạn. image.png Như bạn có thể thấy ở trên, nó chỉ có thể giúp dự đoán các chú thích cho 80 lớp được đề cập. Nếu hình ảnh của bạn không chứa các lớp đối tượng từ trên xuống, bạn không thể sử dụng tính năng hỗ trợ nhãn mà sẽ phải tự dán nhãn thủ công.

Tăng cường và phân chia tệp dữ liệu

Sau khi dán nhãn xong, chúng ta tiến hành phân chia tập dữ liệu thành "Train, Valid và Test" để tiến hành huấn luyện model. Giữ tỷ lệ phần trăm mặc định cho phân phối và nhấp vào Thêm hình ảnh. image.png Tại thời điểm này, bạn có thể lắp trực tiếp một mô hình. Tuy nhiên, chúng tôi khuyên bạn nên xử lý trước và tăng cường hình ảnh của mình.

  • Xử lý trước hình ảnh: Các bước xác định được thực hiện đối với tất cả các hình ảnh trước khi đưa chúng vào mô hình. Ví dụ: bạn có thể thay đổi kích thước hình ảnh của mình để chúng có cùng kích thước hoặc chuyển đổi hình ảnh của bạn sang thang độ xám .
  • Tăng hình ảnh: Tạo thêm các ví dụ đào tạo bằng cách bóp méo hình ảnh đầu vào của bạn để mô hình của bạn không quá phù hợp với các ví dụ đào tạo cụ thể. Ví dụ: bạn có thể lật , xoay , làm mờ hoặc thêm nhiễu vào hình ảnh của mình . Mục đích là để mô hình của bạn tổng quát hóa tốt hơn so với “thế giới thực” khi bạn triển khai mô hình của mình. image.png

Khi bạn đã hoàn tất việc xử lý trước và nâng cấp, hãy nhấp vào “Tạo” ở góc trên cùng bên phải. Sau các bước cần thiết, chúng ta tạo một phiên bản của tập dữ liệu và xuất nó ở định dạng theo yêu cầu của tất cả các tệp ở dạng nén. Có nhiều định dạng khác nhau COCO JSON, Pascal VOC, YOLO, Tensorflow Object Detection, Multiclass Phân loại, v.v. image.png

Định dạng chú thích

Mặc dù đây không phải là danh sách đầy đủ, nhưng đây là một số định dạng phổ biến được sử dụng để đào tạo các mô hình ML:

  1. YOLO Thuật toán YOLO đã thành công trong việc nhận dạng các đối tượng trong hình ảnh / video theo thời gian thực. Thành công này đã làm cho định dạng chú thích trở nên phổ biến và khi các biến thể mới của thuật toán được phát triển, các định dạng chú thích YOLO tương ứng của chúng cũng trở nên phổ biến.
  • YOLO Darknet
  • YOLOv5 PyTorch
  • Scaled-YOLOv4
  • YOLO Keras
  • YOLOv4 PyTorch
  1. COCO Định dạng JSON này trở nên phổ biến với tập dữ liệuMS COCO mà Microsoft phát hành vào năm 2015. Nó đã trở thành một định dạng phổ biến cho các mô hình phát hiện đối tượng như R-CNN, Fast R-CNN.
  2. Pascal VOC Mặc dù không có mô hình nào được biết đến hoạt động trực tiếp với các nhãn VOC XML, nhưng định dạng này vẫn được coi là một định dạng chú thích phổ biến. Định dạng chú thích được tạo cho Thử thách đối tượng trực quan (VOC) và đã trở thành định dạng trao đổi phổ biến cho các nhãn phát hiện đối tượng.

Huấn luyện mô hình

Để xây dựng một mô hình, thật dễ dàng bằng cách nhấp vào “Sử dụng Roboflow Train”. Bạn sẽ có tùy chọn đào tạo từ đầu hoặc bắt đầu từ một model có sẵn. image.png

  • Train from Scratch: Đây là tùy chọn dễ dàng hơn. Chỉ cần nhấp và đi! Mô hình của bạn sẽ được xây dựng từ đầu, chỉ sử dụng dữ liệu bạn đã cung cấp cho nó.
  • Start from a Checkpiont: Tùy chọn này phức tạp hơn một chút và yêu cầu một mô hình hiện có liên quan. Nếu bạn đã xây dựng một mô hình (hoặc nếu có một mô hình công khai) phù hợp với dữ liệu liên quan, thì việc bắt đầu từ một điểm kiểm tra cho phép bạn sử dụng mô hình hiện có làm điểm xuất phát. Người mẫu được đào tạo thêm về hình ảnh của bạn. Hai ưu điểm của điều này là mô hình của bạn sẽ đào tạo nhanh hơn và bạn sẽ thường xuyên thấy hiệu suất được cải thiện! Đây được gọi là học chuyển tiếp . Tuy nhiên, điều này yêu cầu một mô hình hiện có liên quan và không phải lúc nào chúng tôi cũng có điều đó.

Trong trường hợp của mình, mình sẽ xây dựng mô hình từ đầu, vì mình chưa có một mô hình liên quan. Đó là tất cả những gì cần thiết để phù hợp với một mô hình trong Roboflow. Khi tất cả đã được hoàn thành, nếu dữ liệu của bạn đã được chú thích và bạn không thực hiện nhiều thay đổi đối với các phần bổ sung, thì chỉ cần một số nhấp chuột để chuyển từ hình ảnh của bạn sang mô hình thị giác máy tính được đào tạo.

Kết luận

Trên đây là toàn bộ các bước huấn luyện từ đầu 1 mô hình Object Detection bằng Roboflow. Roboflow trợ giúp trong mọi bước của vấn đề thị giác máy tính ngay từ khi thu thập dữ liệu đến triển khai và nó cũng giúp nâng cao hiệu suất nhờ các thông số hiệu quả sẵn có để sử dụng. Hi vọng bài viết sẽ giúp ích cho các mới bắt đầu làm quen với Computer Vision. Cảm ơn mọi người đã đọc bài viết của mình, mong nhận được sự góp ý của mọi người.

Reference

https://medium.com/analytics-vidhya/converting-annotations-for-object-detection-using-roboflow-5d0760bd5871 https://towardsdatascience.com/how-to-use-roboflow-and-streamlit-to-visualize-object-detection-output-672ba11b2f7c https://wiki.seeedstudio.com/YOLOv5-Object-Detection-Jetson/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Được rồi, đi thôi!!! VPS free nè (^.^) [P1]

Bạn là sinh viên, bạn là lập trình viên khó khăn về mặt tài chính, bạn không có xiền thuê VPS, được rồi hãy đến đây!!!. Hôm nay mình sẽ hướng dẫn cho các bạn cách tạo VPS free bằng Github Workflow & N

0 0 46

- vừa được xem lúc

[Linux] Iptables trong hệ thống Linux

IPtables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng

0 0 35

- vừa được xem lúc

Từ bug format sai chuỗi số khi nhập bằng bàn phím tiếng Nhật, tới IME và các sự kiện composition trong JS

"Tự nhiên tui thấy hiện tượng lạ”. Khi nhập liệu một chuỗi các kí tự vào thẻ input, thông thường chúng ta nhập thế nào thì hiển thị thế ấy, không làm phép biến đổi gì cả.

0 0 37

- vừa được xem lúc

Tạo Rijndael S-box sử dụng trong AES

I. Rijndael S-box là gì .

0 0 25

- vừa được xem lúc

Giới thiệu về lỗ hổng tràn bộ đệm (Buffer Overflow) và cách khai thác

Khái niệm. Lỗ hổng tràn bộ đệm (Buffer Overflow) là lỗ hổng trong lập trình, cho phép dữ liệu được ghi vào một buffer có thể tràn ra ngoài buffer đó, ghi đè lên dữ liệu khác và dẫn tới hoạt động bất t

0 0 32

- vừa được xem lúc

Share Libraries Hijacking trên Linux

1. Cách thức hoạt động của Share Libraries.

0 0 17