分類與定位

2022-09-10 00:54:25 字數 2258 閱讀 7621

定位中物體可以表示為回歸任務:**物體周圍的邊界框,一種常見的方法是**物體中心的水平座標和垂直座標,還有其高度和寬度。這意味著有四個數字要**。它不需要對模型進行太多修改,只需要新增四個具有單位的第二個密集輸出層(通常在全域性平均池化層之上),就可以使用mse損失對其進行訓練:

import tensorflow as tf

from tensorflow import keras

import tensorflow_datasets as tfds

(test_set, valid_set, train_set), info = tfds.load('tf_flowers', split=['train[:10%]', 'train[10%:25%]', 'train[25%:]'],

as_supervised=true, with_info=true)

dataset_size = info.splits['train'].num_examples

class_names = info.features['label'].names

n_classes = info.features['label'].num_classes

def preprocess(image, label):

resize_image = tf.image.resize(image, [224, 224])

return final_image, label

batch_size = 16

train_set = train_set.shuffle(1000)

train_set = train_set.map(preprocess).batch(batch_size).prefetch(1)

valid_set = valid_set.map(preprocess).batch(batch_size).prefetch(1)

test_set = test_set.map(preprocess).batch(batch_size).prefetch(1)

**g = keras.layers.global**eragepooling2d()(base_model.output)

class_output = keras.layers.dense(n_classes, activation='softmax')(**g)

loc_output = keras.layers.dense(4)(**g)

optimizer = keras.optimizers.sgd(lr=.2, momentum=.9, decay=.01)

model = keras.model(input=base_model.input, outputs=[class_output, loc_output])

model.compile(loss=['sparse_categorical_entropy', 'mse'], loss_weights=[0.8, 0.2],

optimizer=optimizer, metrics=['accuracy'])

花朵資料集在花朵周圍沒有邊界框,因此需要自己新增。這通常是機器學習專案中最難、最昂貴的部分之一:獲取標籤。花時間尋找合適的工具是乙個辦法。要使用邊界框標註影象,可能需要使用開源影象標記工具,例如vgg image annotator、labelimg、openlabeler或imagelab,或者使用商業工具(例如labelbox或supervisely)。如果需要標註大量影象,則可能還需要考慮眾包平台,例如amazon mechanical turk。但是建立眾包平台,需要準備傳送給工人的**,對其進行監督並確保他們產生的邊界框的質量是很好的,因此要保證這樣做是值得的。如果只有幾千張影象要標記,最好自己動手做。

如果已經獲得了花朵資料集中每個影象的邊界框(假設每個影象有乙個邊界框)。那麼需要建立乙個資料集,其資料項將是經過預處理的影象的批量處理,以及它們的類標籤和邊界框。每個資料集都應為一下形式的元組:(image,(class_labels,bounding_boxes))。

對邊界框應該進行歸一化,以便水平座標和垂直座標以及高度和寬度都在0到1的範圍內。而且通常要**高度和寬度的平方根,而不是直接的高度和寬度值:通過這種方式,對於大邊框的10畫素錯誤將不會像對小邊框的10畫素錯誤一樣受懲罰

mse通常作為成本函式可以很好的訓練模型,但是評估模型對邊界框的**能力不是乙個很好的指標。最常用的度量指標是「交並比」(intersection over union iou):**邊界框和目標邊界框之間的重疊面積除以它們的聯合面積。在tf.keras中,它是由tf.keras.metrics.meaniou類實現的

定位的分類 特點與應用

一 相對定位 position relative 特點 不脫離標準文件流,可以調整元素 以原來的位置為參考點 二 絕對定位 position absolute 特點 1 脫離標準文件流,不在頁面佔位置 2 層級提高,壓蓋現象 1 單獨給乙個盒子設定絕對定位,以根元素頁面左上角為參考點 2 相對於最近...

css筆記 定位的分類

使用定位可以將元素擺放到任意位置 分類1 預設的定位 塊元素垂直排列,行內元素左右排列,稱之為流 流 元素有序排列而形成的隊伍 特殊的定位 浮動定位 可以讓塊元素左右排列 分類 左浮動,右浮動 步驟 浮動的目標離隊,目標的弟弟會跟上,目標達到指定位置 規則 目標會脫離流 隊伍 右浮動 可以讓塊倒序左...

soft lockup的分類和定位方法

我之前已經寫了lockup問題的檢測原理,本來就來嘗試梳理一下soft lockup問題觸發場景和解決方法。首先需要明確一點soft lockup是一類問題,引起它的原因也是各有不同,本文只是嘗試做一些梳理,把一些具有共通性的特點的問題做一些總結,可能存在有不全面的地方。第一種場景 spinlock...