国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

極客小將

您現在的位置是:首頁 » python編程資訊

資訊內容

詳解使用PyTorch實現目標檢測與跟蹤

極客小將2020-12-22-
簡介python教程欄目介紹使用PyTorch實現目標檢測與跟蹤大量免費學習推薦,敬請訪問python教程(視頻)引言在昨天的文章中,我們介紹了如何在PyTorch中使用您自己的圖像來訓練圖像分類器,然后使用它來進行圖像識別。本文將展示如何使用預訓練的分類器檢測圖像中的多個對象,并在視頻中跟蹤它們。圖像
<link rel="stylesheet" />python教程欄目介紹使用PyTorch實現目標檢測與跟蹤

V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

大量免費學習推薦,敬請訪問python教程(視頻)V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

引言
V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

在昨天的文章中,我們介紹了如何在PyTorch中使用您自己的圖像來訓練圖像分類器,然后使用它來進行圖像識別。本文將展示如何使用預訓練的分類器檢測圖像中的多個對象,并在視頻中跟蹤它們。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

圖像中的目標檢測V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

目標檢測的算法有很多,YOLO跟SSD是現下**流行的算法。在本文中,我們將使用YOLOv3。在這里我們不會詳細討論YOLO,如果想對它有更多了解,可以參考下面的鏈接哦~(https://pjreddie.com/darknet/yolo/)V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

下面讓我們開始吧,依然從導入模塊開始:V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

from models import * from utils import * import os, sys, time, datetime, random import torch from torch.utils.data import DataLoader from torchvision import datasets, transforms from torch.autograd import Variable import matplotlib.pyplot as plt import matplotlib.patches as patches from PIL import Image

然后加載預訓練的配置和權重,以及一些預定義的值,包括:圖像的尺寸、置信度閾值和非**大抑制閾值。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

config_path='config/yolov3.cfg' weights_path='config/yolov3.weights' class_path='config/coco.names' img_size=416 conf_thres=0.8 nms_thres=0.4 # Load model and weights model = Darknet(config_path, img_size=img_size) model.load_weights(weights_path) model.cuda() model.eval() classes = utils.load_classes(class_path) Tensor = torch.cuda.FloatTensor

下面的函數將返回對指定圖像的檢測結果。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

def detect_image(img): # scale and pad image ratio = min(img_size/img.size[0], img_size/img.size[1]) imw = round(img.size[0] * ratio) imh = round(img.size[1] * ratio) img_transforms=transforms.Compose([transforms.Resize((imh,imw)), transforms.Pad((max(int((imh-imw)/2),0), max(int((imw-imh)/2),0), max(int((imh-imw)/2),0), max(int((imw-imh)/2),0)), (128,128,128)), transforms.ToTensor(), ]) # convert image to Tensor image_tensor = img_transforms(img).float() image_tensor = image_tensor.unsqueeze_(0) input_img = Variable(image_tensor.type(Tensor)) # run inference on the model and get detections with torch.no_grad(): detections = model(input_img) detections = utils.non_max_suppression(detections, 80, conf_thres, nms_thres) return detections[0]

**后,讓我們通過加載一個圖像,獲取檢測結果,然后用檢測到的對象周圍的包圍框來顯示它。并為不同的類使用不同的顏色來區分。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

# load image and get detections img_path = "images/blueangels.jpg" prev_time = time.time() img = Image.open(img_path) detections = detect_image(img) inference_time = datetime.timedelta(seconds=time.time() - prev_time) print ('Inference Time: %s' % (inference_time)) # Get bounding-box colors cmap = plt.get_cmap('tab20b') colors = [cmap(i) for i in np.linspace(0, 1, 20)] img = np.array(img) plt.figure() fig, ax = plt.subplots(1, figsize=(12,9)) ax.imshow(img) pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) unpad_h = img_size - pad_y unpad_w = img_size - pad_x if detections is not None: unique_labels = detections[:, -1].cpu().unique() n_cls_preds = len(unique_labels) bbox_colors = random.sample(colors, n_cls_preds) # browse detections and draw bounding boxes for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: box_h = ((y2 - y1) / unpad_h) * img.shape[0] box_w = ((x2 - x1) / unpad_w) * img.shape[1] y1 = ((y1 - pad_y // 2) / unpad_h) * img.shape[0] x1 = ((x1 - pad_x // 2) / unpad_w) * img.shape[1] color = bbox_colors[int(np.where( unique_labels == int(cls_pred))[0])] bbox = patches.Rectangle((x1, y1), box_w, box_h, linewidth=2, edgecolor=color, facecolor='none') ax.add_patch(bbox) plt.text(x1, y1, s=classes[int(cls_pred)], color='white', verticalalignment='top', bbox={'color': color, 'pad': 0}) plt.axis('off') # save image plt.savefig(img_path.replace(".jpg", "-det.jpg"), bbox_inches='tight', pad_inches=0.0) plt.show()

下面是我們的一些檢測結果:V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

視頻中的目標跟蹤V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

現在你知道了如何在圖像中檢測不同的物體。當你在一個視頻中一幀一幀地看時,你會看到那些跟蹤框在移動。但是如果這些視頻幀中有多個對象,你如何知道一個幀中的對象是否與前一個幀中的對象相同?這被稱為目標跟蹤,它使用多次檢測來識別一個特定的對象。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

有多種算法可以做到這一點,在本文中決定使用SORT(Simple Online and Realtime Tracking),它使用Kalman濾波器預測先前識別的目標的軌跡,并將其與新的檢測結果進行匹配,非常方便且速度很快。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

現在開始編寫代碼,前3個代碼段將與單幅圖像檢測中的代碼段相同,因為它們處理的是在單幀上獲得 YOLO 檢測。差異在**后一部分出現,對于每個檢測,我們調用 Sort 對象的 Update 函數,以獲得對圖像中對象的引用。因此,與前面示例中的常規檢測(包括邊界框的坐標和類預測)不同,我們將獲得跟蹤的對象,除了上面的參數,還包括一個對象 ID。并且需要使用OpenCV來讀取視頻并顯示視頻幀。V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

videopath = 'video/interp.mp4' %pylab inline import cv2 from IPython.display import clear_output cmap = plt.get_cmap('tab20b') colors = [cmap(i)[:3] for i in np.linspace(0, 1, 20)] # initialize Sort object and video capture from sort import * vid = cv2.VideoCapture(videopath) mot_tracker = Sort() #while(True): for ii in range(40): ret, frame = vid.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) pilimg = Image.fromarray(frame) detections = detect_image(pilimg) img = np.array(pilimg) pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) unpad_h = img_size - pad_y unpad_w = img_size - pad_x if detections is not None: tracked_objects = mot_tracker.update(detections.cpu()) unique_labels = detections[:, -1].cpu().unique() n_cls_preds = len(unique_labels) for x1, y1, x2, y2, obj_id, cls_pred in tracked_objects: box_h = int(((y2 - y1) / unpad_h) * img.shape[0]) box_w = int(((x2 - x1) / unpad_w) * img.shape[1]) y1 = int(((y1 - pad_y // 2) / unpad_h) * img.shape[0]) x1 = int(((x1 - pad_x // 2) / unpad_w) * img.shape[1]) color = colors[int(obj_id) % len(colors)] color = [i * 255 for i in color] cls = classes[int(cls_pred)] cv2.rectangle(frame, (x1, y1), (x1+box_w, y1+box_h), color, 4) cv2.rectangle(frame, (x1, y1-35), (x1+len(cls)*19+60, y1), color, -1) cv2.putText(frame, cls + "-" + str(int(obj_id)), (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 3) fig=figure(figsize=(12, 8)) title("Video Stream") imshow(frame) show() clear_output(wait=True)

相關免費學習推薦:php編程(視頻)
V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

以上就是詳解使用PyTorch實現目標檢測與跟蹤的詳細內容,更多請關注少兒編程網其它相關文章!V6r少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

預約試聽課

已有385人預約都是免費的,你也試試吧...

国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

        奇米777四色影视在线看| 欧美乱做爰xxxⅹ久久久| www.av91| 中文字幕第50页| 黄色aaaaaa| 欧洲av无码放荡人妇网站| 欧美日韩激情四射| 黄网站色视频免费观看| 欧美一级中文字幕| 9l视频自拍9l视频自拍| 色乱码一区二区三区熟女| 三区视频在线观看| 青青草原国产在线视频| 欧美视频国产视频| 影音先锋男人的网站| 91制片厂免费观看| 加勒比海盗1在线观看免费国语版| 黄色一级片网址| 黄色三级中文字幕| aa在线免费观看| 九九热精品在线播放| 可以看污的网站| www.亚洲一区二区| 国产美女主播在线播放| 99草草国产熟女视频在线| 欧美大尺度做爰床戏| 日本免费色视频| 日本免费成人网| 国产精品无码一本二本三本色| 天天爽人人爽夜夜爽| 日韩不卡的av| 国产aaa一级片| 狠狠操狠狠干视频| 日韩网站在线免费观看| 亚洲欧美在线精品| 菠萝蜜视频在线观看入口| 91视频最新入口| 天天干天天综合| 欧美另类videosbestsex日本| 久久福利一区二区| 日本三级免费网站| 国产又粗又猛大又黄又爽| 自慰无码一区二区三区| www.久久av.com| 久久久999免费视频| 日本精品一区在线| 免费在线观看日韩视频| www.午夜色| 97xxxxx| 亚洲天堂一区二区在线观看| 国产精品50p| 亚洲av综合色区| 国产九九在线观看| 免费看黄在线看| 手机看片日韩国产| 在线免费av播放| 成人一区二区三| 91专区在线观看| 久久久久久久9| 神马午夜伦理影院| 亚洲一区二区福利视频| 国产三级日本三级在线播放| 国产69精品久久久久999小说| 三级性生活视频| 国内外成人免费在线视频| 99精品免费在线观看| 六月婷婷在线视频| 国产精品12345| 成人毛片一区二区| 日本人体一区二区| 欧美日韩视频免费| 青草网在线观看| 成年人看的毛片| 性欧美大战久久久久久久| 日韩亚洲欧美视频| www.日本在线视频| 欧美 日韩 国产 高清| 1024精品视频| 成人在线看视频| xx欧美撒尿嘘撒尿xx| 国产精品天天av精麻传媒| www日韩视频| 亚洲免费黄色网| 欧美少妇在线观看| 欧美一级欧美一级| 国产又黄又大又粗视频| 国产精品人人爽人人爽| 亚洲欧洲日本精品| 成人在线观看毛片| 日本十八禁视频无遮挡| 能看的毛片网站| 天天爱天天做天天操| 老太脱裤子让老头玩xxxxx| 成年人免费在线播放| 婷婷六月天在线| 国产精品免费看久久久无码| 免费一级特黄特色毛片久久看| 毛片av免费在线观看| 欧美日韩久久婷婷| 九九九九免费视频| 一级片黄色免费| 男女高潮又爽又黄又无遮挡| 亚洲精品性视频| 加勒比成人在线| 亚欧美在线观看| 免费视频爱爱太爽了| 九色91popny| 日本手机在线视频| 91 视频免费观看| 精品久久久久久久久久中文字幕| 激情内射人妻1区2区3区 | 欧美色图色综合| 亚洲三级在线观看视频| 伊人成色综合网| 久久精品国产露脸对白| 91九色在线观看视频| 永久免费看av| 三年中文在线观看免费大全中国| 日本精品一区在线观看| 久久久久亚洲av无码专区喷水| 虎白女粉嫩尤物福利视频| 国产精品无码免费专区午夜| 中文字幕久久av| 国产视频一区二区视频| 黄色免费视频大全| 欧美精品卡一卡二| 欧美 另类 交| 中文字幕资源在线观看| 欧美伦理片在线观看| 十八禁视频网站在线观看| 欧美一级视频免费看| 超碰10000| 大片在线观看网站免费收看| 中文字幕线观看| 五月天开心婷婷| 一级网站在线观看| 国产免费中文字幕| 性欧美在线视频| 精品少妇人妻av一区二区| 在线免费看污网站| 国产在线观看中文字幕| 黄色aaaaaa| 久久av喷吹av高潮av| aaa免费在线观看| 国产一级大片免费看| 黄色一级大片免费| 国产青青在线视频| 熟女人妇 成熟妇女系列视频| 北条麻妃在线一区| 特级丰满少妇一级| 日本三日本三级少妇三级66| 最新中文字幕久久| 伊人再见免费在线观看高清版 | 免费黄频在线观看| 99中文字幕在线观看| 国内自拍中文字幕| 黄色动漫在线免费看| 天天插天天操天天射| 自拍一级黄色片| 日韩视频免费播放| 黄色片视频在线播放| 亚洲少妇第一页| 亚欧精品在线视频| 国产乱子夫妻xx黑人xyx真爽| 黑森林精品导航| 国产1区2区3区中文字幕| 超碰网在线观看| 国产免费xxx| 久久黄色免费看| 成人免费观看在线| 999这里有精品| 欧美日韩在线中文| 激情图片qvod| 无需播放器的av| 国产一区二区网| 992tv成人免费观看| 日本888xxxx| 日韩精品xxxx| 黄色一级片国产| 九九热视频免费| 尤蜜粉嫩av国产一区二区三区| 激情视频小说图片| 成人综合久久网| 免费在线观看毛片网站| 欧日韩免费视频| 99热都是精品| 亚洲18在线看污www麻豆| 欧美韩国日本在线| www..com日韩| 欧美日韩视频免费| 今天免费高清在线观看国语| xxxx在线免费观看| 天天天干夜夜夜操| 日日摸日日碰夜夜爽av| 黄色激情在线视频| 91免费视频黄| 丰满女人性猛交| 麻豆传媒网站在线观看| 污污视频在线免费| 一级 黄 色 片一|