目標檢測技巧 誤識別資料餵入

2021-10-04 10:07:04 字數 2962 閱讀 1397

在一些目標檢測任務中,經常有一些容易誤識別的資料,比如博主最近做的臺標識別的專案,經常有一些芒果之類的被誤識別為湖南衛視,而實驗發現mmdetection並不支援無ground truth的輸入影象,那如何餵入誤識別資料呢?

本部落格使用了一種有人稱之為「填鴨式的方法」,即將誤識別的區域使用正方形標註出來,然後隨機開啟訓練集中的一張影象,將誤識別切割出來的區域放到滑鼠指定的位置(滑鼠指定左上角,其餘自動填充)

import cv2 as cv

import os

import numpy as np

from pil import image

import random

global img, pt_curr, pt_pre, counts, file_list, index, tar_img, img_crop

img_crop = np.zeros((10,10))

tar_img = np.zeros((100,100))

file_list =

counts = 0

index = 0

def on_mouse1(event, x, y, flags, param): # 滑鼠左鍵按下

global pt_curr, pt_pre, index, tar_img, img_crop, tar_name

if event == cv.event_lbuttondown:

pt_curr = (x, y)

pt_pre = pt_curr

h, w, _ = np.shape(img_crop)

s = tar_name.split('/')

tar_name = '/users/hank/desktop/ad_12/train_aug/' + s[-1]

print(np.shape(img_crop), np.shape(tar_img), tar_name)

tar_img[x:x+h, y:y+w] = img_crop

cv.imwrite(tar_name, tar_img)

def on_mouse(event, x, y, flags, param): # 滑鼠左鍵按下

global img, pt_curr, pt_pre, index

img_cpy = img.copy()

if event == cv.event_lbuttondown:

pt_curr = (x, y)

pt_pre = pt_curr

cv.circle(img_cpy, pt_curr, 10, (0, 255, 0), 2)

cv.imshow('image', img_cpy)

elif event == cv.event_mousemove and (flags & cv.event_flag_lbutton): # 左鍵保持按下,且進行拖動

pt_curr = (x, y)

cv.rectangle(img_cpy, pt_pre, pt_curr, (255, 0, 0), 2)

cv.imshow('image', img_cpy)

elif event == cv.event_lbuttonup: # 滑鼠左鍵鬆開

pt_curr = (x, y)

cv.rectangle(img_cpy, pt_pre, pt_curr, (0, 0, 255), 2)

cv.imshow('image', img_cpy)

min_x = min(pt_pre[0], pt_curr[0])

min_y = min(pt_pre[1], pt_curr[1])

width = abs(pt_pre[0] - pt_curr[0])

height = abs(pt_pre[1] - pt_curr[1])

global img_crop

img_crop = img[min_y:min_y + height, min_x:min_x + width]

img_crop = image.fromarray(img_crop)

global counts

counts = counts + 1

for i in range(5):

global tar_name

tar_name = file_list[index]

index += 1

print(tar_name)

global tar_img

tar_img = cv.imread(tar_name)

cv.namedwindow('tar_img')

cv.setmousecallback('tar_img', on_mouse1)

cv.imshow('tar_img',tar_img)

cv.waitkey(0)

if __name__ == '__main__':

root_dir = './wujian'

for filename1 in os.listdir('/users/hank/desktop//ad_12/train'):

filename = os.path.join('/users/hank/desktop/ad_12/train', filename1)

random.shuffle(file_list)

for img_name in os.listdir(root_dir):

global img

print("image name: {}".format(img_name))

img = cv.imread(os.path.join(root_dir, img_name))

cv.namedwindow('image')

cv.setmousecallback('image', on_mouse)

cv.imshow('image', img)

cv.waitkey(0)

目標檢測與目標識別

目標識別 objec recognition 是指明一幅輸入影象中包含哪類目標。其輸入為一幅影象,輸出是該影象中的目標屬於哪個類別 class probability 目標檢測 object detection 除了要告訴輸入影象中包含哪類目標外,還要框出該目標的具體位置 bounding boxe...

解決目標檢測中的難分樣本(漏檢測與誤檢測問題)

asdn網路使用roi池層提取的功能作為輸入影象補丁。asdn網路比 遮擋 退出掩碼,然後將其用於丟棄特徵值並傳遞到fast rcnn的分類塔。對抗空間丟棄網路 asdn 它學習如何封閉給定的目標,使得frcn難以對其進行分類。我們在本文中考慮的第二種型別的生成是變形。在這種情況下,我們提出了對抗空...

目標分割 目標識別 目標檢測和目標跟蹤的區別

粗略理解 典型的技術路線是 目標分割 目標檢測 目標識別 目標跟蹤 ot與od到底啥區別 最大的區別我覺得ot只給了第一幀的gt基於od的目標跟蹤演算法計算非常昂貴,需要對每幀畫面進行檢測,才能得到目標的運動軌跡。而且,只能追蹤已知的目標,因為目標檢測演算法就只能實現已知類別的定位識別。因此,od要...