当前位置:网站首页>Fast target recognition based on pytorch and fast RCNN
Fast target recognition based on pytorch and fast RCNN
2022-07-06 06:53:00 【GIS developer】
Faster RCNN, be relative to R-CNN On the structure ,Faster RCNN Feature extraction has been done (feature extraction),proposal extract ,bounding box regression(rect refine),classification It's all integrated into one network , So that the comprehensive performance has been greatly improved , Especially in terms of detection speed .
PyTorch It's an open source Python Machine learning library , be based on Torch, For natural language processing applications . be relative to TensorFlow More lightweight , It is more suitable for scientific research and small projects .
Here is a simple example , be based on Fast RCNN Algorithm and PyTorch Fast target recognition . What we use here is coco Data sets have trained online models , It is relatively simple to operate .
Code
from PIL import Image
import matplotlib.pyplot as plt
# pip install -U matplotlib
import torch
# pip install pytorch
import torchvision.transforms as T
import torchvision
# pip install torchvision
import numpy as np
import cv2
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
# pip install opencv-python
# Download the trained model
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()
COCO_INSTANCE_CATEGORY_NAMES = [
'__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign',
'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A', 'N/A',
'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket',
'bottle', 'N/A', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl',
'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'N/A', 'dining table',
'N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'N/A', 'book',
'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush'
]
def get_prediction(img_path, threshold):
img = Image.open(img_path)
# Change one PIL Library pictures or numpy The array of is tensor Tensor type ; Convert from [0,255]->[0,1]
transform = T.Compose([T.ToTensor()])
img = transform(img)
pred = model([img])
print(pred[0]['labels'].numpy())
# Category extraction
pred_class = [COCO_INSTANCE_CATEGORY_NAMES[i] for i in list(pred[0]['labels'].numpy())]
# Coordinate extraction
pred_boxes = [[(i[0], i[1]), (i[2], i[3])] for i in list(pred[0]['boxes'].detach().numpy())]
# Find the ones that meet the similarity requirements
pred_score = list(pred[0]['scores'].detach().numpy())
pred_t = [pred_score.index(x) for x in pred_score if x > threshold][-1]
pred_boxes = pred_boxes[:pred_t + 1]
pred_class = pred_class[:pred_t + 1]
print("pred_class:", pred_class)
print("pred_boxes:", pred_boxes)
return pred_boxes, pred_class
def object_detection_api(img_path, threshold=0.5, rect_th=3, text_size=3, text_th=3):
boxes, pred_cls = get_prediction(img_path, threshold)
img = cv2.imread(img_path)
# Convert to RGB Images
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
for i in range(len(boxes)):
# Circle the target according to the coordinates
cv2.rectangle(img, (int(boxes[i][0][0]), int(boxes[i][0][1])), (int(boxes[i][1][0]), int(boxes[i][1][1])),
color=(0, 255, 0),
thickness=rect_th)
# Label categories
cv2.putText(img, pred_cls[i], (int(boxes[i][0][0]), int(boxes[i][0][1])), cv2.FONT_HERSHEY_SIMPLEX, text_size,
(0, 255, 0), thickness=text_th)
plt.imshow(img)
plt.show()
if __name__ == '__main__':
object_detection_api(img_path=r"C:\Users\hanbo\Pictures\dog.jpg")
result
Example 1
Example 2

边栏推荐
- Entity Developer数据库应用程序的开发
- After working for 10 years, I changed to a programmer. Now I'm 35 + years old and I'm not anxious
- 我的创作纪念日
- LeetCode每日一题(1870. Minimum Speed to Arrive on Time)
- 自动化测试环境配置
- Lesson 7 tensorflow realizes convolutional neural network
- Apache DolphinScheduler源码分析(超详细)
- 成功解决TypeError: data type ‘category‘ not understood
- [unity] how to export FBX in untiy
- Chapter 7 - thread pool of shared model
猜你喜欢

Thesis abstract translation, multilingual pure human translation

云上有AI,让地球科学研究更省力

LeetCode - 152 乘积最大子数组

LeetCode每日一题(971. Flip Binary Tree To Match Preorder Traversal)
![[English] Verb Classification of grammatical reconstruction -- English rabbit learning notes (2)](/img/3c/c25e7cbef9be1860842e8981f72352.png)
[English] Verb Classification of grammatical reconstruction -- English rabbit learning notes (2)

Introduction and underlying analysis of regular expressions
![[ 英語 ] 語法重塑 之 動詞分類 —— 英語兔學習筆記(2)](/img/3c/c25e7cbef9be1860842e8981f72352.png)
[ 英語 ] 語法重塑 之 動詞分類 —— 英語兔學習筆記(2)

How effective is the Chinese-English translation of international economic and trade contracts

Huawei equipment configuration ospf-bgp linkage

CS certificate fingerprint modification
随机推荐
26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
Database basics exercise part 2
Pymongo gets a list of data
雲上有AI,讓地球科學研究更省力
Day 246/300 SSH connection prompt "remote host identification has changed!"
librosa音频处理教程
将ue4程序嵌入qt界面显示
Pallet management in SAP SD delivery process
编译,连接 -- 笔记 -2
Day 246/300 ssh连接提示“REMOTE HOST IDENTIFICATION HAS CHANGED! ”
Delete external table source data
【每日一题】729. 我的日程安排表 I
Erreur de type résolue avec succès: type de données « catégorie» non sous - jacente
How to convert flv file to MP4 file? A simple solution
Do you really know the use of idea?
PCL realizes frame selection and clipping point cloud
云上有AI,让地球科学研究更省力
【Hot100】739. Daily temperature
【Hot100】739. 每日溫度
19.段页结合的实际内存管理