国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产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ⅴ在线观看-精品中文字幕在线

        无码人妻丰满熟妇区96| 国产精品无码乱伦| 欧洲精品一区二区三区久久| 国产av熟女一区二区三区| 农民人伦一区二区三区| 欧美日韩激情视频在线观看| 国产精品一区二区羞羞答答| 性生生活大片免费看视频| 天天干天天玩天天操| 手机在线观看日韩av| 日韩一级片免费视频| 日本精品一区在线| 欧美交换配乱吟粗大25p| 久久精品国产sm调教网站演员| 大陆极品少妇内射aaaaa| 亚洲精品乱码久久久久久自慰| 成年人网站av| 高清在线观看免费| 白白操在线视频| 九色porny自拍| 2022亚洲天堂| 亚洲第一精品区| 色国产在线视频| 日本男女交配视频| 免费看涩涩视频| 一级在线免费视频| 欧美成人三级在线视频| 中文字幕制服丝袜在线| 天天操天天干天天做| 亚洲成色www.777999| 国产精品一区二区免费在线观看| bt天堂新版中文在线地址| 性一交一乱一伧国产女士spa| 97av中文字幕| 无码精品a∨在线观看中文| av免费观看国产| 欧美日韩中文在线视频| 91国产精品视频在线观看| 色啦啦av综合| 国产 日韩 欧美在线| 欧美私人情侣网站| 黄色片免费网址| 国产老熟妇精品观看| 久久国产色av免费观看| 欧美在线观看成人| 中文字幕在线视频一区二区三区| 99久久久无码国产精品性色戒| 日韩一级特黄毛片| 黄色a级在线观看| 天天影视综合色| 鲁一鲁一鲁一鲁一澡| 婷婷视频在线播放| 可以免费在线看黄的网站| 在线观看污视频| 无码少妇一区二区三区芒果| 免费毛片网站在线观看| 国产一线二线三线女| 日本xxx免费| 不卡的在线视频| 欧美性猛交xxx乱久交| 青青青国产在线观看| 影音先锋成人资源网站| 国产情侣第一页| 五月六月丁香婷婷| 色姑娘综合天天| 尤蜜粉嫩av国产一区二区三区| 欧美精品一区免费| 国产免费成人在线| 日韩精品你懂的| 久久人人爽人人片| 高清在线观看免费| 97公开免费视频| 小泽玛利亚视频在线观看| 在线视频观看91| 乱熟女高潮一区二区在线| 波多野结衣50连登视频| av动漫免费观看| 欧美国产亚洲一区| 手机免费av片| 国产精品国产亚洲精品看不卡| 日本老熟妇毛茸茸| 色婷婷777777仙踪林| 成年人在线观看视频免费| 国产av熟女一区二区三区| 大香煮伊手机一区| 97精品国产97久久久久久粉红| 成人午夜视频在线观看免费| 日韩欧美中文在线视频| 国产日韩一区二区在线观看| 91视频成人免费| 午夜免费看毛片| 成年人视频观看| 日韩在线视频在线观看| 国产日韩亚洲欧美在线| 久久综合久久久久| 两性午夜免费视频| 99九九99九九九99九他书对| 日韩在线综合网| 成人av在线不卡| 久久久999免费视频| 欧美黄色免费影院| 日日碰狠狠丁香久燥| 少妇高清精品毛片在线视频| 男女曰b免费视频| www日韩视频| jizz大全欧美jizzcom| 久久精品久久99| 三上悠亚免费在线观看| 轻点好疼好大好爽视频| 精品国产成人av在线免| xxww在线观看| 免费网站永久免费观看| 老司机午夜av| 91视频 - 88av| 中文久久久久久| 18禁裸男晨勃露j毛免费观看| 国产精品欧美激情在线观看| 九九久久久久久| 激情婷婷综合网| 日本在线xxx| 亚洲爆乳无码精品aaa片蜜桃| 99久久久无码国产精品6| 青青草免费在线视频观看| 黄色手机在线视频| 欧美日韩第二页| 久久精品国产精品亚洲色婷婷| 久久人人爽人人片| 亚洲免费999| 亚洲va在线va天堂va偷拍| 日韩欧美亚洲天堂| 欧美久久久久久久久久久久久久| 亚洲第一天堂久久| 色呦呦网站入口| 欧美这里只有精品| 久草热视频在线观看| 免费在线看黄色片| 国产一级不卡视频| 日本三级免费网站| 日韩va在线观看| 男人天堂av片| 九色在线视频观看| 中文字幕精品一区二区三区在线| 国产精品久久久久久9999| 色哺乳xxxxhd奶水米仓惠香| 日韩精品一区二区在线视频| www插插插无码视频网站| 亚洲精品视频导航| 国产亚洲精品久久久久久久| 老熟妇仑乱视频一区二区| 99久久99精品| 9久久婷婷国产综合精品性色| 国产高潮免费视频| 自慰无码一区二区三区| 成年人三级黄色片| www.浪潮av.com| 好吊色视频988gao在线观看| 能看的毛片网站| av日韩在线看| 99热这里只有精品在线播放| 奇米777四色影视在线看| 国产精品jizz在线观看老狼| 国产熟女高潮视频| 精品少妇人欧美激情在线观看| 奇米777在线| 97精品国产97久久久久久粉红| 中文字幕欧美人妻精品一区| 国产主播在线看| 91视频 -- 69xx| 一女被多男玩喷潮视频| 91蝌蚪视频在线观看| 青青在线视频观看| 少妇黄色一级片| 成人高清在线观看视频| 中文字幕色呦呦| 人妻少妇精品无码专区二区| 日韩精品一区二区三区色欲av| 久久久久国产精品熟女影院| 欧美特黄aaa| 内射国产内射夫妻免费频道| 蜜臀久久99精品久久久酒店新书| 九九热免费在线观看| www.一区二区.com| 亚洲欧洲日本精品| 欧美极品欧美精品欧美| 色戒在线免费观看| 欧美日韩在线中文| 成人午夜免费剧场| 亚洲娇小娇小娇小| 欧美色图另类小说| 91视频成人免费| 国产又粗又硬又长| 91极品视频在线观看| 亚洲国产精品久久久久婷蜜芽| 91亚洲精品久久久蜜桃借种| 国产淫片免费看| 欧美人成在线观看| 第一区免费在线观看| 久久国产成人精品国产成人亚洲| 亚洲色成人www永久在线观看| 在线观看免费黄色片|