程式碼實踐——Faster R-CNN
"""
Faster rcnn 實現目標檢測
"""
import os
import time
import torch
import torchvision.transforms as transforms
import torchvision
from PIL import Image
from matplotlib import pyplot as plt
# 獲取當前路徑
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# classes_coco 類別資訊
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'
]
if __name__ == "__main__":
# 檢測圖片路徑
path_img = os.path.join(BASE_DIR, "moto.jpg")
# 預處理
preprocess = transforms.Compose([
transforms.ToTensor(),
])
input_image = Image.open(path_img).convert("RGB")
img_chw = preprocess(input_image)
# 載入預訓練模型
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()
if torch.cuda.is_available():
img_chw = img_chw.to('cuda')
model.to('cuda')
# 前向傳播
input_list = [img_chw]
with torch.no_grad():
tic = time.time()
print("input img tensor shape:{}".format(input_list[0].shape))
output_list = 外匯跟單gendan5.commodel(input_list)
output_dict = output_list[0]
print("pass: {:.3f}s".format(time.time() - tic))
# 列印輸出資訊
for k, v in output_dict.items():
print("key:{}, value:{}".format(k, v))
# 取得相應結果
out_boxes = output_dict["boxes"].cpu()
out_scores = output_dict["scores"].cpu()
out_labels = output_dict["labels"].cpu()
# 視覺化
fig, ax = plt.subplots(figsize=(12, 12))
ax.imshow(input_image, aspect='equal')
num_boxes = out_boxes.shape[0]
max_vis = 400
thres = 0.6
# 迴圈描框
for idx in range(0, min(num_boxes, max_vis)):
score = out_scores[idx].numpy()
bbox = out_boxes[idx].numpy()
class_name = COCO_INSTANCE_CATEGORY_NAMES[out_labels[idx]]
if score < thres:
continue
ax.add_patch(plt.Rectangle((bbox[0], bbox[1]), bbox[2] - bbox[0], bbox[3] - bbox[1], fill=False,
edgecolor='red', linewidth=3.5))
ax.text(bbox[0], bbox[1] - 2, '{:s} {:.3f}'.format(class_name, score), bbox=dict(facecolor='blue', alpha=0.5),
fontsize=14, color='white')
ax.set_title("just a simple try about Faster Rcnn", fontsize=28, color='blue')
plt.show()
plt.close()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2776991/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Faster R-CNNASTCNN
- Faster R-CNN演算法解析ASTCNN演算法
- CNN--卷積神經網路從R-CNN到Faster R-CNN的理解(CIFAR10分類程式碼)CNN卷積神經網路AST
- TorchVision Faster R-CNN 微調,實戰 Kaggle 小麥檢測ASTCNN
- Faster R-CNN: Down the rabbit hole of modern object detectionASTCNNObject
- 目標檢測技術演化:從R-CNN到Faster R-CNNCNNAST
- 一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSDCNNASTYOLO
- Pytorch版Faster R-CNN 原始碼分析+方法流程詳解——訓練篇PyTorchASTCNN原始碼
- 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度學習平臺的實戰ASTCNN深度學習
- 深度學習目標檢測(object detection)系列(四) Faster R-CNN深度學習ObjectASTCNN
- 用Tensorflow2.0實現Faster-RCNN的程式碼介紹ASTCNN
- JNI程式碼實踐
- 目標檢測入門系列手冊四:Faster R-CNN 訓練教程ASTCNN
- 【深度學習】像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程深度學習ASTCNN
- 【OpenAI】私有框架程式碼生成實踐OpenAI框架
- 聊聊「低程式碼」的實踐之路
- React 程式碼共享最佳實踐方式React
- 可落地的DDD程式碼實踐
- 使用 DartPad 製作程式碼實踐教程Dart
- dart系列之:dart程式碼最佳實踐Dart
- 用程式碼來實踐Web快取Web快取
- [譯] 程式碼審查之最佳實踐
- 【程式碼視覺化實踐】程式碼變更影響分析視覺化
- 深度學習論文翻譯解析(十三):Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks深度學習ASTCNNObject
- 前端程式碼質量的思考與實踐前端
- 程式碼除錯-入門、實踐到原理除錯
- Vert.x 程式碼結構最佳實踐
- 編寫優雅程式碼的最佳實踐
- 【微信小程式】掃碼付小程式優化實踐微信小程式優化
- 通義靈碼實踐教程——編碼使用實踐
- YonBuilder低程式碼開發實踐:4行程式碼實現跨實體列表資料同步UI行程
- Android端程式碼染色原理及技術實踐Android
- 聚合型程式碼審計工具QingScan使用實踐
- 策略模式在PHP業務程式碼的實踐模式PHP
- 開發中的程式碼規範實踐 PHPPHP
- Python 高階程式設計:深入探索高階程式碼實踐Python程式設計
- Sourcery - Swift超程式設計實踐,告別樣板程式碼Swift程式設計
- 異常值檢測!最佳統計方法實踐(程式碼實現)!⛵