±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÈçºÎÓ¦ÓÃAI¼¼Êõͨ¹ýͼƬÕÒbugµÄһЩ²âÊÔʵ¼ù£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn £¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
1.ǰÑÔ
ÏÐÓãÖÊÁ¿ÍŶÓÒ»Ö±ÖÂÁ¦ÓÚ½»¸¶¸ßÖÊÁ¿µÄapp¸øÓû§£¬µ±Ç°Ëæ×ÅAI¼¼Êõ²»¶Ï·¢Õ¹£¬TensorFlow´óÈÈ£¬Ò²¸ø²âÊÔÊֶδøÀ´Á˸ü¶àÖÖ¿ÉÄÜ¡£
2.Ä£ÐÍÑ¡ÐÍ
²»ÐèÒªÀí½âÒµÎñ¾ÍÄÜ·¢ÏÖµÄbugÖ÷ÒªÓÐÕûÌåÒ³Ãæ¿Õ°×¡¢²¿·Ö¿Ø¼þÏÔʾÒì³£ºÍÎı¾Òì³£Õ⼸Àà¡£¶ÔÓÚÕûÌå¿Õ°×ͼƬ£¬·¢ÏÖËüÃǵĹ²Í¬ÌØÕ÷ÊDZȽÏÃ÷ÏÔ£º´óÃæ»ý¿Õ°×»òÕßÖÐÐÄÇøÓò±¨´í£¬ËùÒÔÑ¡ÔñʹÓÃTensorFlow´î½¨µÄ¼òµ¥CNNÄ£ÐÍÀ´Ê¶±ðÕý³£Í¼Æ¬ºÍÒ쳣ͼƬ¡£¶ÔÓÚÎı¾Òì³£ÕâÀà°üº¬ÂÒÂëµÄͼƬ£¬ÔòÊÇÓÃOCR+LSTM½¨Á¢ÁËÒ»¸ö¼òµ¥µÄºº×Öʶ±ðÄ£ÐÍÀ´Ê¶±ðͼƬÖеÄÎı¾ÄÚÈݺóÅжÏÊÇ·ñ´æÔÚÂÒÂë¡£
ѵÁ·ÒÔÉÏÄ£Ð͵ÄÑù±¾ÔòÀ´Ô´ÓÚbugÀúÊ·½ØÍ¼ºÍmockµÄÕýÏòÊý¾ÝÑù±¾¡£
3.Ä£ÐÍÖØÑµÁ·¡ª¡ªÌá¸ßÄ£ÐÍʶ±ð׼ȷÂÊ
³õʼģÐÍÔÚѵÁ·Ê±Ñù±¾ÓÐÏÞ£¬µ«Ëæ×Åapp²»Í£¸üеü´ú£¬Í¼Æ¬¼ì²âÑù±¾ÊýÁ¿µÄÖð½¥Ôö¶à£¬»á³öÏÖijЩÐÂÒ³Ãæ±»´íÎó·ÖÀ࣬Ҫ½â¾öÕâÀàÎó±¨ÎÊÌ⣬ؽÐè¼ÓÈëÄ£ÐÍÖØÑµÁ·¡£
ÏÔÈ»¿¿ÈËÈâÆô¶¯Ä£ÐÍÖØÑµÁ·²¢Ìæ»»¾ÉÄ£Ðͳɱ¾Ì«¸ß£¬ËùÒÔÔÚǰ¶ËʵÏÖÁ˸ö¹´Ñ¡Í¼Æ¬È¥ÖØÑµÁ·µÄÈë¿Ú£¬Í¨¹ýJenkins¶¨Ê±ÈÎÎñ£¬¶ÁÈ¡ËùÓÐÖØÑµÁ·Í¼Æ¬²¢Ö´ÐÐÖØÑµÁ·½Å±¾£¬²¢°Ñ¾ÉÄ£ÐÍÌæ»»³ÉÐÂÉú³ÉµÄ¼´¿É¡£¾¹ý¼¸ÂÖ×Ô¶¯µü´úºóÄ£ÐÍʶ±ð׼ȷÂÊÓдó·ùÌáÉý¡£

4.ͼƬ´¦Àí¡ª¡ªÌáÉý½á¹ûµÄÈ˹¤Õç±ðЧÂÊ
4.1ÌØÊâ½ØÍ¼
ÓÐЩ½ØÍ¼¿ÉÄÜÊÇ´æÔÚ´óÃæ»ý¿Õ°×£¬µ«´ÓÒµÎñ½Ç¶ÈÉÏÀ´ËµÕâÀàͼƬÊÇÕýÈ·µÄ£¬±ÈÈçËÑË÷ÖмäÒ³¡£´ËÀàÈô²»´¦Àí£¬Ã¿´Î¶¼»á±»Ê¶±ðΪÒ쳣ͼƬÉϱ¨£¬ÀË·Ñ´ó¼ÒcheckµÄʱ¼ä£¬Èô·ÅÈëÄ£ÐͽøÐÐÖØÑµÁ·ÓÖÓе¼ÖÂÄ£ÐͲ»ÊÕÁ²µÄ·çÏÕ¡£ÎªÁ˽â¾öÕâÀàͼƬ£¬Î¬»¤ÁËÒ»¸öͼ¿â£¬¶ÔÄ£ÐÍʶ±ðΪÒì³£µÄͼƬ£¬»áÓëͼ¿âÖеÄͼƬ½øÐжԱȣ¬Èç¹ûÓëͼ¿âÖÐÈÎÒâÒ»ÕÅÏàËÆ¶È³¬¹ýÉ趨ãÐÖµ£¬¼´ÈÏΪ¸ÃͼƬ¿É±»ºöÂÔ²»ÓÃÉϱ¨¡£

4.2 Í¼Æ¬È¥ÖØ
Ŀǰ±éÀú½ØÍ¼ÈÎÎñΪÁ˱£Ö¤Ò³ÃæÉÏËùÓÐÔªËØ¶¼È¡µ½£¬µ¥´Î±éÀúÈÎÎñ»áÖÁÉÙ·ÃÎÊͬһ¸öÒ³ÃæÁ½´Î£»Í¬Ê±±éÀúʱ£¬ÎªÁË·½±ãÒ³ÃæÉÏÏÂÎÄ·ÖÎö£¬»á¶Ôµã»÷ÔªËØÓúì¿ò±ê¼Ç¡£Õâ´øÀ´ÁËÒ»¸öÎÊÌ⣺´ýʶ±ðͼƬ¼¯ÖУ¬Í¬Ò»¸öÒ³Ãæ»áÓжàÕÅÖØ¸´½ØÍ¼¡¢ÇÒÍ¬Ò»Ò³ÃæÉÏ¿ÉÄÜ»áÔÚ²»Í¬µÄµØ·½Óкì¿ò±ê¼Ç¡£È˹¤¼ìÑé´óÁ¿Öظ´Í¼Æ¬Ê¶±ð½á¹ûÄÑÃâÊÓ¾õÆ£ÀÍ£¬ËùÒÔÕ¹Ê¾È¥ÖØºóµÄ½á¹û¿ÉÒÔ´ó´óÌáÉýÈ˹¤Õç±ðЧÂÊ£¬¼õÉٳɱ¾¡£
4.2.1½â¾ö°ì·¨
ͼƬÊýÁ¿´ó£¬ÇÒ²»È·¶¨Õâ´Î±éÀú½ØÍ¼Á˶àÉÙ²»Í¬Ò³ÃæÊ±£¬¿ÉÒÔʹÓòã´Î¾ÛÀàËã·¨½â¾öÕâ¸öÎÊÌâ¡£±¾ÎIJÉÓõÄÊÇ×Ôµ×ÏòÉϵľÛÀà·½·¨£¬¼´ÏȽ«Ã¿Ò»ÕŽØÍ¼·Ö±ð¿´³ÉÒ»¸ö´Ø£¬È»ºóÕÒ³ö¾àÀë×îСµÄÁ½¸ö´Ø½øÐкϲ¢£¬²»¶ÏÖØ¸´µ½Ô¤ÆÚ´Ø»òÕßÂú×ãÆäËûÖÕÖ¹Ìõ¼þ¡£
4.2.2ʵÏÖ[2]
1£©¼ÆËãͼƬ֮¼äµÄ¾àÀë
ÏȽ«Í¼Æ¬×ª»»³Éw*h*3άÏòÁ¿£¬°ÑÏòÁ¿¼äµÄŷʽ¾àÀë×÷ΪͼƬ֮¼äµÄ¾àÀ룬ͼƬԽÏàËÆ£¬¾àÀëԽС¡£
def get_pic_array(url,w,h):
file = cStringIO.StringIO(urllib2.urlopen(url).read())
img = Image.open(file) # PIL´ò¿ªÍ¼Æ¬
img=img.resize((w, h))
try:
r, g, b, k = img.split() # rgbͨµÀ·ÖÀ룬¼æÈÝ4ͨµÀÇé¿ö
except ValueError:
r, g, b = img.split()
# »ñµÃ³¤¶ÈΪ(w*h)µÄһάÊý×é
r_arr = np.array(r).reshape(w * h)
g_arr = np.array(g).reshape(w * h)
b_arr = np.array(b).reshape(w * h)
#½«RGBÈý¸öһάÊý×é(w*h)Æ´½Ó³ÉÒ»¸öһάÊý×é(w*h*3)
image_arr = np.concatenate((r_arr, g_arr, b_arr))
return image_arr |
Ò»´Îapp±éÀúµÃµ½µÄnÕÅͼƬҪÍê³É¾ÛÀ࣬Ïȵ¥ÕÅͼƬ°´ÕÕÉÏÊö´¦Àíºó£¬ÔÙÕûÌ寴½Ó³É n*(w*h*3)µÄ¾ØÕó£¬×öΪÑù±¾¼¯¡£
2£©¼ÆËã´ØÖ®¼ä¾àÀëµÄ·½·¨
single£ºÁ½¸ö´ØÖоàÀë×î½üµÄÁ½¸öÑù±¾µÄ¾àÀë×÷ΪÕâ´Ø¼äµÄ¾àÀë
complete£ºÁ½¸ö´ØÖоàÀë×îÔ¶µÄÁ½¸öÑù±¾µÄ¾àÀë×÷ΪÕâ´Ø¼äµÄ¾àÀë
average£ºÁ½¸ö´Ø¼äÑù±¾Á½Á½¾àÀëµÄƽ¾ùÖµ¾ö¶¨£¬½â¾ö¸ö±ðÒì³£Ñù±¾¶Ô½á¹û¶ÔÓ°Ï죬µ«¼ÆËãÁ¿±È½Ï´ó
ward£ºÀë²îƽ·½ºÍ£¬¼ÆË㹫ʽ½Ï¸´ÔÓ£¬ÒªÏëÁ˽â¾ßÌ弯Ë㹫ʽºÍÆäËû¼ÆËã·½·¨¼û¼ÆËã´ØÖ®¼ä¾àÀëµÄ·½·¨¡£
ͨ¹ý³¢ÊÔºó·¢ÏÖwardЧ¹û±È½ÏºÃ£¬ËùÒÔ×îÖÕÑ¡ÓÃward×÷Ϊ¼ÆËã´ØÖ®¼ä¾àÀëµÄ·½·¨¡£
Ö´ÐÐÉÏÊöÓï¾äºó£¬¾ÛÀàÍê³É¡£
3£©ÁÙ½ç¾àÀëÑ¡Ôñ
¸ÃÖµÖ±½ÓÓ°Ïì¾ÛÀàµÄЧ¹û£¬ÁÙ½ç¾àÀë¹ýС£¬»áµ¼ÖÂijЩÏàËÆÍ¼Æ¬²»Äܾۼ¯µ½Ò»À࣬ÁÙ½ç¾àÀë¹ý´ó£¬ÓֻᵼÖ²»ÊÇͬһ¸öÒ³ÃæµÄͼƬ¾ÛÔÚÒ»Æð£¬ËùÒÔÈçºÎѡһ¸öºÏÊʵľàÀë·Ç³£ÖØÒª¡£
ʵÑé·¢ÏÖ£¬Èç¹ûͼƬ±»Ò³ÃæÒ쳣ģÐÍʶ±ðΪÒ쳣ͼƬʱ£¬ÍùÍùÕâÀàͼƬ֮¼äµÄÏàËÆÐÔÔ½¸ß£¬ÎªÁ˲»´íÎó¾ÛÀ಻ͬµÄÒì³£Ò³Ãæ£¬·Ö±ð¶Ôʶ±ðΪÒì³£ºÍÕý³£µÄͼƬ½øÐоÛÀ࣬²¢ÇÒÒì³£ÀàµÄÁÙ½ç¾àÀë»áÉèÖøüСһµã¡£
5.×ܽáÓëÕ¹Íû
Ŀǰ¸Ã¹¤¾ß¶ÔÕûÌåÒ³ÃæÒì³£µÄʶ±ðЧ¹û½ÏºÃ£¬Îı¾Òì³£µÄʶ±ð׼ȷÂÊÒ²ÔڷḻÑù±¾µÄ¹ý³ÌÖв»¶ÏÌáÉý¡£


½ÓÏÂÀ´ÎÒÃǻἯ³ÉLabelImg¹¤¾ß£¬ÓÃTensorFlow´î½¨SSDÄ£ÐÍÀ´Ê¶±ð¿Ø¼þÒì³£µÄͼƬ£¬´ËÍâÔªËØ£¯ÎÄ×Ö²¼¾Ö´íÂÒµÈÎÊÌâÒ³ÃæÊ¶±ð¡¢Ò³Ãæ²Ù×÷Ô¤ÆÚ½á¹ûʶ±ðÒ²ÔÚ²»¶Ï³¢ÊÔÖС£Ê¹ÓÃͼƬ´¦ÀíºÍ´íÎóʶ±ð¼¼Êõ£¬×÷ΪÖÊÁ¿±£Ö¤µÄÒ»ÖÖ·½·¨£¬ÎÒÃÇ»á³ÖÐøÌ½Ë÷ÏÂÈ¥¡£
|