aiotgroup / Person-in-WiFi-3D-repo

Apache License 2.0
13 stars 1 forks source link

Dimension of preprocessed CSI data ? #2

Open kriskrisliu opened 3 months ago

kriskrisliu commented 3 months ago

Interesting work! Thank you for sharing the code. However, the training data is not provided in this repo or in your project page. Would you please provide some typical training data? Actuatually I'm very confused about the dimension of the CSI data feed into the model.

    # in WifiPoseDataset
    def get_item_single_frame(self,index): 
        # some codes ...
        csi_amp = self.dwt_amp(csi)
        csi_ph = self.phase_deno(csi)
        csi_ph = np.angle(csi_ph)
        csi = np.concatenate((csi_amp, csi_ph), axis=2)

        csi = torch.FloatTensor(csi).permute(0,1,3,2)

        keypoint = np.array(np.load(keypoint_path))
        keypoint = torch.FloatTensor(keypoint) # keypoint tensor: (N*14*3)

        numOfPerson = keypoint.shape[0]
        gt_labels = np.zeros(numOfPerson, dtype=np.int64) #label (N,)
        gt_bboxes = torch.tensor([])
        gt_areas = torch.tensor([])
        result = dict(img=csi, gt_keypoints=keypoint, gt_labels = gt_labels, gt_bboxes = gt_bboxes, gt_areas = gt_areas, img_name = data_name)
        return result

It seems like that you preprocess the raw CSI and send it to the img port, but I quite don't understand what image-like csi looks like? The last permute operation csi = torch.FloatTensor(csi).permute(0,1,3,2) indicates the processed csi should have 4 dims. What does each dim represent for?

Sincerely looking forward to your reply.

CantWaitY commented 2 months ago

Thanks for your comment. 1:we have released our data both train and test by BaiduNetdisk, please click the 'wifi dataset and pose annotations'. 2:Before the permute operation the shape of csi data is (3×3×60×20,#receiver × #antenna × #subcarrier-features × time ), and then we exchanged the last two dims, as the shape of (#receiver × #antenna ×

time × #subcarrier-features)

CantWaitY commented 2 months ago

in simple terms,MPJPDLE is calculating the mean per joint error of every  dimensions (horizontal, vertical, and depth), the function is show in eq8 in paper, and the code is in “'/opera/dataset/wifi-pose.py" (f calu_mpjpe)

---Original--- From: "xuan @.> Date: Sun, Jul 14, 2024 08:24 AM To: @.>; Cc: @.**@.>; Subject: Re: [aiotgroup/Person-in-WiFi-3D-repo] Dimension of preprocessed CSIdata ? (Issue #2)

Thank you for sharing the code. I just wondering that how you calculated MPJDLE in your code, it seems that I can't find this part.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

xuanLIU1005 commented 2 months ago

in simple terms,MPJPDLE is calculating the mean per joint error of every  dimensions (horizontal, vertical, and depth), the function is show in eq8 in paper, and the code is in “'/opera/dataset/wifi-pose.py" (f calu_mpjpe) ---Original--- From: "xuan @.> Date: Sun, Jul 14, 2024 08:24 AM To: @.>; Cc: @.**@.>; Subject: Re: [aiotgroup/Person-in-WiFi-3D-repo] Dimension of preprocessed CSIdata ? (Issue #2) Thank you for sharing the code. I just wondering that how you calculated MPJDLE in your code, it seems that I can't find this part. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

I want to know how do you get the result in table2 for every joint? Thanks a lot!