我正在設計一個實時系統,根據語意分割網路中的類 ID 過濾掉影像的某些區域。從網路中,我有一個類 ID(數字 0 到 20)的 numpy 陣列 (13,16,1),它們對應于影像的區域(即 (1,1) 是最左上角的區域等)。我想要結束的是我可以稍后在程式中參考的東西,以決定是否根據類 ID 過濾掉影像的給定區域。
我想過濾掉類的“黑名單”(例如類 ID 0、2、13),并且稍后的分析只考慮未檢測到這些類的影像區域。
我最初設想的解決方案是通過對類 ID 陣列的每個元素執行檢查、檢查類 ID 是否與“黑名單”中的任何元素匹配并將該值更改為 0 或 1 來創建類 ID 陣列的副本基于該檢查。我一直無法讓我的任何首選解決方案起作用,而且我有點擔心逐個元素檢查對于實時性能來說會太慢,特別是如果我提高影像解析度。
作為參考,我從一個陣列開始,如:
class_ID_array = 1 2 3
4 5 6
7 8 9
我想沿著這些行執行一個操作,以期望的_array 格式生成輸出:
desired_array = class_ID_array.copy()
blacklist = [2, 4, 5]
for x in desired_array:
if x is in blacklist:
x = 0
else:
x = 1
desired_array = 1 0 1
0 0 1
1 1 1
這樣做的有效方法是什么?
uj5u.com熱心網友回復:
def operation( a, blacklist ):
s = a.shape
l = np.ndarray.flatten( a )
ol = [ e not in blacklist for e in l ]
return np.reshape( ol, s )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372125.html
