ͼÏñÔöÇ¿ÊÇÒ»Öַdz£Ç¿´óµÄ¼¼Êõ£¬Õë¶ÔÏÖÓÐͼÏñÈËΪ´´½¨¸÷Öֱ仯ÒÔÀ©Õ¹Í¼ÏñÊý¾Ý¼¯£¬ÀýÈçËõ·ÅÏÖÓÐͼÏñ¡¢½«ÏÖÓÐͼÏñÐýת¼¸¶È¡¢¼ôÇлò²Ã¼ôͼÏñµÈµÈ¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Ê¹Óà imgaug ¿â̽Ë÷ Python ÖеÄͼÏñÔöÇ¿¼¼Êõ¡£
Éî¶Èѧϰ¾í»ýÉñ¾ÍøÂ磨CNN£©ÐèÒª´óÁ¿Í¼Ïñ²ÅÄÜÓÐЧѵÁ·Ä£ÐÍ¡£Í¨¹ý¸üºÃµÄÔöÇ¿ÓÐÖúÓÚÌá¸ßÄ£Ð͵ÄÐÔÄÜ£¬´Ó¶ø¼õÉÙ¹ý¶ÈÄâºÏ¡£¿ÉÓÃÓÚ·ÖÀàºÍ¶ÔÏó¼ì²âÊý¾Ý¼¯µÄ×îÁ÷ÐеÄÊý¾Ý¼¯¾ßÓÐÊýǧµ½Êý°ÙÍò¸öͼÏñ¡£
¹éÄÉÊÇÖ¸ÔÚÄ£ÐÍѵÁ·ÆÚ¼ä¸ù¾ÝÒÔÇ°´Óδ¼û¹ýµÄÊý¾Ý½øÐÐÆÀ¹ÀÄ£Ð͵ÄÐÔÄܲâÊÔ»òÑéÖ¤¡£ÓÉÓÚ CNN ¾ßÓв»±äÐÔ£¬¼´Ê¹ÔÚ²»Í¬´óС£¬·½Ïò»ò²»Í¬ÕÕÃ÷Ï¿ɼûʱ£¬ËüÒ²¿ÉÒÔ¶Ô¶ÔÏó½øÐзÖÀà¡£Òò´Ë£¬ÎÒÃÇ¿ÉÒÔ»ñȡͼÏñµÄСÐÍÊý¾Ý¼¯£¬²¢Í¨¹ý·Å´ó»òËõС£¬´¹Ö±»òˮƽ·×ªËüÃÇ»ò¸ü¸ÄÁÁ¶ÈÀ´¸Ä±ä¶ÔÏóµÄ´óС¡£ÕâÑù£¬ÎÒÃÇ¿ÉÒÔ´´½¨·á¸»¡¢¶àÑù»¯µÄͼÏñÊý¾Ý¼¯¡£
ͼÏñÔöÇ¿¿ÉÒÔ´ÓһС×éͼÏñÖд´½¨·á¸»¶àÑùµÄͼÏñ¼¯£¬ÒÔ½øÐÐͼÏñ·ÖÀ࣬Ŀ±ê¼ì²â»òͼÏñ·Ö¸î¡£ÔÚ×ÐϸÁ˽âÎÊÌâÓòÖ®ºó£¬ÐèÒª²ÉÓÃÔö¼ÓѵÁ·Êý¾Ý¼¯´óСµÄÔöÇ¿²ßÂÔ¡£
ÔÚÎÒÃÇѵÁ·Ä£ÐÍ֮ǰ£¬¿ÉÒÔ½«Í¼ÏñÔöÇ¿ÓÃ×÷Ô¤´¦Àí¡£
ÔöÇ¿±»ÓÃ×÷Ô¤´¦Àí²½Ö裬ÒÔÔö¼ÓÊý¾Ý¼¯µÄ´óС¡£Í¨³££¬µ±ÎÒÃÇÓÐÒ»¸öСµÄѵÁ·Êý¾Ý¼¯ÒªÀ©Õ¹Ê±£¬±ã¿ÉÒÔÍê³É´Ë²Ù×÷¡£
ÔÚ½ÏСµÄÊý¾Ý¼¯ÉÏÉú³ÉÀ©³äºÜÓаïÖú£¬µ«ÔÚÓ¦ÓÃÓڽϴóµÄÊý¾Ý¼¯Ê±£¬ÎÒÃÇÐèÒª¿¼ÂÇ´ÅÅ̿ռ䡣
¹ËÃû˼Ò壬ÔöÇ¿ÊÇʵʱӦÓõġ£Õâͨ³£ÊÊÓÃÓڽϴóµÄÊý¾Ý¼¯£¬ÒòΪÎÒÃDz»ÐèÒª½«ÔöÇ¿µÄÓ³Ïñ±£´æÔÚ´ÅÅÌÉÏ¡£
ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇÔÚСÅúÁ¿ÖÐÓ¦ÓÃת»»£¬È»ºó½«ÆäÊäÈëÄ£ÐÍ¡£
ÔÚÏßÔöÇ¿Ä£Ðͽ«ÔÚÿ¸öʱÆÚ¿´µ½²»Í¬µÄͼÏñ¡£ÔÚ¡°ÀëÏßÔöÇ¿¡±ÖУ¬ÔöǿͼÏñÊÇѵÁ·¼¯µÄÒ»²¿·Ö£¬Ëü»á¸ù¾ÝʱÆÚÊý¶à´Î²é¿´ÔöǿͼÏñ¡£
¸ÃÄ£ÐÍ¿Éͨ¹ýÔÚÏßÔöÇ¿¸üºÃµØÍƹ㣬ÒòΪËüÔÚͨ¹ýÔÚÏßÊý¾ÝÔöÇ¿½øÐÐѵÁ·ÆÚ¼ä»á¿´µ½¸ü¶àÑù±¾¡£
ÎÒÃǽ«Ê¹Óà imgaug ÀàÀ´ÑÝʾͼÏñÔöÇ¿¡£
ÏÖÔÚ£¬ÎÒÃǽ«Ê¹Óà imgaug ¿â̽Ë÷ÕâЩÊý¾ÝÔöÇ¿¼¼Êõ
imgaug ÊÇÒ»¸öÓÃÓÚͼÏñÔöÇ¿ÒÔ¼°¹Ø¼üµã / µØ±ê£¬±ß½ç¿ò£¬ÈÈͼºÍ·Ö¶ÎͼµÄ¿â¡£
pip?install?imgaug?
ÔÚijЩÇé¿öÏ£¬ÎÒÃÇ»áÓöµ½ Shapely ´íÎó£¬ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔ³¢ÊÔʹÓÃÒÔÏÂÃüÁî
pip?install?imgaug?¡ª?upgrade?¡ª?no-deps?
ÎÒÃǽ«ÅÄÉãÒ»ÕÅͼÏñ£¬²¢Ê¹Óûù±¾µÄÊý¾ÝÔöÇ¿¼¼Êõ¶ÔÆä½øÐÐת»»Êµ¼ù¡£
µ¼ÈëËùÐèµÄ¿â£º
import?imageio??import?imgaug?as?ia??import?imgaug.augmenters?as?iaa??import?numpy?as?np??import?pandas?as?pd??import?matplotlib.pyplot?as?plt??import?matplotlib.patches?as?patches??import?matplotlib??%matplotlib?inline?
ÎÒÃÇʹÓà imageio ÏÔʾÔʼͼÏñ
image?=?imageio.imread(¡°.\car2.jpeg¡±)??ia.imshow(image)?
ÎÒÃÇ¿ÉÒÔͨ¹ýÖ¸¶¨Ðýת½Ç¶ÈÀ´ÐýתͼÏñ¡£ÎÒÃǽ«Í¼ÏñÐýת -50 ¶Èµ½ 30 ¶È
rotate=iaa.Affine(rotate=(-50,?30))??rotated_image=rotate.augment_image(image)??ia.imshow(rotated_image)?
ÎÒÃǽ«´Ó¸ß˹·Ö²¼²ÉÑùµÄ²»Í¬ÔëÉùÖµÌí¼Óµ½Í¼Ïñ¡£
gaussian_noise=iaa.AdditiveGaussianNoise(10,20)??noise_image=gaussian_noise.augment_image(image)??ia.imshow(noise_image)?
ÐÞ¼ô»áɾ³ýͼÏñ²àÃæµÄÏñËØÁÐ / ÐС£ÔÚÏÂÃæµÄʾÀýÖУ¬ÎÒÃǽ«Í¼ÏñµÄÒ»²à²Ã¼ôÁË 30£¥
crop?=?iaa.Crop(percent=(0,?0.3))?#?crop?image??corp_image=crop.augment_image(image)??ia.imshow(corp_image)?
ÉèÖà 0 µ½ 40 ¶È
shear?=?iaa.Affine(shear=(0,40))??shear_image=shear.augment_image(image)??ia.imshow(shear_image)?
ÎÒÃÇ¿ÉÒÔ´¹Ö±»òˮƽ·×ªÍ¼Ïñ¡£Fliplr ˮƽ·×ªÍ¼Ïñ
#flipping?image?horizontally??flip_hr=iaa.Fliplr(p=1.0)??flip_hr_image=?flip_hr.augment_image(image)??ia.imshow(flip_hr_image)?
flip_vr=iaa.Flipud(p=1.0)??flip_vr_image=?flip_vr.augment_image(image)??ia.imshow(flip_vr_image)?
ÎÒÃÇʹÓà GammaContrast ͨ¹ýËõ·ÅÏñËØÖµÀ´µ÷ÕûͼÏñÁÁ¶È¡£ÔÚ gamma =£¨0.5£¬2.0£©·¶Î§ÄÚµÄÖµËƺõÊÇÃ÷Öǵġ£ÎÒÃÇÒ²¿ÉÒÔʹÓà SigmoidContrast »ò LinearContrast À´¸ü¸ÄͼÏñµÄÁÁ¶È
image?=?imageio.imread(¡°.\img?Aug\car2.jpeg¡±)??contrast=iaa.GammaContrast(gamma=2.0)??contrast_image?=contrast.augment_image(image)??ia.imshow(contrast_image)?
ÎÒÃÇ¿ÉÒÔʹÓÃËõ·ÅÀ´·Å´ó»òËõСͼÏñ¡£ÎÒÃÇÒѽ«Í¼ÏñËõ·Åµ½Í¼Ïñ¸ß¶È / ¿í¶ÈµÄ 150£¥ÖÁ 80£¥¡£ÎÒÃÇ¿ÉÒÔ¶ÀÁ¢Ëõ·Åÿ¸öÖá
ÎÒÃÇ»æÖƱ߽ç¿òÒÔ½øÐжÔÏó¼ì²â¡£µ±ÎÒÃÇ·Å´óͼÏñʱ£¬ÎÒÃÇÏ£Íû°üΧºÐÒ²ÏàÓ¦µØ¸üС£
imgaug Ö§³Ö±ß½ç¿ò¡£µ±ÎÒÃÇÐýת£¬¼ôÇлò²Ã¼ôͼÏñʱ£¬¶ÔÏóÖÜΧµÄ±ß½ç¿òÒ²»áÏàÓ¦¸üС£
´Ó imgaug µ¼Èë±ß½ç¿ò
from?imgaug.augmentables.bbs?import?BoundingBox,?BoundingBoxesOnImage?
³õʼ»¯ÔʼͼÏñÖÜΧµÄ±ß½ç¿ò
bbs?=?BoundingBoxesOnImage([??BoundingBox(x1=10,?x2=520,?y1=10,?y2=300)??],?shape=image.shape)?
ÔÚÔʼͼÏñÉÏ·½ÏÔʾ±ß¿ò
ia.imshow(bbs.draw_on_image(image,?size=2))?
ÔÚÏÂÃæµÄ´úÂëÖУ¬ÎÒÃÇʹÓà translate_percentage Òƶ¯Í¼Ïñ£¬À©´ó±ß½ç¿ò²¢½«ÆäÓ¦ÓÃÓÚͼÏñÉÏ
move=iaa.Affine(translate_percent={"x":?0.1},?scale=0.8)??image_aug,?bbs_aug?=?move(image=image,?bounding_boxes=bbs)??ia.imshow(bbs_aug.draw_on_image(image_aug,?size=2))?
±ß¿òÓÐʱ¿ÉÄܻᳬ³öͼÏñ£¬Òò´ËÎÒÃÇÐèÒªÆäËû´úÂëÀ´´¦ÀíÕâÖÖÇé¿ö
ÎÒÃÇÐýתͼÏñ£¬²¢³¢ÊÔÔÚ¶ÔÏóÖÜΧ»æÖƱ߿ò
rotate_bb=iaa.Affine(rotate=(-50,?30))??image_aug,?bbs_aug?=?rotate_bb(image=image,?bounding_boxes=bbs)??ia.imshow(bbs_aug.draw_on_image(image_aug,?size=2))?
±ß½ç¿òµÄ²¿·ÖÔÚͼÏñÍⲿ¡£ÔÚÏÂÃæµÄ´úÂëÖУ¬ÎÒÃǽ«½«±ß¿òÍêÈ«»ò²¿·ÖÒƳöͼÏñ
²Ã¼ô²¿·ÖλÓÚÍⲿµÄ±ß½ç¿ò£¬Ê¹ÆäÍêȫλÓÚͼÏñÄÚ²¿
ÎÒÃÇ´´½¨Ò»¸ö padding º¯Êý£¬ÒÔ 1 ÏñËصİ×É«±ß¿òºÍ 1 ÏñËصĺÚÉ«±ß¿òÌî³äͼÏñ£º
def?pad(image,?by):??image_border1?=?ia.pad(image,?top=1,?right=1,?bottom=1,?left=1,??mode="constant",?cval=255)??image_border2?=?ia.pad(image_border1,?top=by-1,?right=by-1,??bottom=by-1,?left=by-1,??mode="constant",?cval=0)??return?image_border2?
È»ºó£¬ÎÒÃÇÔÚͼÏñÉÏ»æÖƱ߽ç¿ò¡£ÎÒÃÇÊ×ÏȽ«Í¼ÏñƽÃæÀ©Õ¹ BORDER ÏñËØ£¬È»ºó±ê¼ÇͼÏñƽÃæÄڵı߽ç¿ò
def?draw_bbs(image,?bbs,?border):??GREEN?=?[0,?255,?0]??ORANGE?=?[255,?140,?0]??RED?=?[255,?0,?0]??image_border?=?pad(image,?border)??for?bb?in?bbs.bounding_boxes:??if?bb.is_fully_within_image(image.shape):??color?=?GREEN??elif?bb.is_partly_within_image(image.shape):??color?=?ORANGE??else:??color?=?RED??image_border?=?bb.shift(left=border,?top=border)??.draw_on_image(image_border,?size=2,?color=color)??return?image_border?
ÏÖÔÚ£¬ÎÒÃǶÔͼÏñÓ¦ÓÃÏàͬµÄÐýת²¢»æÖƱ߽ç¿ò
rotate=iaa.Affine(rotate=(-50,?30))??image_aug,?bbs_aug?=?rotate(image=image,?bounding_boxes=bbs)??image_after?=?draw_bbs(image_aug,?bbs_aug.remove_out_of_image().clip_out_of_image(),?100)??ia.imshow(image_after)?
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ