<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          輕松學(xué)Pytorch-自定義數(shù)據(jù)集制作與使用

          共 5356字,需瀏覽 11分鐘

           ·

          2022-10-15 05:18

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)


          大家好,這是輕松學(xué)Pytorch系列的第六篇分享,本篇你將學(xué)會(huì)如何從頭開始制作自己的數(shù)據(jù)集,并通過(guò)DataLoader實(shí)現(xiàn)加載。本文以人臉Landmard五點(diǎn)的數(shù)據(jù)集標(biāo)定與之制作為例來(lái)說(shuō)明pytorch中如何實(shí)現(xiàn)自定義數(shù)據(jù)集讀取與加載。

          數(shù)據(jù)來(lái)源

          首先要實(shí)現(xiàn)人臉landmark五點(diǎn)的數(shù)據(jù)標(biāo)定,就得找到人臉數(shù)據(jù),我使用的人臉數(shù)據(jù)是celebA數(shù)據(jù)集,大概有20W張多點(diǎn),我從中選擇了1000張,然后通過(guò)OpenCV寫了個(gè)程序?qū)θ四樳M(jìn)行了簡(jiǎn)單的裁剪。然后還選擇了一個(gè)音樂(lè)MV(上次就被人打call的宇少)通過(guò)opencv實(shí)現(xiàn)采集了一些人臉數(shù)據(jù),這個(gè)數(shù)據(jù)的好處是有不同的光照,各種角度,豐富了數(shù)據(jù)的多樣性。這些數(shù)據(jù)加起來(lái)1500張左右。圖示如下:

          Landmark標(biāo)定

          我這里選擇的對(duì)得到1500張圖像做數(shù)據(jù)標(biāo)注,剛開始的選擇標(biāo)定工具都讓我頭疼,這個(gè)是我第一次標(biāo)定一系列的點(diǎn),經(jīng)過(guò)一番嘗試之后,終于發(fā)現(xiàn)一個(gè)很好用的工具,同時(shí)支持人臉檢測(cè)與五點(diǎn)標(biāo)定。貼上地址:

          https://github.com/Mukosame/Face-Annotation-Tool

          廢話也不多說(shuō)了,只說(shuō)一句話,簡(jiǎn)單靠譜,然后我就對(duì)這個(gè)1500張圖像進(jìn)行五點(diǎn)標(biāo)定,本來(lái)我可以不這么干的,我可以用其它的模型來(lái)直接找這些圖像的landmark五點(diǎn)然后生成文件即可,但是我還是決定手動(dòng)標(biāo)注一番。結(jié)果讓我眼睛疼了兩天之后,終于給標(biāo)注好拉,發(fā)誓以后再也不干這種活了,我太難了。截圖如下:

          現(xiàn)在自定義數(shù)據(jù)已經(jīng)準(zhǔn)備完畢,下面就應(yīng)該是pytorch登場(chǎng)了。

          自定義數(shù)據(jù)集實(shí)現(xiàn)

          基于Pytorch中的torch.utils.data.Dataset類實(shí)現(xiàn)自定義的FaceLandmarksDataset類,主要是重寫了getitem這個(gè)方法。完整的代碼實(shí)現(xiàn)如下:

           1class FaceLandmarksDataset(Dataset):
          2    def __init__(self, txt_file):
          3        self.transform = transforms.Compose([transforms.ToTensor()])
          4        lines = []
          5        with open(txt_file) as read_file:
          6            for line in read_file:
          7                line = line.replace('\n''')
          8                lines.append(line)
          9        self.landmarks_frame = lines
          10
          11    def __len__(self):
          12        return len(self.landmarks_frame)
          13
          14    def num_of_samples(self):
          15        return len(self.landmarks_frame)
          16
          17    def __getitem__(self, idx):
          18        if torch.is_tensor(idx):
          19            idx = idx.tolist()
          20        contents = self.landmarks_frame[idx].split('\t')
          21        image_path = contents[0]
          22        img = cv.imread(image_path)  # BGR order
          23        h, w, c = img.shape
          24        # rescale
          25        img = cv.resize(img, (6464))
          26        img = (np.float32(img) /255.0 - 0.5) / 0.5
          27        landmarks = np.zeros(10, dtype=np.float32)
          28        for i in range(1, len(contents), 2):
          29            landmarks[i - 1] = np.float32(contents[i]) / w
          30            landmarks[i] = np.float32(contents[i + 1]) / h
          31        landmarks = landmarks.astype('float32').reshape(-12)
          32        # H, W C to C, H, W
          33        img = img.transpose((201))
          34        sample = {'image': torch.from_numpy(img), 'landmarks': torch.from_numpy(landmarks)}
          35        return sample

          加載與顯示

          實(shí)現(xiàn)了自定義的Dataset類之后,就可以通過(guò)自定義的Dataset來(lái)構(gòu)建一個(gè)DataLoader對(duì)象實(shí)現(xiàn)數(shù)據(jù)的加載跟批次處理,對(duì)自定義的dataset完成測(cè)試。代碼如下:

           1ds = FaceLandmarksDataset("D:/facedb/Face-Annotation-Tool/landmark_output.txt")
          2for i in range(len(ds)):
          3    sample = ds[i]
          4    print(i, sample['image'].size(), sample['landmarks'].size())
          5    if i == 3:
          6        break
          7
          8dataloader = DataLoader(ds, batch_size=4, shuffle=True, num_workers=4)
          9# data loader
          10for i_batch, sample_batched in enumerate(dataloader):
          11    print(i_batch, sample_batched['image'].size(), sample_batched['landmarks'].size())

          運(yùn)行顯示如下:

          關(guān)注我們,后臺(tái)輸入關(guān)鍵字 landmark 獲取本人辛苦標(biāo)注的數(shù)據(jù)集。

          記得點(diǎn)贊支持,這是本人繼續(xù)寫下去的動(dòng)力!

          好消息!

          小白學(xué)視覺知識(shí)星球

          開始面向外開放啦??????

          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。
          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。
          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲 欧美 中文 日韩a v一区 | 中文8aⅴ在线免费观看视频 | 青青草原在线视频精品 | 爆肏女主播 | 国产欧美熟妇另类久久久 |