datasets.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:Cascade-CNN-Face-Detection 作者: gogolgrind 项目源码 文件源码
def get_fddb_face_data(k = 12, on_drive = False):
        root = 'F:\\datasets\\image_data_sets\\faces\\FDDB\\'
        iroot = os.path.join(root,'originalPics')
        eroot = os.path.join(root,'FDDB-folds')
        pattern = '-ellipseList.txt'
        c = 0
        X,y = [],[]
        for path, subdirs, files in os.walk(eroot):
            for fname in files:
                if fname.find(pattern) > 0:
                    fpath = os.path.join(path,fname)
                    print(fpath)
                    with open(fpath) as f:
                        lines = sp.array(f.readlines())
                        paths_indx = sp.where([line.find('/') > 0 for line in lines])[0]
                        counts_indx = paths_indx + 1

                        paths = sp.array([e.strip() for e in lines[paths_indx]])
                        ellipces = []
                        for i in counts_indx:
                            cnt = int(lines[i])
                            ellipces.append(lines[i+1:i+cnt+1])
                        ellipces = [ [ [float(num) for num in line.split()[:-1]] for line in e] for e in ellipces]
                        ellipces = sp.array(ellipces)
                        for iname,ells in zip(paths[:],ellipces[:]):
                            ppath = os.path.join(iroot,iname.replace('/','\\')) + '.jpg'
                            file_id = iname.split('/')[-1]

                            frame = fr.get_frame(ppath)
                            for item in ells:
                                ra,rb,theta,x,y = item
                                x1,y1,x2,y2 = util.ellipse2bbox(a = ra, b = rb, angle = theta, cx = x, cy = y)
                                x = x1
                                y = y1
                                h = abs(y2-y1)
                                w = abs(x2-x1)
                                print(file_id,(y,x,h,w))

                                non_neg = x > 0 and y > 0
                                if not non_neg:
                                    continue
                                if on_drive:   
                                    for item in Datasets.data_augmentation(frame,y,x,w,h):
                                        fr.write_frame('F:\\train_data\\pos\\' + str(c) + '_' + str(file_id) + '_pos',item)
                                        c +=1
                                else:
                                    pass
        X = sp.array(X)
        y = sp.ones(len(X))
        return X,y
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号