当前位置:网站首页>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

边栏推荐
- Pymongo gets a list of data
- Day 245/300 JS foreach data cannot be updated to the object after multi-layer nesting
- Chapter 7 - thread pool of shared model
- Day 246/300 ssh连接提示“REMOTE HOST IDENTIFICATION HAS CHANGED! ”
- 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
- Explain in detail the functions and underlying implementation logic of the groups sets statement in SQL
- 成功解决TypeError: data type ‘category‘ not understood
- CS passed (cdn+ certificate) PowerShell online detailed version
- PCL实现选框裁剪点云
- How to convert flv file to MP4 file? A simple solution
猜你喜欢

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

L'Ia dans les nuages rend la recherche géoscientifique plus facile

Attributeerror: can 't get attribute' sppf 'on < module' models. Common 'from' / home / yolov5 / Models / comm

mysql的基础命令

Thesis abstract translation, multilingual pure human translation

SQL Server Manager studio (SSMS) installation tutorial

Basic commands of MySQL

AI on the cloud makes earth science research easier

Monotonic stack

Apache DolphinScheduler源码分析(超详细)
随机推荐
云上有AI,让地球科学研究更省力
机器学习植物叶片识别
Lesson 7 tensorflow realizes convolutional neural network
L'Ia dans les nuages rend la recherche géoscientifique plus facile
UNIPRO Gantt chart "first experience": multi scene exploration behind attention to details
Reflex WMS中阶系列3:显示已发货可换组
What is the difference between int (1) and int (10)? Senior developers can't tell!
LeetCode每日一题(1997. First Day Where You Have Been in All the Rooms)
Simple query cost estimation
Development of entity developer database application
AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models. common‘ from ‘/home/yolov5/models/comm
[advanced software testing step 1] basic knowledge of automated testing
女生学软件测试难不难 入门门槛低,学起来还是比较简单的
Use shortcut LNK online CS
How effective is the Chinese-English translation of international economic and trade contracts
26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
Day 245/300 JS forEach 多层嵌套后数据无法更新到对象中
删除外部表源数据
Pymongo gets a list of data
kubernetes集群搭建Zabbix监控平台