[Computer Vision] làm quen với Object Detection (nhận diện vật thể) chỉ với 10 dòng code sử dụng ImageAI – Trangwiki

Đăng bởi : Admin | Lượt xem : 6328 | Chuyên mục : Machine Learning

Trong bài viết này mình sẽ hướng dẫn các bạn làm quen với nhận diện vật thể (Object Detection) một cách đơn giản dễ hiểu nhất sử dụng thư viện ImageAI

Object Detection là gì?

Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision). Computer Vision là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy. Object Detection có lẽ là khía cạnh sâu sắc nhất của thị giác máy do số lần sử dụng trong thực tế.

Object Detection đề cập đến năng lực của mạng lưới hệ thống máy tính và ứng dụng để xác định những đối tượng người dùng trong một hình ảnh và xác lập từng đối tượng người dùng. Object Detection đã được sử dụng thoáng đãng để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, mạng lưới hệ thống bảo mật thông tin và xe không người lái. Có nhiều cách để nhận diện đối tượng người tiêu dùng hoàn toàn có thể được sử dụng cũng như trong nhiều nghành nghề dịch vụ thực hành thực tế. Giống như mọi công nghệ tiên tiến khác, một loạt những ứng dụng phát minh sáng tạo và tuyệt vời của Object Detection sẽ đến từ những lập trình viên và những nhà tăng trưởng ứng dụng .
Bắt đầu sử dụng những giải pháp nhận diện đối tượng người dùng văn minh trong những ứng dụng và mạng lưới hệ thống, cũng như thiết kế xây dựng những ứng dụng mới dựa trên những giải pháp này. Việc triển nhận diện đối tượng người tiêu dùng sớm tương quan đến việc sử dụng những thuật toán cổ xưa, giống như những thuật toán được tương hỗ trong OpenCV, thư viện computer vision thông dụng. Tuy nhiên, những thuật toán cổ xưa này không hề đạt được hiệu suất đủ để thao tác trong những điều kiện kèm theo khác nhau .
Việc vận dụng đột phát và nhanh cóng của deep learning vào năm 2012 đã đưa vào sự sống sót những thuật toán và chiêu thức phát hiện đối tượng người tiêu dùng văn minh và đúng mực cao như R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet và nhanh hơn nhưng rất đúng chuẩn như SSD và YOLO. Sử dụng những chiêu thức và thuật toán này, dựa trên deep learning và cũng dựa trên việc học máy yên cầu rất nhiều kỹ năng và kiến thức về toán học và việc học sâu. Có hàng triệu chuyên viên lập trình và những nhà tăng trưởng ứng dụng muốn tích hợp và tạo ra những mẫu sản phẩm mới sử dụng object detection. Nhưng công nghệ tiên tiến này xa tầm tay của họ và phức tạp để hiểu và sử dụng trong thực tiễn của nó .
ImageAI, một thư viện python được cho phép những lập trình viên và những nhà tăng trưởng ứng dụng thuận tiện tích hợp những công nghệ tiên tiến thị giác máy văn minh vào những ứng dụng hiện có và mới của họ, và chỉ cần sử dụng một vài dòng mã. ImageAI tương hỗ một list những thuật toán học máy tân tiến nhất cho việc Dự kiến hình ảnh,, nhận diện vật thể, phát diện video, …

Cài đặt

Để thực thi nhận diện đối tượng người tiêu dùng người dùng bằng ImageAI, tổng thể và toàn diện những gì bạn cần làm là :

  1. Cài đặt python
  2. Cài đặt ImageAI và phụ thuộc của nó.
  3. Tải xuống file mô hình Object Detection
  4. Chạy chương trình

Bây giờ, hãy mở màn

  1. Tải xuống và cài đặt python 3 từ https://python.org
  2. Tensorflow 1.4.0 (and later versions)
pip3 install --upgrade tensorflow 
  1. Numpy 1.13.1 (and later versions)
pip3 install numpy 
  1. SciPy 0.19.1 (and later versions)
pip3 install scipy 
  1. OpenCV
pip3 install opencv-python 
  1. Pillow
pip3 install pillow 
  1. Matplotlib
pip3 install matplotlib 
  1. h5py
pip3 install h5py 
  1. Keras 2.x
 pip3 install keras 
  1. ImageAI
pip install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
  1. Tải xuống mô hình RetinaNet sẽ được sử dụng để nhận diện đối tượng qua liên kết

Mọi thứ đã sẵn sàng chuẩn bị sẵn sàng chuẩn bị, tạo một tệp python là ObjectDetection. py. Sao chép file quy mô RetinaNet và hình ảnh mà bạn muốn phát hiện vào thư mục chứa file ObjectDetection. py .

Nhập vào file ObjectDetection. py đoạn mã sau :

from imageai.Detection import ObjectDetection
import os

execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path, "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path, "image.jpg"), output_image_path=os.path.join(execution_path, "imagenew.jpg"))
for eachObject in detections:
    print(eachObject["name"] + " : " + eachObject["percentage_probability"] )

Ba dòng đầu tiên, đã import lớp ImageAI Object Detection ở dòng đầu tiên, dòng thứ 2 là import lớp python os và xác định một biến để giữ đường dẫn đến thư mục chứa file python của chúng ta. Tệp mô hình RetinaNet và hình ảnh nằm ở dòng thứ ba

from imageai.Detection import ObjectDetection
import os

execution_path = os.getcwd()

Tiếp 5 dòng mã sau, tổng thể tất cả chúng ta đã định nghĩa lớp object detection trong dòng đầu, thiết lập kiểu quy mô cho RetinaNet trong dòng thứ hai, thiết lập đường dẫn của quy mô RetinaNet trong dòng thứ ba, load quy mô vào lớp object detection ở trong dòng thứ tư, sau đó ta gọi hàm detection và được điều tra và nghiên cứu và nghiên cứu và phân tích cú pháp trong đường dẫn hình ảnh nguồn vào và đường dẫn hình ảnh đầu ra trong dòng thứ năm .

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path, "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path, "image.jpg"), output_image_path=os.path.join(execution_path, "imagenew.jpg")

Trong hai dòng mã cuối, ta lặp qua tất cả các kết quả được trả về bởi hàm detector.detectObjectsFromImage trong dòng đầu tiên, sau đó in ra tên và xác suất phần trăm của mô hình trên từng đối tượng được phát hiện trong hình ảnh trong dòng thứ hai.

for eachObject in detections:
    print(eachObject["name"] + " : " + eachObject["percentage_probability"] )

ImageAI hỗ trợ nhiều tùy chỉnh mạnh mẽ của quá trình nhận diện đối tượng. Một trong số đó là khả năng trích xuất hình ảnh của từng đối tượng được phát hiện trong hình ảnh. Bằng cách thêm tham số extract_detected_objects=True vào hàm detectObjectsFromImage. Lớp object detection sẽ tạo một thư mục cho các đối tượng hình ảnh, trích xuất từng ảnh, lưu từng ảnh vào thư mục mới.

detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path, "image.jpg"), output_image_path=os.path.join(execution_path, "imagenew.jpg"), extract_detected_objects=True)

Hình ảnh bắt đầu :

Sau quá trình Object Detection:
Sau quy trình Object Detection :

Sau khi ta thêm tham số extract_detected_objects=True vào hàm detectObjectsFromImage, sẽ tạo thêm một thư mục, rích xuất từng ảnh, lưu từng ảnh vào thư mục mới.

Một vài hình ảnh được trích xuất có trong thư mục :

Tương tự, ta cũng trọn vẹn hoàn toàn có thể nhận diện những vật thể qua video sử dụng Video Object Detection có tương hỗ trong thư viện ImageAI .

from imageai.Detection import VideoObjectDetection
import os

execution_path = os.getcwd()

detector = VideoObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path, "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()

video_path = detector.detectObjectsFromVideo(input_file_path=os.path.join(execution_path, "traffic.mp4"),
                                output_file_path=os.path.join(execution_path, "traffic_detected")
                              , frames_per_second=20, log_progress=True)
print(video_path)

Không chèn được video nên mình đưa link vậy )
Đầu vào video :

ĐÁNH GIÁ post
Bài viết liên quan

Tư vấn miễn phí (24/7) 094 179 2255