分析COCO數據集進行姿態估計

2021-01-10 人工智慧遇見磐創

我們需要一個數據集來訓練姿勢估計模型,我們的選擇有像COCO、MPII和CrowdPose這樣的公共數據集,姿態估計屬於比較複雜一類的問題。為神經網絡模型建立一個合適的數據集是很困難的,圖像中每個人的每個關節都必須定位和標記,這是一項瑣碎而費時的任務。

目前最流行的姿態估計數據集是COCO數據集。它有大約80類圖像和大約250000個人物實例。

如果檢查此數據集中的一些隨機圖像,你可能會碰到一些與要解決的問題無關的實例,學術界希望達到最高的精度,但在實際生產環境中並不總是如此。

在實際環境中,我們更希望在特定的場景下製作良好的模型,例如行人、籃球運動員、健身房等。

現在我們從COCO數據集中查看此圖像:

你看到紅點了嗎?這是關鍵點:鼻子。

你可能不希望網絡看到僅包含頭部一部分的示例,尤其是在幀的底部。

本文將向你展示COCO數據集的一個示例分析。

COCO數據集

COCO數據集是用於許多計算機視覺任務的大規模通用數據集,包含150萬個對象實例,80個對象類別,25萬人。我們可以在源站點上找到更多詳細信息,在那裡還可以下載所有必需的文件:https://cocodataset.org/。

數據集由圖像文件和注釋文件組成。注釋文件是一個JSON,包含關於一個人(或其他一些類別)的所有元數據。在這裡我們將找到邊界框的位置和大小,區域,關鍵點,源圖像的文件名等。

我們不必手動解析JSON。有一個方便的Python庫pycocotools(https://github.com/cocodataset/cocoapi/tree/master/PythonAPI)。

我們需要train2017.zip(https://cocodataset.org/#download),val2017.zip(https://cocodataset.org/#download),annotations_trainval2017.zip(https://cocodataset.org/#download)。

具體來說,我們只需要人的注釋。zip中有兩個有趣的文件:annotations_trainval2017.zip:person_keypoints_train2017.json和person_keypoints_val2017.json。

我建議將文件放在這個文件夾層次結構中:

dataset_coco |---annotations |---person_keypoints_train2017.json |---person_keypoints_val2017.json |---train2017 |---*.jpg |---val2017 |---*.jpg下面是顯示如何加載注釋的代碼:

from pycocotools.coco import COCO...train_annot_path = 'dataset_coco/annotations /person_keypoints_train2017.json'val_annot_path = 'dataset_coco/annotations/person_keypoints_val2017.json'train_coco = COCO(train_annot_path) # 加載訓練集的注釋val_coco = COCO(val_annot_path) # 加載驗證集的注釋...# 函數遍歷一個人的所有資料庫並逐行返回相關數據def get_meta(coco): ids = list(coco.imgs.keys()) for i, img_id in enumerate(ids): img_meta = coco.imgs[img_id] ann_ids = coco.getAnnIds(imgIds=img_id) # 圖像的基本參數 img_file_name = img_meta['file_name'] w = img_meta['width'] h = img_meta['height'] # 檢索當前圖像中所有人的元數據 anns = coco.loadAnns(ann_ids) yield [img_id, img_file_name, w, h, anns]...# 迭代圖像for img_id, img_fname, w, h, meta in get_meta(train_coco): ... # 遍歷圖像的所有注釋 for m in meta: # m是字典 keypoints = m['keypoints'] ......首先,我們必須加載COCO對象,它是json數據的包裝器(第6-7行);

在第11行,我們加載所有圖像標識符。

在接下來的幾行中,我們為每個圖像加載元數據。這是一個包含圖像寬度、高度、名稱、許可證等一般信息的詞典。

在第14行,我們加載給定圖像的注釋元數據。這是一個字典列表,每個字典代表一個人。

第27-32行顯示了如何加載整個訓練集(train_coco)。類似地,我們可以加載驗證集(val_coco)。

將COCO轉換為Pandas數據幀

讓我們將COCO元數據轉換為pandas數據幀。我們使用如matplotlib、sklearn 和pandas。

數據的過濾、可視化和操作變得更加容易。此外,我們還可以將數據導出為csv或parquet等。

def convert_to_df(coco): images_data = [] persons_data = [] # 遍歷所有圖像 for img_id, img_fname, w, h, meta in get_meta(coco): images_data.append({ 'image_id': int(img_id), 'path': img_fname, 'width': int(w), 'height': int(h) }) # 遍歷所有元數據 for m in meta: persons_data.append({ 'image_id': m['image_id'], 'is_crowd': m['iscrowd'], 'bbox': m['bbox'], 'area': m['area'], 'num_keypoints': m['num_keypoints'], 'keypoints': m['keypoints'], }) # 創建帶有圖像路徑的數據幀 images_df = pd.DataFrame(images_data) images_df.set_index('image_id', inplace=True) # 創建與人相關的數據幀 persons_df = pd.DataFrame(persons_data) persons_df.set_index('image_id', inplace=True) return images_df, persons_df我們使用get_meta函數構造兩個數據幀—一個用於圖像路徑,另一個用於人的元數據。在一個圖像中可能有多個人,因此是一對多的關係。

在下一步中,我們合併兩個表(left join操作)並將訓練集和驗證集組合。另外,我們添加了一個新列source,值為0表示訓練集,值為1表示驗證集。

這樣的信息是必要的,因為我們需要知道應該在哪個文件夾中搜索圖像。如你所見,這些圖像位於兩個文件夾中:train2017/和val2017/。

images_df, persons_df = convert_to_df(train_coco)train_coco_df = pd.merge(images_df, persons_df, right_index=True, left_index=True)train_coco_df['source'] = 0images_df, persons_df = convert_to_df(val_coco)val_coco_df = pd.merge(images_df, persons_df, right_index=True, left_index=True)val_coco_df['source'] = 1coco_df = pd.concat([train_coco_df, val_coco_df], ignore_index=True)最後,我們有一個表示整個COCO數據集的數據幀。

圖像中有多少人

現在我們執行第一個分析。

COCO數據集包含多個人的圖像。我們想知道有多少圖像只包含一個人。

代碼如下:

# 計數annotated_persons_df = coco_df[coco_df['is_crowd'] == 0]crowd_df = coco_df[coco_df['is_crowd'] == 1]print("Number of people in total: " + str(len(annotated_persons_df)))print("Number of crowd annotations: " + str(len(crowd_df)))persons_in_img_df = pd.DataFrame({ 'cnt': annotated_persons_df['path'].value_counts()})persons_in_img_df.reset_index(level=0, inplace=True)persons_in_img_df.rename(columns = {'index':'path'}, inplace = True)# 按cnt分組,這樣我們就可以在一張圖片中得到帶有注釋人數的數據幀persons_in_img_df = persons_in_img_df.groupby(['cnt']).count()# 提取數組x_occurences = persons_in_img_df.index.valuesy_images = persons_in_img_df['path'].values# 繪圖plt.bar(x_occurences, y_images)plt.title('People on a single image ')plt.xticks(x_occurences, x_occurences)plt.xlabel('Number of people in a single image')plt.ylabel('Number of images')plt.show()結果圖表:

如你所見,大多數COCO圖片都包含一個人。

但是,有相當多的多人照片。舉幾個例子:

好吧,甚至有一張圖片有19個註解(非人群):

這個圖像的頂部區域不應該標記為一個人群嗎?

是的,應該。但我們有多個沒有關鍵點的邊界框!它們應該被屏蔽。

在這張圖片中,只有中間的3個方框有一些關鍵點。

讓我們優化查詢,以獲取包含有/沒有關鍵點的人的圖像的統計信息,以及有/沒有關鍵點的人的總數:

annotated_persons_nokp_df = coco_df[(coco_df['is_crowd'] == 0) & (coco_df['num_keypoints'] == 0)]annotated_persons_kp_df = coco_df[(coco_df['is_crowd'] == 0) & (coco_df['num_keypoints'] > 0)]print("Number of people (with keypoints) in total: " + str(len(annotated_persons_kp_df)))print("Number of people without any keypoints in total: " + str(len(annotated_persons_nokp_df)))persons_in_img_kp_df = pd.DataFrame({ 'cnt': annotated_persons_kp_df[['path','source']].value_counts()})persons_in_img_kp_df.reset_index(level=[0,1], inplace=True)persons_in_img_cnt_df = persons_in_img_kp_df.groupby(['cnt']).count()x_occurences_kp = persons_in_img_cnt_df.index.valuesy_images_kp = persons_in_img_cnt_df['path'].valuesf = plt.figure(figsize=(14, 8))width = 0.4plt.bar(x_occurences_kp, y_images_kp, width=width, label='with keypoints')plt.bar(x_occurences + width, y_images, width=width, label='no keypoints')plt.title('People on a single image ')plt.xticks(x_occurences + width/2, x_occurences)plt.xlabel('Number of people in a single image')plt.ylabel('Number of images')plt.legend(loc = 'best')plt.show()現在我們可以看到區別是明顯的。

他們在COCO頁面上寫過有25萬人擁有關鍵點,而我們只查到156165個這樣的例子,他們可能應該刪除「帶關鍵點」這幾個字。

添加額外列

一旦我們將COCO轉換成pandas數據幀,就可以很容易地添加額外的列,從現有的列中計算出來。

我認為最好將所有的關鍵點坐標提取到單獨的列中。此外可以添加一個具有比例因子的列。

特別是關於一個人的邊界框的規模的信息可能非常有用。例如,我們可能希望丟棄所有太小規模的人,或者執行放大操作。

為了實現這個目標,我們將使用Python庫sklearn中的transformer對象。

一般來說,sklearn transformers是用於清理、減少、擴展和生成數據科學模型中的特徵表示的強大工具。我們只會用一小部分的api。

代碼如下:

from sklearn.base import BaseEstimator, TransformerMixinclass AttributesAdder(BaseEstimator, TransformerMixin): def __init__(self, num_keypoints, w_ix, h_ix, bbox_ix, kp_ix): """ :param num_keypoints: 關鍵點的數量 :param w_ix: 包含圖像寬度的列的索引 :param h_ix: 包含圖像高度的列的索引 :param bbox_ix: 包含邊框數據的列的索引 :param kp_ix: 包含關鍵點數據的列的索引 """ self.num_keypoints = num_keypoints self.w_ix = w_ix self.h_ix = h_ix self.bbox_ix = bbox_ix self.kp_ix = kp_ix def fit(self, X, y=None): return self # 沒有別的事可做 def transform(self, X): # 檢索特定列 w = X[:, self.w_ix] h = X[:, self.h_ix] bbox = np.array(X[:, self.bbox_ix].tolist()) # to matrix keypoints = np.array(X[:, self.kp_ix].tolist()) # to matrix # 計算邊框的比例因子 scale_x = bbox[:,2] / w scale_y = bbox[:,3] / h aspect_ratio = w / h # 計算規模類別 scale_cat = pd.cut(scale_y, bins=[0., 0.4, 0.6, 0.8, np.inf], labels=['S', 'M', 'L', 'XL']) return np.c_[X, scale_x, scale_y, scale_cat, aspect_ratio, keypoints]# 用於添加新列的transformer對象attr_adder = AttributesAdder(num_keypoints=17, ...)coco_extra_attribs = attr_adder.transform(coco_df.values)# 創建新的列列表keypoints_cols = [['x'+str(idx), 'y'+str(idx), 'v'+str(idx)] for idx, k in enumerate(range(num_keypoints))]keypoints_cols = np.concatenate(keypoints_cols).tolist()# 創建新的更豐富的數據z幀coco_extra_attribs_df = pd.DataFrame( coco_extra_attribs, columns=list(coco_df.columns) + ["scale_x", "scale_y", "scale_cat", "aspect_ratio"] + keypoints_cols, index=coco_df.index)計算規模(第32-34行)不需要進一步解釋。更有趣的是下一行:38。在這裡,我們為每一行指定規模類別(S、M、L或XL)。計算方法如下:

如果scale_y在[0–0.4)範圍內,則類別為S如果scale_y在[0.4–0.6)範圍內,則類別為M如果scale_y在[0.6–0.8)範圍內,則類別為L如果scale_y在[0.8–1.0)範圍內,則類別為XL在第42行,我們將原始列與新列合併。

仔細看看我們如何將關鍵點擴展到單獨的列中—第28行。COCO數據集中的關鍵點數據由一個一維列表表示:[x0,y0,v0,x1,y1,…]。我們可以把這個列轉換成一個矩陣:[num of rows]x[num of keypoints*3]。然後,我們可以不需要任何額外的努力就可以返回它(第42行)。

最後,我們創建一個新的數據幀(第58-63行)。

鼻子在哪裡?

我知道這是個奇怪的問題。但我向你保證,鼻子是在圖像中找到。

是的,如果我們想檢查圖像中頭部位置的分布呢。最簡單的方法是找到鼻子的坐標,然後在標準化的二維圖表中畫一個點。

呈現此圖表的代碼如下:

# 對水平圖像進行關鍵點坐標標準化horiz_imgs_df = coco_extra_attribs_df[coco_extra_attribs_df['aspect_ratio'] >= 1.]# 獲取平均寬度和高度-用於縮放關鍵點坐標avg_w = int(horiz_imgs_df['width'].mean())avg_h = int(horiz_imgs_df['height'].mean())class NoseAttributesAdder(BaseEstimator, TransformerMixin): def __init__(self, avg_w, avg_h, w_ix, h_ix, x1_ix, y1_ix, v1_ix): self.avg_w = avg_w self.avg_h = avg_h self.w_ix = w_ix self.h_ix = h_ix self.x1_ix = x1_ix self.y1_ix = y1_ix self.v1_ix = v1_ix def fit(self, X, y=None): return self # 沒有別的事可做 def transform(self, X): w = X[:, self.w_ix] h = X[:, self.h_ix] x1 = X[:, self.x1_ix] y1 = X[:, self.y1_ix] # 標準化鼻子坐標,提供平均寬度和高度 scale_x = self.avg_w / w scale_y = self.avg_h / h nose_x = x1 * scale_x nose_y = y1 * scale_y return np.c_[X, nose_x, nose_y] # 用於標準化鼻子坐標列的transformer對象w_ix = horiz_imgs_df.columns.get_loc('width')h_ix = horiz_imgs_df.columns.get_loc('height')x1_ix = horiz_imgs_df.columns.get_loc('x0') # 鼻子的x坐標在'x0'列中y1_ix = horiz_imgs_df.columns.get_loc('y0') # 鼻子的y坐標在'y0'列中v1_ix = horiz_imgs_df.columns.get_loc('v0') # 鼻頭的可見性attr_adder = NoseAttributesAdder(avg_w, avg_h, w_ix, h_ix, x1_ix, y1_ix, v1_ix)coco_noses = attr_adder.transform(horiz_imgs_df.values)# 使用標準化的數據創建新數據幀coco_noses_df = pd.DataFrame( coco_noses, columns=list(horiz_imgs_df.columns) + ["normalized_nose_x", "normalized_nose_y"], index=horiz_imgs_df.index)# 過濾-只有可見的鼻子coco_noses_df = coco_noses_df[coco_noses_df["v0"] == 2]coco_noses_df.plot(kind="scatter", x="normalized_nose_x", y="normalized_nose_y", alpha=0.3).invert_yaxis()與前面一樣,我們將使用一個轉換器來添加新列。

COCO數據集包含不同寬度和高度的圖像。我們必須標準化每個圖像中鼻子的x,y坐標,這樣我們就能在輸出圖表中畫出代表鼻子的點。

我們首先確定所有圖像的平均寬度和高度(第7-8行)。我們可以使用任何值,因為它只用於確定比例因子。

在第40-44行,我們從dataframe中找到所需列的索引。

隨後,我們執行轉換(第46-47行)並創建一個新的數據幀,其中包含新的列normalized_nose_x和normalized_nose_y(第51-55行)。

最後一行繪製二維圖表。

現在可以檢查一些圖像。例如我們想檢查一些頭部位置非常接近圖像底邊的圖像,為了實現這一點,我們通過列normalized_nose_y過濾數據幀。

low_noses_df = coco_noses_df[coco_noses_df['normalized_nose_y'] > 430 ]low_noses_df以下是滿足此條件的示例圖像:

關鍵點數量

具有特定數量關鍵點的邊界框的數量是附加的有用信息。

為什麼要邊界框?

邊界框有一個特殊的標誌iscrowd,用來確定內容是應該作為一個群組(沒有關鍵點)還是一個人(應該有關鍵點)。一般來說,iscrowd是為包含許多人的小實例(例如網球比賽中的觀眾)的邊界框設置的。

y_images = coco_extra_attribs_df['num_keypoints'].value_counts()x_keypoints = y_images.index.values# 繪圖plt.figsize=(10,5)plt.bar(x_keypoints, y_images)plt.title('Histogram of keypoints')plt.xticks(x_keypoints)plt.xlabel('Number of keypoints')plt.ylabel('Number of bboxes')plt.show()# 帶有若干關鍵點(行)的bboxes(列)百分比kp_df = pd.DataFrame({ "Num keypoints %": coco_extra_attribs_df[ "num_keypoints"].value_counts() / len(coco_extra_attribs_df)}).sort_index()如你所見,在表中顯示相同的信息非常容易:

規模

這是迄今為止最有價值的指標。

訓練姿態估計深度神經網絡模型對樣本中人的規模變化非常敏感。提供一個平衡的數據集是關鍵。否則,模型可能會偏向於一個更具優勢的規模。

你還記得一個額外的屬性scale_cat嗎?現在我們要好好利用它。

代碼:

persons_df = coco_extra_attribs_df[coco_extra_attribs_df['num_keypoints'] > 0]persons_df['scale_cat'].hist()可以呈現以下圖表:

我們清楚地看到,COCO數據集包含了很多小人物——不到圖像總高度的40%。我們把它放到表格中:

scales_props_df = pd.DataFrame({ "Scales": persons_df["scale_cat"].value_counts() / len(persons_df)})scales_props_df

COCO數據集的分層抽樣

首先,讓我們定義什麼是分層抽樣。

當我們將整個數據集劃分為訓練集/驗證集等時,我們希望確保每個子集包含相同比例的特定數據組。

假設我們有1000人,男性佔57%,女性佔43%。我們不能只為訓練集和驗證集選取隨機數據,因為在這些數據子集中,一個組可能會被低估。我們必須從57%的男性和43%的女性中按比例選擇。

換句話說,分層抽樣在訓練集和驗證集中保持了57%的男性/43%的女性的比率。

同樣,我們可以檢查COCO訓練集和驗證集中是否保持了不同規模的比率。

persons_df = coco_extra_attribs_df[coco_extra_attribs_df['num_keypoints'] > 0]train_df = persons_df[persons_df['source'] == 0]val_df = persons_df[persons_df['source'] == 1]scales_props_df = pd.DataFrame({ "Scales in train set %": train_df["scale_cat"].value_counts() / len(train_df), "Scales in val set %": val_df["scale_cat"].value_counts() / len(val_df)})scales_props_df["Diff 100%"] = 100 * \ np.absolute(scales_props_df["Scales in train set %"] - scales_props_df["Scales in val set %"])在第2-3行,我們將數據幀拆分為訓練集和驗證集的單獨數據幀。這與我們分別從person_keypoints_train2017.json和person_keypoints_val2017.json加載數據幀相同。

接下來我們用訓練集和驗證集中每個規模組的基數創建一個新的數據幀。此外,我們添加了一個列,其中包含兩個數據集之間差異的百分比。

結果如下:

如我們所見,COCO數據集的分層非常好。訓練集和驗證集中的規模組之間只有很小的差異(1-2%)。

現在,讓我們檢查不同的組-邊界框中關鍵點的數量。

train_df = coco_extra_attribs_df[coco_extra_attribs_df['source'] == 0]val_df = coco_extra_attribs_df[coco_extra_attribs_df['source'] == 1]kp_props_df = pd.DataFrame({ "Num keypoints in train set %": train_df["num_keypoints"].value_counts() / len(train_df), "Num keypoints in val set %": val_df["num_keypoints"].value_counts() / len(val_df)}).sort_index()kp_props_df["Diff 100%"] = 100 * \ np.absolute(kp_props_df["Num keypoints in train set %"] - kp_props_df["Num keypoints in val set %"])

類似地,我們看到關鍵點的數量在COCO訓練和驗證集中是相等的。很好!

現在,你可以將所有數據集(MPII、COCO)合併到一個包中,然後自己進行拆分;有一個很好的sklearn類:StratifiedShuffleSplit。

總結

在本文中,我描述了分析COCO數據集的過程。了解其中的內容可以幫助你更好地決定增加或丟棄一些不相關的樣本。

分析可以在Jupyter notebook上進行。

我從COCO數據集中展示了一些或多或少有用的指標,比如圖像中人的分布、人的邊界框的規模、某些特定身體部位的位置。

最後我描述了驗證集分層的過程。

github倉庫連結:https://github.com/michalfaber/dataset_toolkit

相關焦點

  • MMDetection v2.0 訓練自己的數據集
    mmdetection 支持VOC數據集,還有COCO數據集格式,還可以自定義數據格式,現在我們採用VOC的數據格式,mm_det容器已經映射宿主目錄了,在宿主目錄/train_data,新建目錄存放數據集,可在容器內/mmdetection/data裡在操作,新建目錄結構如下VOCdevkit--VOC2007----Annotations
  • FB嵌入式人工智慧平臺發布,單目3D姿態估計新方法
    原文:https://arxiv.org/pdf/1904.01416.pdf利用卷積變分自編碼器進行單目3D姿態估計最近的研究試圖通過一個深層條件變分自動編碼器來解決2D到3D提升的固有困難。研究人員提出了一種基於深度學習的生成模型,以估計的2D姿態為條件,合成不同的3D姿態樣本。通過這樣做,他們解決了從2d到3d提升過程中遇到的模糊性。
  • PyTorch版YOLOv4更新了,適用於自定義數據集
    由於原版 YOLO 使用 C 語言進行編程,光憑這一點就讓不少同學望而卻步。網上有很多基於 TF/Keras 和 Caffe 等的復現版本,但不少項目只給了代碼,並沒有給出模型在 COCO、PASCAL VOC 數據集上的訓練結果。
  • 利用深度學習估計再分析數據集中的大氣重力波參數
    通過利用29年的大氣再分析數據集訓練卷積神經網絡,在合理的計算成本下,將大尺度的輸入數據很好地降尺度為細尺度的重力波參數。重力波在推動和維持全球環流方面發揮著重要作用。為了了解其在大氣中的貢獻,準確地再現其分布是很重要的。
  • 無需人臉檢測,即可實時,6自由度3維人臉姿態估計方法 | 代碼剛開源
    在AFLW2000-3D和BIWI上的測試表明,我們的方法運行在實時和性能優於狀態(SotA)人臉姿態估計器。值得注意的是,我們的方法在更寬的人臉檢測基準上也超過了類似的SotA模型,儘管沒有在包圍框標籤上進行優化。
  • 用於進行Meta分析以合成相關數據的非技術性入門
    為了進行說明,將分析來自16項研究(Molloy等, 2014)Meta分析的數據,該研究分析了調查責任心和藥物依從性之間的關聯。數據集包括相關性,研究樣本量,以及可以評估為潛在調節變量的一系列連續(例如,平均年齡)和分類變量(例如,所使用的盡責性測量的類型)。這個Meta分析的數據以及分析示例都包含在metafor包中。
  • 法國國立路橋學校在讀博士肖洋:非特定場景下的目標檢測和3D姿態...
    視覺場景理解是計算機視覺領域一項複雜的任務,是在環境數據感知的基礎上,結合視覺分析與圖像處理識別等技術手段,從計算統計、行為認知以及語義等不同角度挖掘視覺數據中的特徵與模式作為場景理解的關鍵子任務,圖像中目標檢測和姿態估計也是近幾年的研究熱點。針對圖像中目標檢測問題,大部分方法已經在多樣本情況下取得了很好的結果。然而,對於樣本較少的新對象類別,其性能仍然滯後;在姿態估計領域,近幾年的方法都需要針對特定的對象實例或類別進行訓練。但是對於未預定義類別的事物,目前方法性能略顯不足。那麼,到底如何解決當前出現的場景理解問題並進行優化呢?
  • 【世界最大人臉對齊數據集】ICCV 2017:距離解決人臉對齊已不遠
    在這項工作中,作者專注於特徵點定位(landmark localization),尤其是人臉特徵點定位,也被稱為人臉對齊(face alignment),「人臉對齊」也可以說是過去幾十年來計算機視覺中研究最多的主題之一。近來關於使用卷積神經網絡(CNN)的特徵點定位的工作已經推動了其他領域的界限,例如如人體姿態估計,但目前尚不清楚在人臉對齊方面取得怎樣的成果。
  • 學界| Facebook提出DensePose數據集和網絡架構:可實現實時的人體...
    那項工作主要關注的是人臉,並且只在姿態變化適中的數據集上評估了他們的結果。但是,由於人體具有更高的複雜度和靈活性,同時姿態也存在更大的變化,所以我們這裡還面臨著新的難題。我們採用了合適的架構設計來解決這些難題,詳見第 3 節;該架構相比於 DenseReg 類型的全卷積架構有顯著的提升。
  • 基於組合導航的汽車姿態數據採集系統設計
    編者按:本文設計了一個基於組合導航的汽車姿態數據採集系統,該系統利用集加速度計和陀螺儀於一體的高精度高靈敏度的慣性測量晶片MPU6050,結合地磁傳感器形成的九軸傳感器,對汽車的線性加速度、角速度參數數據進行直接採集,以互補濾波實現九軸傳感器的誤差補償,用四元數法對其姿態解算
  • 從人臉到人體姿態,芯翌探索生物識別新模式
    放到今天來看,其實我們可以通過一種AI技術,來研究本山大叔是如何一步一步變瘸,姿態是如何從正常演變成不正常,如何從正常人變成瘸子。這就是人體姿態估計技術,可以實現人體動作、手指運動等姿態的估計,對於描述人體姿態、預測人體行為至關重要。近日,芯翌研發團隊的論文《UDP-人體姿態估計無偏的數據處理方法》被人工智慧和計算機視覺領域頂級會議CVPR-2020接收。
  • 遷移性好、多用途,港中文提出特徵分離的無監督人類三維姿態表徵
    綜上所述,作者最終提出的網絡訓練損失函數為:實驗結果在實驗室,作者使用四個數據集:Cambridge-Imperial APE dataset, Northwestern-UCLA dataset, NTU RGB+D dataset 和H3.6M dataset.
  • 資料|利用Python進行數據分析
    ——Fernando Pérez 加州大學伯克利分校 研究科學家, IPython的創始人之一【內容簡介】還在苦苦尋覓用Python控制、處理、整理、分析結構化數據的完整課程?本書含有大量的實踐案例,你將學會如何利用各種Python庫(包括NumPy、pandas、matplotlib以及IPython等)高效地解決各式各樣的數據分析問題。
  • 數據集 | 連接JPL Mascons間斷期的數據集也發布了~
    我們於2020年10月25日在青藏高原科學數據中心發布了基於CSRM (CSR GRACE/GRACE-FO RL06 Mascon Solutions (version 02))構建的其間斷期的數據集。目前該數據集已經有1700餘次瀏覽,130多次申請下載量。
  • 通過Monk AI輕鬆進行對象檢測
    為此,我選擇了Open Image Dataset 的一個子集,該子集可以公開使用。1.安裝和下載數據首先讓我們安裝MONK庫MONK格式遵循以下目錄結構接下來下載數據現在解壓縮圖像和csv文件並將其存儲在適當的位置2.
  • 如何使用Pandas-Profiling進行探索性數據分析
    當開始一個新的機器學習項目時,獲得機器學習數據集之後的第一步就是要了解它。我們可以通過執行探索性數據分析(EDA)來實現這一點。這包括找出每個變量的數據類型、目標變量的分布、每個預測變量的不同值的數量、數據集中是否有重複值或缺失值等。進行EDA探索機器學習數據集的過程往往是非常耗時的。什麼是Pandas-Profiling?
  • 上海交大發布 MedMNIST 醫學圖像分析數據集 & 新基準
    ,近日上海交通大學發布了 MedMNIST 數據集,有望促進醫學圖像分析的發展。樂觀估計,經過多年的學習和研究,你終於掌握了計算機視覺和臨床醫學的雙向技能,那接下來的操作也能讓你愁到頭禿,因為這些數據來源五花八門,有 X 射線、CT、超聲……分析處理這麼多個不同模式的非標準數據集,也太難了!
  • 史上最全實戰資源,機器學習框架、高分練手項目及數據集匯總
    3、數據集經典數據集圖像處理情感分析自然語言處理音頻數據集自動駕駛01 TensorFlow       TensorFlow是一個採用數據流圖(data flow它是一個簡單高效的數據挖掘和數據分析工具,可供大家在各種環境中重複使用,建立在 NumPy ,SciPy 和 matplotlib 上,開源,可商業使用 - BSD許可證。
  • 給定一系列訓練集數據並且對其進行訓練
    機器學習的定義:給定一系列訓練集數據並且對其進行訓練。以數據集h來舉例:第一步,如果我們的數據集中的數據來自全國各地,那麼就要從中獲取特徵數據。比如上海分布的節氣。或者其他,而這些數據可以作為特徵。第二步,我們對這些特徵進行訓練。本地常用的數據集是kaggle的數據集,這是一個名為montrealdatasetandcompetition(聖安東尼奧數據集挑戰賽)的挑戰比賽的數據集。
  • 14個超有趣的數據分析項目,數據集都給你整理好啦
    轉載自大數據文摘 對於那些對數據,數據分析或數據科學感興趣的人,提供一份可以利用業餘時間完成的數據科學項目清單,一共14個!探索性數據分析項目 探索性數據分析(EDA),也稱為數據挖掘,意思是數據分析過程中使用了多種技術來更好理解數據。