def submission(pklpath): xdf = pd.read_csv("../../data/train/Annotations/train.csv") trainKeys = xdf.keys() testdf = pd.read_csv("../../data/test/test.csv") print len(testdf), " samples in test.csv" mdict = dict() for xfile in os.listdir(pklpath): if xfile.endswith('.pkl'): category = xfile.strip().split('.')[0] pkl = open(os.path.join(pklpath, xfile)) mdict[category] = pickle.load(pkl) print testdf.keys() print mdict.keys() submissionDf = pd.DataFrame(columns=trainKeys, index=np.arange(testdf.shape[0])) submissionDf = submissionDf.fillna(value='-1_-1_-1') submissionDf['image_id'] = testdf['image_id'] submissionDf['image_category'] = testdf['image_category'] for _index, _row in submissionDf.iterrows(): image_id = _row['image_id'] image_category = _row['image_category'] kplst = get_kp_from_dict(mdict, image_category, image_id) fill_dataframe(kplst, getKpKeys('all')[1:], _row, image_category) print len(submissionDf), "save to ", os.path.join(pklpath, 'submission.csv') submissionDf.to_csv(os.path.join(pklpath, 'submission.csv'), index=False)
def visualize_keypoint(imageName, category, dtkp): cvmat = cv2.imread(imageName) for key in getKpKeys(category)[1:]: index = get_kp_index_from_allkeys(key) _kp = dtkp[index] cv2.circle(cvmat, center=(_kp.x, _kp.y), radius=7, color=(1.0, 0.0, 0.0), thickness=2) cv2.imshow('demo', cvmat) cv2.waitKey()
def _prcoess_img(self, dfrow, inputSize, rotateFlag, flipFlag, cropFlag, nobgFlag): mlist = dfrow[getKpKeys(self.category)] imgName, kpStr = mlist[0], mlist[1:] # read kp annotation from csv file kpAnnlst = list() for _kpstr in kpStr: _kpAn = KpAnno.readFromStr(_kpstr) kpAnnlst.append(_kpAn) assert (len(kpAnnlst) == getKpNum(self.category)), str(len(kpAnnlst))+" is not the same as "+str(getKpNum(self.category)) xcvmat = cv2.imread(os.path.join(self.train_img_path, imgName)) if xcvmat is None: return None, None #flip as first operation. # flip image if random.choice([0, 1]) and flipFlag: xcvmat, kpAnnlst = self.flip_image(xcvmat, kpAnnlst) #if cropFlag: # xcvmat, kpAnnlst = crop_image(xcvmat, kpAnnlst, 0.8, 0.95) # pad image to 512x512 paddedImg, kpAnnlst = pad_image(xcvmat, kpAnnlst, inputSize[0], inputSize[1]) assert (len(kpAnnlst) == getKpNum(self.category)), str(len(kpAnnlst)) + " is not the same as " + str( getKpNum(self.category)) # output ground truth heatmap is 256x256 trainGtHmap = self.__generate_hmap(paddedImg, kpAnnlst) if random.choice([0,1]) and rotateFlag: rAngle = np.random.randint(-1*40, 40) rotatedImage, _ = rotate_image(paddedImg, list(), rAngle) rotatedGtHmap = rotate_mask(trainGtHmap, rAngle) else: rotatedImage = paddedImg rotatedGtHmap = trainGtHmap # resize image resizedImg = cv2.resize(rotatedImage, inputSize) resizedGtHmap = cv2.resize(rotatedGtHmap, (inputSize[0]//2, inputSize[1]//2)) return normalize_image(resizedImg), resizedGtHmap
def _get_groundtruth_kpAnno(self, dfrow): mlist = dfrow[getKpKeys(self.category)] imgName, kpStr = mlist[0], mlist[1:] # read kp annotation from csv file kpAnnlst = [KpAnno.readFromStr(_kpstr) for _kpstr in kpStr] return kpAnnlst