原文链接: tf 文字识别 多个文字 data 数据流

上一篇: tf 单个文字识别 data 数据输入

下一篇: vue 俄罗斯方块

两万次训练, 对于这种样式的文字, 已经有了几乎百分之八十的概率识别成功

三万步基本九成左右

使用adam学习率设为0.01 时不太容易收敛, 需要使用小学习率0.001

批次大小也很关键, 太小的话会不容易收敛, 但由于内存限制, 只能使用差不多大小....尽量使用能选择的最大批次在不OOM的情况下

全连接层也可以这样使用, 需要确定最后一个维度的信息

import tensorflow as tf
from tensorflow.contrib import slimx = tf.placeholder(tf.float32, (None, 32, 4))net = slim.fully_connected(x, 64)
print(net.shape)  # (?, 32, 64)for i in tf.global_variables():print(i)# <tf.Variable 'fully_connected/weights:0' shape=(4, 64) dtype=float32_ref>
# <tf.Variable 'fully_connected/biases:0' shape=(64,) dtype=float32_ref>

相比较先展开后接一个全连接再reshape的方式, 参数量少了几个数量级!!!!!

import tensorflow as tf
from tensorflow.contrib import slimx = tf.placeholder(tf.float32, (4, 32, 4))
x = slim.flatten(x)
print(x.shape)  # (4, 128)
net = slim.fully_connected(x, (32 * 64))
print(net.shape)  # (4, 2048)
net = tf.reshape(net, (4, 32, 64))
print(net.shape)  # (4, 32, 64)for i in tf.global_variables():print(i)# <tf.Variable 'fully_connected/weights:0' shape=(128, 2048) dtype=float32_ref>
# <tf.Variable 'fully_connected/biases:0' shape=(2048,) dtype=float32_ref>

完整代码

# encoding:utf-8
import tensorflow as tf
import numpy as np
from tensorflow.contrib import slim
from captcha.image import ImageCaptcha
from PIL import Image
import matplotlib.pyplot as plt
import timeTRAIN_STEP = 1000000
SHOW_STEP = 500
SAVE_STEP = 20
LR = 0.001
SAVE_PB_PATH = './pb'
TEXT = np.array(list("贿枉呻音荒兼畦稼瘤盔拱巷毡围马吱缀农增宿吴彪鄂竿妒厘恼谴执谋言哆靡痔左捐帕局秉苏恩迸填遮混涕鲜诞磕琵瞧游峙甭嘎北形块自览忘蚜打供吮趁呕肥亚酱梗葛口吻套凭座夕抑匆槛贯拒恃斤合毯忙君酉幸出初支院溉俏艳嘲鸣识耿止余破谁翼咯病驳累穷衰肖框抡沪痊怪源翌竹昔痢瘩埋窿拎母晕迂阁魂瞻赵别国劳薄困龙粤侯沏荐畴招玻金半剪瓣海狱怨走码甫滁牺脖具拔毁逊品螟狞俺茅浴弃槐治倘棵烷砷衅扎狄嚎龋哀克没舱交缠狼蔚叮芳绦惟德矛仍买跌嘿坛暇椎汾瓦噪垢屋雾巫悠今瓮拢僻甘患彩祈感乌越佯灯票撒盅愿巩恐协虎祝胜参媳疆篆行醛碘典匪倪察查茫偶哑铂惯砌婿过贤衍淤赃赠剖靳舞闽话撑经缆卵娶修穴司蓑如玲札酵厩狙城耀终蔑包译潮署漳杖诵谷毫虱柿箔摘蛛烫笨瞥亮橡懊剐霓烬霖锄贾笺里挺耶鼻军佃新斑诊噬禹篓促噎涛檄吐逮侄弗陵羹渣纤萍绑款谓计沥久愈倔怎雏翟芦银揣寿艺瑚光馏废贪磷挖问兹孵氓陶鸳锑持臻床土肇铆垒努钳静泻磊羽矿孺咒榔蓖寇责店豪塘室猖捌归怠鳞邀由远郎蛀社殃扇画枷陷输页肄锯蒲娠夏略焕邹讹侨疫蹿错语胸砾领酶跨滥驱凰蜂坤江宾茎轴捎勺凑阮损力悉帽癌坚俗心掩吾伞痞卤陌琴兄陇妓眨名锁珠咏纵眶另敬昭界校朝券船痴赐岔怖肛兰令挪范邮惦怜黔驶麦算绥响活筷犁罐沟崩雁洛隅入耗惑躇稻簇及杉威踏尹针财欺机碧耕渐隧费蛔厕肺契盖骂挤牛告哪呜唬萌忆钥铀棉爪舶旷肮迈猿尼说佑赡秒方虫跪核补捆逞楚球梳型彦峰禄味学联鳃捂犬莆仑轰趣既涵儒偿躬旭部来迪傲鱼拆褒洪氖诣殊烈镣兴垛饺柠劝停傅掂貌毕枪缉故歹茂刃滇扣少裸秤刹堪术青凡雕态坷汽缎坝栋笆净煮手钨陛怒贞妇控蘸东氰按山暴逼卞慎苑煎帧望奥凛铬颓疽杂卖湍称佩封曰募妆韦掖雅揭冶叛位攫著隘咀厌弥隔汀蔗狰鞋步鸿裴狂往纪蝶额赫滋播赞人僚狐隙赢恳逃萎垦趾虏挫善卢髓突腰俞胳毙召涝琶嫌更各搬琐投托项营找铸缘跑叠俐婚挚祁浚销而窘沈南居紫柬拧屉排摧挨阜腾缮荔艰冒趟但姨误休筝撂委内嫁诡铺餐婉煽怂痰亦夷要惩童却衙茄溢媚愚状豁低搓夜淮舔荡曲移谢刊或浸作又尊痈附啼捶衡隋珊籽配熊桑贡恢撵肯差维柱哇廷恍薯殿桨危滩蠕殷镊林千肾美皋拄年沽骸雌鲤铁敌帚撬奢呼郭钟攀邢雄漂屯和锋棠织均刑烃钾看肠歇拙充弹龄冷暮甄掳段鸭实舀溃椒讫焦缨婴竟划玫冀丛寸篇褐栅膀航褥献留娇成拖媒酋驼酸沫辩赊烙脾什沾密炎每索壮蹦宪积甥辞翻祷傍敲宽稚韵溅熏匙栈慕吸剿肋者淆嗜澄电蓝摄尤蜀0胶慧政判浊坊途孽坟焙庐赶2害派垄验矫诲祭百搏逢迄圈卫吨蚀寺庭题牙嗣悍渠温簧凉练操靴梨沙萤珐搞抬戊短古湖调疙捷菌蜜潍崭瘴哭拯俭凿值詹佛辊理水恒专堵塞便声桅昆环蛇袋喷显华触有炒缓簿犊龟霄瀑芬纠岸通墙遍贵谱琉叫扑健顽涣裹边迎助丁欠掠购概批彝掌俘钠某浙很檬牢瑞章罕搭压疑散辨照谜代胡柑懦卷翁骋耪仇绷荷麓疮气台峪尚挽激老喧固绝窒祟汰需全食缝搁么失阂窑听葵汐奎硫阎铡瞅疵检忌邓帐棒吵盗逛传狈田叔恕婪奴廓侣煤纱聋旅跳庆草腿进访火寂六儿镶颤洗像桔径箱粥道搅饱厦虹上席汗即垫坯觉适寻酪镇雹袭菏遁剥臀堰曼八生浮舰首午戳棕尉碰考呀彤宝帝豆涟酞快莉癣拿池辰脉窍笑赴卸暂梯皿硅鞍得芒闪伴沧哩驯脆利跺官袜犀乾系驻精哎蔡裕较弊冤揪猜捞氯皇莽勉墅税肤总况类溯栗徘撞比吧将眷哦蛆爬辟户神并豫孜恶贬峻楼苞洼茶肌仰插泽你唁晃剩强钓俱洽侩邻鬃瞒且渊晨香咆夫癸账倚抱砒份抒外撕蒸己苦疯甚渗谎互倦房审售梦擦闲难赎孝园痹猪腹摈馒斯穆悸灾帘底铱早泞坏佰瞄当素萄展注伟灰默吉摊啦逻吹以坑鸯贩杯饮泰杭逐蹲境炼货凝沤奈洲涌哨逗裁甜敖柯捻脐抢屹日曾锥准姑漏仆习攒肩庚澎踢履动筐勘苯振贫桶物谰节墨莱潜九裙茸熔菇摩淑肆藤毋绳唆逸狠谚真诌乎翅咎壬战脱庇惰兵灵巍飞茧宁朋乍念接扶频柴句齿衷伺猾测钙罚反苗返定扯乙愉材尺晦鉴羞垣槽保阶稽窗饼睦分伎坐懈镜鸽滦颈随湿弟茨加勾喉钱糠蚁鲍蹈誓斡樊稠血捏可揉讯讼朵坪匝邪澈魄抓镭股衫存卉宵焰椰刺遗员制救仙签限栖饭际呆胞培歧纂舅蛋岂蜘荧预帛莫歌纹丰侮卓右漫谈楔斌蛾延主毖冬僵收霜推掐蝗炕洱顺闷震硼讶享取戍铣任赋单兢周碟月祖拌弱磋搔叨絮泼拳藩泣唯瓤诸浩喊锭速蛙蔷擂酬杠信丧秦被蔬疤融哺造鸵功溶讣霸仕御拼宜网体钒碱臃韭窃睫泡湾耸陨膛字卑京羔揩烁坦假吞偷丝孔隆文萝愧钎粱悔藕逆班则脑阵喇镑刮唐闻佐惜貉迢尸挂鲸一淬意原拷哉滤猩氧宠籍登斧兽艾二蝴眼钻篮咳韶避屿爆搜迫绅洋弯藐柒姻恭汤寞骏丈继纲掣菠铃瞳怔晒冲翠燥董辽奋泄郴旗鹿胎滞汹据遵幂梢馅最铲秩甸届柔乘泪满渝沁湃馋橇天仲膏旺姬谦吓钵绸弓福瘁近绘裔葫刽绢哟达氛殴戏爱趋峭汕跋舍尖明件抿区所秆巧辅趴蠢们娘衣箭足葱付亏表傀晶菱镍搀石闭贺奸驭产畜邵恿沮波悯挠菲洒白辉瓶蹋烹勒戈永薛靛干褂亿下锗挥片狸聪痉霞雍头身整率够档揍莲屈熄哗饶正坞呐脓诬糟睁歉追法唾闺慷点壤屁辑郊涎涪兆枯改拘腑屡礼堤独乡疲啥劲啊睹箕夺拟脊瑟臭皮逝锡躲豢街彼巾墓良酿窥沃芭芯匹堕5贸腐匿缅催酚剃夸求嘶尾想掏钡粳属拴溺嘛蚤技绍抖鞘起拽奇驮凶植扰摔苟许菊讳铜昼简囚雷宴绊常胰不祥旁庙命刨软擎惫烦睡唉漱泳旱蘑屏装炉您舷斟嗅条惮抵佬箍臼妄迭爸业僧驾挑汪刷侦夯膘淳秸饰朴谗蹭企悼英埠喝养债郑磨后顾舒瓜醋若始拍燃榜庶嘻叶岗抨竣釜办龚胯憋敦闹圃肘士帜撩扭盘含杰葡淘喻性央演憾碉渡黎徐肚嫂涩这楷撼冠狮塑云距疥峨扩链观儡氏棱掉府订吏荫川哼晴盆姥赏吃吊捉浦潭鸟竖规汲酮势恰息誉顷给详磅依峦宛泌晓团倡羌镁曙惧绚糖已目樟高紧疚妮忿艇阀矢贝提凌聂小地廊劫喂踊旨诫种嚼垮友斩迅虽谩盐诛猫烘饯蒜匈重彬星吕毛牌奉缩暖腻赂果矮乞雀腺抗竞钉乖蛊册炊脂蜡傣姜娥窟榆疗锚眉橘踞藻客齐五寒悲带晤翱俊耍措嘴门绰痘吝丑谍鸦绎啡秧姚承狡厉株巳肃烤圭柄磐娃究轧侍兑尔此伍颐抛咽须礁武双浅宣沿嚣败乓嚏姓扁根鹰珍叹杨戚彻冻词临攘炯送臂慰格皑旋炽济橱妻报笔旦家纺评蕊鸡胁博拇捅刚绿阻唤粒场舌诽酒沉硒溪械桥肉辕携骄蛮耙描滴郝役钢宏獭剂芥萧烛峡欢眺森榴蕴蜓仗获稿醉冯几侠勤雇廖用开析螺牧繁李施骆鲁咬氟谤宙蚊哥陡立朗魏辣辫膳塔汛怯器清牲鹃站轮横耻纯窖嵌傻蹄陋袖袁灼疼赌西牡番乱浑苹圆椭袱诀篡璃诗耳俯砧烯聚非透叭确缸胖替虾扦柏秀淫鼓消寅仿庄皆恋妈尿其张曹卒疏瞎岿澜砖结窜辆扫喜枢弧涡筛辱授圣线灌暗寡乃洞栽泛勃篙群然窝婶扬倾悄剁连摸侈河篱碑凋构扮现丘椅粟肪枝申栏翔莎遥优予豌勇季男瘪浇孕纷哲汇岛矩箩莹诺砰世惺盂辐纬匣欲晋丸邯染研诚绽虞柞咱约涅蟹蚌棘壕幌革囊释烩玄长号娄匠钧蛰秃至刁阔效幽饥姿埂仔黍矣般米妊辖宗亩翰橙等坡何猎茹锐杏碎娩哄热严炔敞卜抄鼎骨韩纽猴颖皂乏吁崖拥例哈还摹婆孰湛丫之运端灿幻序押瘦腥谭束违昌涯娱剔挡瘫咕琢中影翘驹兜喘安剑膊都嫩住惶贰惊料彭同墟普市芝桩四妖桌毅愤瞬论羡时渴恫荤捍列玩样侧嚷畔秘岁恨竭史转碗埃议厄涧纳完组侗的吗奠姆统到迷冉呵苛讥特犹钦胆茬罢顶度元捧曝择巡乐扔谬痪谊浆娟苔嫡泅知黄痛虚弄魁芹巨谐堑试州氨飘亲事租鹅披狭咸爷蛹郧康粹叉厢仟垃裤梁晚皖纶陀症讲卯赤菩贱导藉霹帖蜕秋梅桓受淌亡晰雨录寝潦僳标编守曳络鞠惹三泥溜囤惨楞丽芋帅无泊万锰醒杀虐亭澡梧冰港仁虑裳筋昨慈督津能雪覆个末前憎锤纫刘勿淄譬裂尘劈希再谆忱孤苇跟尝本欣址鼠符薪缚厂敛磁涨椿廉拓化氢她樱痕它免奖象渭撅吟罩笛幢嫉砂扒浓松敝奄凳铰解鬼圾遣共焉蔫伪架律思宋绵伊堆蝎残淖斜湘抉伶酗拜亢荚彰蒙盎与亨嘉劣糜慢耐污洁苍尽慨昂桃指锻绪煌妨酷挣写抚醇露毗绣枣征盯郸置欧酝超膨幼除颠潘俩相砍颇削邦弘硕挞疟诅愁焚药讨赘袒烟击宅伙诱陪放茵赔朔耘慌寓量啄岭罗书泵舵蚂喳熙仓霍摆才爹景漓怕邑襄贷碴稍零盏觅瞩饲壹遏红碾娜瘟馈刻咨向版致忠鸥玉颁侵乳卧抽空麻焊墒炙情孪绩瑶辙训柳丹棺戎芜盾蓉辜让掇铅肢镀伏涸沛禁拨惭靠潞爽就燕沼镐羊育凸野载炳创壳颜铭拉朱在匡警艘镰幅蜒党缔模筹枫篷偏馁去舟呢慑刀敢牵敏炸魔恤允删躺棍贮迟子斗旧于糯舜苫蕉蓟闸瑰伐省证程聘车管屑痒惋应锣侥伤滔吩戮期炬扛骡汝啪暑渍射帮芽担函锹胀棋畅富渺揖涂拾郡擞为伯狗坍醚骚村荆先筏倒色串嗽眯椽盒糕搪汁堂私见抠矗递脯昏酥驰敷印掷两磺顿膝吭离备颧屠啸呛睬黑擅稳悦忍了兔蓄阳褪饵灶怀叙鹤只脚嘱使砚介辛丙旬厅掀芍豺勋咋庸负淹疡赚惕踌监轩集仪综好噶呸阅质微益贴杜建幕未蜗钝琼袄韧死疹滚晾工库烂纸读蒂角琳眠捣探朽矽腊升医糙滑义掘多春争懒图第玖大寐腕脏些摇垂臣复锅蔼冕烧吼腆岳搐智谣澳级硝屎会灭直玛背漠氮平式殆蔽剧凯遂着膜撇擒崇撮徊占懂眩滨记赖睛映我弦遇折价锦忻也耽筒险策必割甩紊壁他蜻服啤绞嗡诈锈众课绒商鞭队陕握锌唱础唇誊厨盈轻志断戒斋淀锨易逾跃釉钩职赁佳塌憨濒砸疾邱践宫决是腮树舆丢穗鹏资做咙叁述吠戌襟广驴酣循掸退科殉举炭钮猛碳坠护迁井伦十孟蓬陆笼油枕蔓忽渤撤毒漆县蚕闯羚绕肝墩脸殖粕颂七数嗓寥拂关囱鄙拦衔基谅妙瓷徽务筑寄笋询歪冈颅励风域崔对赣遭煞颊父郁撰悬畸攻降储减回胚稀胺师躁熬饿禽蹬亥诉骑匀皱茁杆赛设示那坎答惠援妹急深辗泉枚启漾扼藏粘胃炮糊晌淡骗落岩辈臆斥祸孙扳奔汉盛忧戴咐瞪截矾发添恬该瓢液酌埔捡公讽键捕挟面拣熟容认罪迹爵燎奶颗碍姐涤层犯木切佣历靶滓穿庞沂贼乔檀俄灸夹粮防搽仅聊蕾淋徒嘘障蛤奏秽阐粉骤请粗腋荣王布卿选凤汞尧否异寨卡啃豹鹊沸腔宇桂氦叼因踪堡族梆烽隐粪待琅缄倍妥副谨变帆轨极拭币宰沦哮借歼太拐案鳖蝇挎盲崎赦诧阑花昧民棚畏衬教蝉甲缴陈路揽凹禾孩权似换骇喀括流冗间女续板掺啮隶缕抹窄柜乒阴桐阿搂浪厚拈萨润袍霉盼躯从渔榷凄候把宦钞挛闰弛伸阉稗细葬铝瘸榨挝悟菜踩视梭巴盟巢涉靖硬壶蒋轿呈肿碌咖栓估采缺牟馆引次处"# "贿枉呻音荒兼畦稼瘤盔拱巷毡围马吱缀农增宿吴彪鄂竿妒厘恼谴执谋言哆靡痔左捐帕局秉苏恩迸填遮混涕鲜诞磕琵瞧游峙甭嘎北形块自览忘蚜打供吮趁呕肥亚酱梗葛口吻套凭座夕抑匆槛贯拒恃斤合毯忙君酉幸出初支院溉俏艳嘲鸣识耿止余破谁翼咯病驳累穷衰肖框抡沪痊怪源翌竹昔痢瘩埋窿拎母晕迂阁魂瞻赵别国劳薄困龙粤侯沏荐畴招玻金半剪瓣海狱怨走码甫滁牺脖具拔毁逊品螟狞俺茅浴弃槐治倘"# "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
))
TEXT_INDEX = list(range(len(TEXT)))
N_OUTPUTS = len(TEXT)
BATCH_SIZE = 24
TEXT_LENGTH = 4
IMAGE_WIDTH = 180
IMAGE_HEIGHT = 64
IMAGE_SHAPE = (IMAGE_HEIGHT, IMAGE_WIDTH, 3)print("N_OUTPUTS", N_OUTPUTS)def random_captcha_text(text_length=1):index = np.random.choice(TEXT_INDEX, text_length)text = TEXT[index]return text, indexdef gen_single(random=True):while True:fonts = ["./font/ios10.ttf","./font/small.TTF",# "./font/f1.TTF","./font/STSONG.TTF"]image = ImageCaptcha(width=IMAGE_WIDTH, height=IMAGE_HEIGHT, fonts=fonts)captcha_text, index = random_captcha_text(text_length=TEXT_LENGTH)if random:#  获得随机生成的验证码#  把验证码列表转为字符串captcha_text = ''.join(captcha_text)#  生成验证码captcha = image.generate(captcha_text)img = Image.open(captcha)img = np.array(img)else:captcha = image.create_captcha_image(captcha_text, (0, 0, 255), (255, 255, 255))img = np.array(captcha)yield img, indexdef gen_batch(batch_size=BATCH_SIZE):images = []labels = []for _ in range(batch_size):image, label = gen_single()images.append(image)labels.append(label)return np.stack(images), np.stack(labels)def parse(img, label):img = tf.cast(img, tf.float32)return pre(img), labeldef pre(img):return img / 127.5 - 1def post(img):img = (img + 1.) * 127.5return np.clip(img, 0, 255).astype(np.uint8)# label (32,)
def label2text(label):labels = TEXT[label]return labelsdef get_iterator():# 需要使用元组,使用列表表示shapes时会报无法hash化的错误data = tf.data.Dataset.from_generator(gen_single, (tf.uint8, tf.int64), (IMAGE_SHAPE, (TEXT_LENGTH,)))data = data.map(parse, num_parallel_calls=6).batch(BATCH_SIZE)# data = data.batch(BATCH_SIZE)data = data.prefetch(BATCH_SIZE)return data.make_initializable_iterator()def get_block(in_x, num_outputs=32, kernel_size=1, stride=1):with slim.arg_scope([slim.conv2d,slim.separable_conv2d],activation_fn=tf.nn.leaky_relu# activation_fn=tf.nn.relu6):#  inceptionnet1 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=1, stride=stride)net1 = slim.batch_norm(net1)net3 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=3, stride=stride)net3 = slim.batch_norm(net3)net5 = slim.conv2d(in_x, num_outputs=num_outputs, kernel_size=5, stride=stride)net5 = slim.batch_norm(net5)net = tf.concat([net1, net3, net5], axis=3)net = slim.conv2d(net, num_outputs=num_outputs, kernel_size=1, stride=2)net = slim.batch_norm(net)# # net = slim.max_pool2d(net, 3)# net = slim.conv2d(net, num_outputs, kernel_size, 2)# res# net1 = slim.conv2d(in_x, num_outputs, kernel_size=3, stride=stride)# net2 = slim.conv2d(net1, num_outputs, kernel_size=3, stride=stride)# net3 = slim.conv2d(net2, num_outputs, kernel_size=3, stride=stride)# net = net3 + net1# net = slim.conv2d(net, num_outputs, kernel_size, 2)return netdef build_net(in_x):net = get_block(in_x, 128)print(net.shape)net = get_block(net, 128)print(net.shape)net = get_block(net, 256)print(net.shape)net = get_block(net, 256)print(net.shape)net = slim.flatten(net)net = slim.batch_norm(net)print(net.shape)with slim.arg_scope([slim.conv2d,slim.fully_connected],activation_fn=tf.nn.leaky_relu# activation_fn=tf.nn.relu6):net = slim.fully_connected(net, 1024)net = slim.batch_norm(net)net = slim.fully_connected(net, TEXT_LENGTH * 1024)net = tf.reshape(net, (BATCH_SIZE, TEXT_LENGTH, 1024))net = slim.batch_norm(net)net = slim.fully_connected(net, N_OUTPUTS)print('net', net.shape)return netdef train():iterator = get_iterator()images, labels = iterator.get_next()net = build_net(images)print('labels,net', labels.shape, net.shape)loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=net))train_op = tf.train.AdamOptimizer(LR).minimize(loss)# train_op = tf.train.RMSPropOptimizer(LR).minimize(loss)output = tf.argmax(net, axis=2)print('output', output.shape)prediction = tf.equal(output, labels)print('prediction', prediction.shape)accuracy = tf.reduce_mean(tf.cast(prediction, tf.float32))with tf.Session() as sess:sess.run(tf.global_variables_initializer())sess.run(iterator.initializer)st = time.time()loss_list = []accuracy_list = []for step in range(1, 1 + TRAIN_STEP):_, accuracy_val, loss_val = sess.run([train_op, accuracy, loss])if not step % SHOW_STEP:print("show", step, sess.run([accuracy, loss]))ed = time.time()print('time', ed - st)  # 25sst = edimages_val, labels_val, prediction_val, output_val = sess.run([images, labels, prediction, output])images_val = post(images_val)rows = [np.concatenate(line, 1)for line in np.array_split(images_val, 8)]images_val = np.concatenate(rows, 0)# print(labels_val.shape, prediction_val.shape)plt.imshow(images_val)plt.show()# print(label2text(labels_val))# print(label2text(output_val))plt.plot(accuracy_list, label='accuracy')plt.legend()  # 显示图例plt.show()plt.plot(loss_list, label='loss')plt.legend()  # 显示图例plt.show()if not step % SAVE_STEP:loss_list.append(loss_val)accuracy_list.append(accuracy_val)def show_image():iterator = get_iterator()batch = iterator.get_next()with tf.Session() as sess:sess.run(iterator.initializer)for _ in range(10):image, label = sess.run(batch)print(image.shape, label.shape)print(label2text(label))rows = [np.concatenate(row, 1)for row in np.split(image, 8)]image = np.concatenate(rows, 0)print(image.shape)image = post(image)plt.imshow(image)plt.show()def main():train()# show_image()if __name__ == '__main__':main()

tf 文字识别 多个文字 data 数据流相关推荐

  1. 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别

    简单记录一下今天关于百度AI开放平台-文字识别-财务票据文字识别的实现过程 文字识别有对应的Android SDK集成及相关Demo,文档地址如下图: SDK目录图.png 但是SDK中的返回数据字段 ...

  2. 如何使用OCR文字识别软件提取文字

    如何使用OCR文字识别软件提取文字 一位同事离职,领导让我接手他的工作.在做交接的时候发现他有很多的工作没有完成,既然在一个文件夹里面放的全是图片文件,可能是平时积累下来的,因为人家都要离职了就没有跟 ...

  3. 【2】Python 视频文字识别提取 - Mp3 文字识别

    网络上没有很好的库用来文字识别,并且文字识别效率很低,这里我用了剪映接口 jianying.py from datetime import dateimport requests import jso ...

  4. delphi百度文字识别(支持通用文字识别、身份证识别、银行卡识别、驾驶证识别、行驶证识别、车牌识别等功能)

    下载链接:https://download.csdn.net/download/liushenglin123/12363729 delphi百度文字识别 支持 通用文字识别.通用文字识别(高精度版). ...

  5. 神经网络文字识别系统,神经网络文字识别插件

    关于BP神经网络的文字识别应用 谷歌人工智能写作项目:神经网络伪原创 为什么神经网络识别数字用10个输出而不是4个 单个网络就能识别所有数字,不是每个数字训练一个网络,而是所有数字的训练样本来训练一个 ...

  6. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

  7. 中的图片文字识别_文字识别 图片转文字【小程序】

    文字识别小程序在文章的底部 直接拉到文章底部就可使用 ↓↓↓↓↓↓ 大家在平时办公或者学习中经常会处理到图片转文字的问题,对于一些打字比较快的朋友来说并没有太大的问题,但是对于一些打字慢的人来说确实一 ...

  8. python ocr 文字识别软件,Python文字截图识别OCR工具实例解析

    一.简介 你一定用过那种"OCR神器",可以把图片中的文字提取出来,极大的提高工作效率. 今天,我们就来做一款实时截图识别的小工具.顾名思义,运行程序时,可以实时把你截出来的图片中 ...

  9. python实现文字识别软件_文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别...

    文字识别(OCR)CRNN(基于pytorch.python3) 实现不定长中文字符识别 发布时间:2018-09-26 19:40, 浏览次数:1265 , 标签: OCR CRNN pytorch ...

  10. python屏幕文字识别_python 图片文字识别 可截图识别

    [Python] 纯文本查看 复制代码import osfrom aip import AipOcr import keyboard from PIL import ImageGrab from ti ...

最新文章

  1. Wireshark运算符!=无法正常工作
  2. ACL 2019开源论文 | 基于Attention的知识图谱关系预测
  3. BIC无代码绘制差异基因火山图
  4. 爬虫-爬取博客的演练-首页内容保存-首页文章列表与url
  5. iOS 下ARC的内存管理机制
  6. C语言 堆内存操作
  7. 郑州轻工业大学c语言考试题库,2016年郑州轻工业学院计算机与通信工程学院C语言程序设计考研复试题库...
  8. 深度优先遍历访问的边集合_数据结构与算法: 三十张图弄懂「图的两种遍历方式」...
  9. NSIS例子-TSE3.6.2脚本
  10. android的密码是多少,Android图形密码中 你最常用的是哪一个呢?
  11. Gateway一直访问本地
  12. win2008搭建文件存储服务器,Win2008文件服务之SAN存储管理器入门
  13. 网工软考中级数据通信技术
  14. 苹果圆圈怎么设置_苹果手机白色圆圈怎么弄
  15. 计算机服务 无法保存,无法保存打印机设置0x000006d9怎么办实测解决
  16. Testin云测平台
  17. 关于网页前端中的 outline轮廓
  18. SLAM算法VINS-MONO安装运行介绍
  19. 校园闲置物品交易平台毕业设计学习
  20. 根据当前日期求取当年是否为闰年,当天是周几。

热门文章

  1. 通过.reg文件修改注册表
  2. t分布 u分布 卡方分布_方分布,F分布,t分布三者之间有什么关系
  3. 小学生听力测试软件,中小学英语听力软件
  4. 《GB∕T 35273-2020 信息安全技术 个人信息安全规范》已正式实施,这些变化需牢记!(附下载)
  5. 软考-软件工程师常用公式及知识点
  6. windows动态库和静态库
  7. PR(Premiere) 鼓点节拍插件Beat Edit,打不开的原因
  8. 遗传算法--适应度尺度变换
  9. python爬虫爬取视频
  10. PHPCMS 前台模板集合