tf.data.Dataset圖像數(shù)據(jù)增廣(更新中)

效果預(yù)覽:


QQ圖片20190820173615.png

隨機(jī)圖片遮擋

    def random_block(x: tf.Tensor, y: tf.Tensor) -> (tf.Tensor, tf.Tensor):
        # 遮擋塊和圖片的比例
        block_ratio = 0.1
        # 遮擋塊顏色
        block_color = np.random.randint(64, 192)
        # channel last
        width, height = np.shape(x)[:2]
        block_width, block_height = int(width * block_ratio), int(height * block_ratio)
        block = np.full(shape=(block_width, block_height, 3), fill_value=block_color)
        start_width_idx = np.random.randint(0, width - block_width)
        start_height_idx = np.random.randint(0, height - block_height)
        x[start_width_idx: start_width_idx + block_width, start_height_idx:start_height_idx + block_height,
        :] = block
        return x, y
    # 這樣使用該方法
    dataset = dataset.map(lambda x, y: tf.cond(tf.random_uniform([], 0, 1) > 0.4,
                                               lambda: tuple(tf.py_func(random_block, [x, y], [tf.uint8, y.dtype])),
                                               lambda: (x, y)))

隨機(jī)hsv

    def color(x: tf.Tensor, label: tf.Tensor) -> (tf.Tensor, tf.Tensor):
        x = tf.image.random_hue(x, 0.05)
        x = tf.image.random_saturation(x, 0.6, 1.6)
        x = tf.image.random_brightness(x, 0.2)
        x = tf.image.random_contrast(x, 0.7, 1.3)
        return x, label

高斯模糊(最蛋疼的方法)

    def blur(x: tf.Tensor, label: tf.Tensor) -> (tf.Tensor, tf.Tensor):

        def gaussian_kernel(size, sigma):
            x_points = np.arange(-(size - 1) // 2, (size - 1) // 2 + 1, 1)
            y_points = x_points[::-1]
            xs, ys = np.meshgrid(x_points, y_points)
            kernel = np.exp(-(xs ** 2 + ys ** 2) / (2 * sigma ** 2)) / (2 * np.pi * sigma ** 2)
            return kernel / kernel.sum()

        kernel = gaussian_kernel(size=5, sigma=2.5)
        kernel = kernel[:, :, np.newaxis, np.newaxis]
        x = tf.cast(x, tf.float32)
        xr, xg, xb = tf.expand_dims(tf.expand_dims(x[:, :, 0], -1), 0), tf.expand_dims(
            tf.expand_dims(x[:, :, 1], -1), 0), tf.expand_dims(tf.expand_dims(x[:, :, 2],
                                                                              -1), 0)

        xr_blur = tf.nn.conv2d(xr, kernel, strides=[1, 1, 1, 1], padding='SAME')
        xg_blur = tf.nn.conv2d(xg, kernel, strides=[1, 1, 1, 1], padding='SAME')
        xb_blur = tf.nn.conv2d(xb, kernel, strides=[1, 1, 1, 1], padding='SAME')
        xrgb_blur = tf.concat([xr_blur, xg_blur, xb_blur], axis=3)
        xrgb_blur = tf.clip_by_value(xrgb_blur, 0, 255)
        xrgb_blur = tf.cast(tf.squeeze(xrgb_blur), tf.uint8)

        return xrgb_blur, label

高斯模糊(使用tf.py_func調(diào)用普通python方法)

    def blur(x: tf.Tensor, label: tf.Tensor) -> (tf.Tensor, tf.Tensor):
        sigmaX = (1.4 - 1.1) + np.random.random() * 1.1
        sigmaY = (1.4 - 1.1) + np.random.random() * 1.1
        blurred = cv2.GaussianBlur(x, ksize=(0, 0), sigmaX=sigmaX, sigmaY=sigmaY, borderType=cv2.BORDER_DEFAULT)
        return blurred, label
    # 然后在map時(shí)门怪,這樣隨機(jī)高斯模糊處理:
    dataset = dataset.map(lambda x, y: tf.cond(tf.random_uniform([], 0, 1) > 0.7,
                                               lambda: tuple(tf.py_func(blur, [x, y], [tf.uint8, y.dtype])),
                                               lambda: (x, y)))

高斯噪音

    def noise(image: tf.Tensor, label: tf.Tensor) -> (tf.Tensor, tf.Tensor):
        noise = tf.random_normal(dtype=tf.float32, shape=(img_size, img_size, 3), stddev=8.0, mean=0.0)
        noise_img = tf.cast(image, tf.float32) + noise
        noise_img = tf.clip_by_value(noise_img, 0, 255)
        return tf.cast(noise_img, tf.uint8), label

圖片旋轉(zhuǎn)(使用tf.py_func調(diào)用普通函數(shù))

    def random_rotate(x: tf.Tensor, y: tf.Tensor) -> (tf.Tensor, tf.Tensor):
        from scipy import misc
        angle = np.random.uniform(low=-10.0, high=10.0)
        return misc.imrotate(x, angle, 'bicubic'), y
    # map時(shí)懂更,這樣處理
    dataset = dataset.map(lambda x, y: tf.cond(tf.random_uniform([], 0, 1) > 0.7,
                                               lambda: tuple(tf.py_func(random_rotate, [x, y], [tf.uint8, y.dtype])),
                                               lambda: (x, y)))

按概率隨機(jī)增廣圖片

    augmentations = [noise, color]
    for f in augmentations:
        dataset = dataset.map(
            lambda x, y: tf.cond(tf.random_uniform([], 0, 1) > 0.7, lambda: f(x, y), lambda: (x, y)),
            num_parallel_calls=4)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痪蝇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乃正,更是在濱河造成了極大的恐慌,老刑警劉巖婶博,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮具,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凡人,警方通過(guò)查閱死者的電腦和手機(jī)名党,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挠轴,“玉大人传睹,你說(shuō)我怎么就攤上這事“痘蓿” “怎么了欧啤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵睛藻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我堂油,道長(zhǎng)修档,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任府框,我火速辦了婚禮吱窝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迫靖。我一直安慰自己院峡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布系宜。 她就那樣靜靜地躺著照激,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盹牧。 梳的紋絲不亂的頭發(fā)上俩垃,一...
    開(kāi)封第一講書(shū)人閱讀 52,166評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音汰寓,去河邊找鬼口柳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛有滑,可吹牛的內(nèi)容都是我干的跃闹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼毛好,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼望艺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肌访,我...
    開(kāi)封第一講書(shū)人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤找默,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后吼驶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惩激,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年旨剥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咧欣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轨帜,死狀恐怖魄咕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚌父,我是刑警寧澤哮兰,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布毛萌,位于F島的核電站,受9級(jí)特大地震影響喝滞,放射性物質(zhì)發(fā)生泄漏阁将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一右遭、第九天 我趴在偏房一處隱蔽的房頂上張望做盅。 院中可真熱鬧,春花似錦窘哈、人聲如沸吹榴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)图筹。三九已至,卻和暖如春让腹,著一層夾襖步出監(jiān)牢的瞬間远剩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工骇窍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓜晤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓像鸡,卻偏偏與公主長(zhǎng)得像活鹰,于是被迫代替她去往敵國(guó)和親哈恰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子只估,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359