当前位置:网站首页>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
边栏推荐
- Embed UE4 program into QT interface display
- Today's summer solstice
- librosa音频处理教程
- UDP攻击是什么意思?UDP攻击防范措施
- SAP SD发货流程中托盘的管理
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- 删除外部表源数据
- Suspended else
- Apache DolphinScheduler源码分析(超详细)
- Reflex WMS medium level series 3: display shipped replaceable groups
猜你喜欢
Leetcode - 152 product maximum subarray
SQL Server manager studio(SSMS)安装教程
云上有AI,让地球科学研究更省力
Today's summer solstice
E-book CHM online CS
[advanced software testing step 1] basic knowledge of automated testing
How effective is the Chinese-English translation of international economic and trade contracts
AI on the cloud makes earth science research easier
ROS learning_ Basics
How to do a good job in financial literature translation?
随机推荐
How effective is the Chinese-English translation of international economic and trade contracts
Bitcoinwin (BCW): 借贷平台Celsius隐瞒亏损3.5万枚ETH 或资不抵债
[Yu Yue education] Dunhuang Literature and art reference materials of Zhejiang Normal University
万丈高楼平地起,每个API皆根基
Basic commands of MySQL
Briefly describe the differences between indexes, primary keys, unique indexes, and joint indexes in mysql, and how they affect the performance of the database (in terms of reading and writing)
Leetcode daily question (971. flip binary tree to match preorder traversal)
因高额网络费用,Arbitrum 奥德赛活动暂停,Nitro 发行迫在眉睫
【刷题】怎么样才能正确的迎接面试?
[advanced software testing step 1] basic knowledge of automated testing
Phishing & filename inversion & Office remote template
Redis Foundation
机器学习植物叶片识别
Pallet management in SAP SD delivery process
ML之shap:基于adult人口普查收入二分类预测数据集(预测年收入是否超过50k)利用Shap值对XGBoost模型实现可解释性案例之详细攻略
How much is the price for the seal of the certificate
26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
Apache dolphin scheduler source code analysis (super detailed)
Chapter 7 - thread pool of shared model
UNIPRO Gantt chart "first experience": multi scene exploration behind attention to details