【人工智能项目】深度学习实现图像多标签分类
【人工智能项目】深度学习实现图像多标签分类本次实现一个图像多标签分类的任务,接下来还会分享我研究生阶段做过的其它任务,走起瓷!!!
任务介绍训练一个多标签分类模型,使得该模型能自动根据输入的任意图像提供对应图片内容的多个标签
数据集介绍本次竞赛共有3.5W张图片作为训练集,8K张图片作为第一阶段评分测试集,最后6612张图片作为总决赛测试集。
viual_china_train.csv:图片与标签对应的列表。valid_tags.txt:6941个标签的有序列表文件。tags_train.npz:3.5W张图片对应的标签train.tgz:3.5W张训练图片valid.tgz:8K验证图片思路如猫狗大战的二分类、cifar-10的多分类,本次题目是多标签的图像分类,每张图片可能没有标签页可能存在6941个标签,即各个标签之间是不存在互斥关系的,所以最终分类的损失函数不能用softmax而必须要用sigmoid。然后把分类层预测6941个神经元,每个神经元用sigmoid函数返回是否存在某个标签即可。
具体流程#导入模块importosimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromPILimportImage#存放地址dir_path="D:\01\01contest"print(os.listdir(dir_path))[‘tag_train.npz’,‘train’,‘train.tar’,‘train.tgz’,‘valid’,‘valid.tar’,‘valid.tgz’,‘valid_tags.txt’,‘visual_china_train.csv’]
获取数据和标签先导入train_csv的数据,保存文件名以及标签名。
#查看数据train_path=os.path.join(dir_path,"visual_china_train.csv")train_df=pd.read_csv(train_path)train_df.head()print(train_df.shape)(35000,2)
处理图片名称,将其保存到img_paths列表中
img_paths=list(train_df["img_path"])验证图片标签是否的确只有6941个标签。
tags=[]foriinrange(train_df["tags"].shape[0]):fortagintrain_df["tags"].iloc[i].split(","):tags.append(tag)tags=set(tags)print("thelengthoftags:",len(tags))thelengthoftags:6941
前期准备工作差不多做完了,开始导入训练集。原始训练集中存在CMYK格式的图片,传统图片处理一般格式为RGB格式,所以我们使用Image库中的convert函数对非RGB格式的图片进行转换。
#尝试少量数据验证模型num_train=5000X_train=np.zeros((num_train,224,224,3),dtype=np.uint8)i=0forimg_pathinimg_paths[:num_train]:img=Image.open(dir_path+"/train/"+img_path)ifimg.mode!="RGB":img=img.convert("RGB")img=img.resize((224,224))arr=np.asarray(img)X_train[i,:,:,:]=arri+=1训练集导入完成,查看一下图片的样子.
fig,axes=plt.subplots(6,6,figsize=(20,20))j=0fori,imginenumerate(X_train[:36]):axes[i//6,j%6].imshow(img)j+=1准备标签
y_train_path=os.path.join(dir_path,"tag_train.npz")y_train=np.load(y_train_path)y_train.files[‘tag_train’]
y_train=y_train["tag_train"]y_train.shape(35000,6941)
这样,数据和标签都拿到了,这里还是要是要分割一下数据集的。
分割数据集用作不同用途。
fromsklearn.model_selectionimporttrain_test_splitX_train2,X_val,y_train2,y_val=train_test_split(X_train,y_train[:num_train],test_size=0.2,random_state=2019)print(X_train2.shape)print(y_train2.shape)print(X_val.shape)print(y_val.shape)(4000,224,224,3)(4000,6941)(1000,224,224,3)(1000,6941)
模型搭建这里直接迁移模型,用ResNet模型进行迁移。
#导入开发需要的库fromkeras.modelsimport*fromkeras.layersimport*fromkeras.optimizersimport*fromkeras.callbacksimport*fromkeras.applicationsimport*base_model=ResNet50(input_tensor=Input((224,224,3)),weights="imagenet",include_top=False)forlayersinbase_model.layers:layers.trainable=Falsex=GlobalAveragePooling2D()(base_model.output)x=Dropout(0.25)(x)x=Dense(6941,activation="sigmoid")(x)model=Model(base_model.input,x)监测精准率召回率和F1的功能函数
importkeras.backendasKdefprecision(y_true,y_pred):#Calculatestheprecisiontrue_positives=K.sum(K.round(K.clip(y_true*y_pred,0,1)))predicted_positives=K.sum(K.round(K.clip(y_pred,0,1)))precision=true_positives/(predicted_positives+K.epsilon())returnprecisiondefrecall(y_true,y_pred):#Calculatestherecalltrue_positives=K.sum(K.round(K.clip(y_true*y_pred,0,1)))possible_positives=K.sum(K.round(K.clip(y_true,0,1)))recall=true_positives/(possible_positives+K.epsilon())returnrecalldeffbeta_score(y_true,y_pred,beta=1):#CalculatestheFscore,theweightedharmonicmeanofprecisionandrecall.ifbeta"img_path":predict_img_paths,"tags":y_tags})foriinrange(df["tags"].shape[0]):df["tags"].iloc[i]=",".join(str(e)foreindf["tags"].iloc[i])df.to_csv("submit.csv",index=None)#预览一下结果文件predict_df=pd.read_csv("submit.csv")predict_df.head()小结那本次就到此为止,有问题请留言了,要是时间长了,可能也就回忆不起来了~~
AI人工智能可以做哪些课题的毕业设计毕设
常规我们可以依托百度智能云的AI智能识别
人脸识别公司签到系统
植物大全智能识别系统
动物大全智能识别系统
果蔬大全智能识别系统
菜品大全智能识别系统
红酒大全智能识别系统
地标大全智能识别系统
日用品大全智能识别系统
货币大全智能识别系统
例如:植物大全智能识别系统
用户注册:填写手机账号和密码,注册新用户登录功能:注册普通账号登录;登录后可以修改用户的基本信息,也可以退出。关于我们:关于我们、联系我们、加入我们、法律声明轮播广告:后台设置首页轮播广告图,可以连接到广告页面。留言反馈:用户填写李哭咽的主题、联系人、电话、邮箱、留言内容;后台管理可以查看留言列表,可以删除留言。
植物智能识别:上传本地图片,通过百度AI智能图片识别,返回结果并显示
资讯阅读:游客和用户都可以进行资讯的阅读。资讯收藏:阅读到有兴趣的资讯,注册登录的用户可以进行收藏操作。资讯评论:阅读资讯的时候,登录的用户,可以发表评论;后台审核后显示。
植物阅读:游客和用户都可以进行植物信息的阅读。植物收藏:阅读到有兴趣的植物信息,注册登录的用户可以进行收藏操作。植物评论:阅读植物信息的时候,登录的用户,可以发表评论;后台审核后显示。
资讯浏览:记录用户所有浏览过的资讯信息资讯收藏:收藏的感兴趣的资讯文章,可以直接点击去阅读,支持删除。资讯评论:列出参与评论的文章、评论内容、审核状态。
植物浏览:记录用户所有浏览过的植物信息植物收藏:收藏的感兴趣的植物信息,可以直接点击去阅读,支持删除。植物评论:列出参与评论的植物信息、评论内容、审核状态。
用户信息:姓名、联系方式、邮箱、头像、简介、介绍等,支持随时修改;用户注册的信息后台管理员可见;后台管理员可以删除。密码修改:修改注册的密码。退出登录:清除登录的cookie,返回到首页。
人工智能大作业
选择一个感兴趣的人工智能应用场景,写一个研究报告(需要有算法、代码实现)。举例:迷宫搜索、垃圾邮件检测、社交网络异常账号检测、信用卡欺诈、棋类强化学习、游戏强化学习等等(其他各种场景或者比赛项目都可以,自由选择)。不能抄袭或用往届的的材料。
大作业的结构包括选题背景、简要介绍、概要设计/总体设计、详细设计(每个模块,算法,包)、核心代码和实现、总结、分工等信息。
本文展示的是自然语言处理里面的词向量训练,训练预料是corpus语料库。需要代做加QQ1975728171
代码展示:
研究报告部分展示:
人工智能大作业合集
本文是我上课的人工智能大作业集锦总共有四个大作业仅供大家参考如果有时间就分开讲讲有关于:知识表示法人工神经网络专家系统机器学习等的概念上的理解和异同之类的知识。最近出了成绩成绩比较高所以自认为还是有些参考价值的都是百度不到的东东希望对大家有帮助吧奥利给~~链接:https://pan.baidu.com/s/14t_g272I23el-4IArA2smA提取码:jqye