室内导盲增加数据集
This commit is contained in:
@@ -30,24 +30,27 @@ CLASS_CORRIDOR = 1
|
||||
CLASS_SIDEWALK = 2
|
||||
|
||||
# 静态障碍物 (家具 + 杂物)
|
||||
OBSTACLE_CLASSES = {3, 4, 5, 11, 12, 14, 15, 16, 17, 18, 19}
|
||||
OBSTACLE_CLASSES = {3, 4, 5, 11, 12, 14, 15, 16, 17, 18}
|
||||
CLASS_CHAIR = 3
|
||||
CLASS_TABLE = 4
|
||||
CLASS_SOFA_BED = 5
|
||||
CLASS_CABINET = 11
|
||||
CLASS_TRASH_CAN = 12
|
||||
CLASS_CUP_BOTTLE = 14
|
||||
CLASS_BAG = 15
|
||||
CLASS_ELECTRONICS = 16
|
||||
CLASS_PLANT = 17
|
||||
CLASS_CLOCK = 18
|
||||
CLASS_OBSTACLE = 19
|
||||
CLASS_TRASH_CAN = 12
|
||||
# CLASS_CUP_BOTTLE = 14 (Removed)
|
||||
CLASS_BAG = 14
|
||||
CLASS_ELECTRONICS = 15
|
||||
CLASS_PLANT = 16
|
||||
CLASS_OBSTACLE = 17
|
||||
CLASS_APPLIANCE = 18
|
||||
|
||||
# 兴趣点
|
||||
POI_CLASSES = {6, 7, 8} # door, elevator, stairs
|
||||
POI_CLASSES = {6, 7, 8, 19, 20} # door, elevator, stairs, toilet, sink
|
||||
CLASS_DOOR = 6
|
||||
CLASS_ELEVATOR = 7
|
||||
CLASS_STAIRS = 8
|
||||
CLASS_TOILET = 19
|
||||
CLASS_SINK = 20
|
||||
|
||||
# 边界
|
||||
BOUNDARY_CLASSES = {9, 10} # wall, window
|
||||
@@ -63,22 +66,31 @@ CLASS_NAMES = {
|
||||
3: 'chair', 4: 'table', 5: 'sofa_bed',
|
||||
6: 'door', 7: 'elevator', 8: 'stairs',
|
||||
9: 'wall', 10: 'window', 11: 'cabinet',
|
||||
12: 'trash_can', 13: 'person', 14: 'cup_bottle',
|
||||
15: 'bag', 16: 'electronics', 17: 'plant',
|
||||
18: 'clock', 19: 'obstacle'
|
||||
12: 'trash_can', 13: 'person',
|
||||
14: 'bag', 15: 'electronics', 16: 'plant',
|
||||
17: 'obstacle', 18: 'appliance',
|
||||
19: 'toilet', 20: 'sink',
|
||||
21: 'tableware'
|
||||
}
|
||||
|
||||
|
||||
# 中文名称(用于语音)
|
||||
CLASS_NAMES_CN = {
|
||||
0: '地面', 1: '走廊', 2: '人行道',
|
||||
3: '椅子', 4: '桌子', 5: '沙发',
|
||||
6: '门', 7: '电梯', 8: '楼梯',
|
||||
9: '墙壁', 10: '窗户', 11: '柜子',
|
||||
12: '垃圾桶', 13: '行人', 14: '杯子瓶子',
|
||||
15: '包', 16: '电子设备', 17: '绿植',
|
||||
18: '时钟', 19: '障碍物'
|
||||
12: '垃圾桶', 13: '行人',
|
||||
14: '包', 15: '电子设备', 16: '绿植',
|
||||
17: '障碍物', 18: '家电',
|
||||
19: '卫生间', 20: '洗手台',
|
||||
21: '餐具'
|
||||
}
|
||||
|
||||
# 物品类 (不播报,除非寻找模式)
|
||||
ITEM_CLASSES = {21}
|
||||
CLASS_TABLEWARE = 21
|
||||
|
||||
# ========== 配置参数 ==========
|
||||
CONF_THRESHOLD = float(os.getenv('INDOOR_CONF_THRESHOLD', '0.25'))
|
||||
WALKABLE_MIN_AREA = int(os.getenv('INDOOR_WALKABLE_MIN_AREA', '3000'))
|
||||
@@ -259,10 +271,15 @@ class IndoorNavigator:
|
||||
masks = r0.masks.data.cpu().numpy()
|
||||
boxes = r0.boxes
|
||||
|
||||
for i, (mask, cls_id, conf) in enumerate(zip(masks, boxes.cls, boxes.conf)):
|
||||
cls_id = int(cls_id.item())
|
||||
conf_val = float(conf.item())
|
||||
|
||||
# 过滤物品类 (默认不参与导航逻辑,防止刷屏)
|
||||
if cls_id in ITEM_CLASSES:
|
||||
# 可以选择存入特定的 items 列表供"找东西"功能使用
|
||||
# 这里暂时忽略,避免干扰避障
|
||||
continue
|
||||
|
||||
# 调整 mask 尺寸
|
||||
mask_resized = cv2.resize(mask, (w, h), interpolation=cv2.INTER_NEAREST)
|
||||
mask_bin = (mask_resized > 0.5).astype(np.uint8)
|
||||
@@ -430,8 +447,8 @@ class IndoorNavigator:
|
||||
if cy > h * 0.5: # 比较近
|
||||
return f"注意前方有{name_cn}"
|
||||
|
||||
# 门/电梯提示
|
||||
elif cls_id in (CLASS_DOOR, CLASS_ELEVATOR):
|
||||
# 门/电梯/卫生间/洗手台提示
|
||||
elif cls_id in (CLASS_DOOR, CLASS_ELEVATOR, CLASS_TOILET, CLASS_SINK):
|
||||
if cy > h * 0.3: # 在视野内
|
||||
position = "左侧" if cx < w * 0.4 else ("右侧" if cx > w * 0.6 else "前方")
|
||||
return f"{position}有{name_cn}"
|
||||
|
||||
Reference in New Issue
Block a user