【人工智能项目】ImageNet数据集介绍以及数字图像处理技术


本次介绍一下imagenet数据集,并对imagenet数据集中的图片做一些数字图像处理预处理操作。那话不多说,搞起来!!!

ImageNet数据集介绍


ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文,之后就是基于ImageNet数据集的7届ImageNet挑战赛(2010年开始),2017年后,ImageNet由Kaggle(Kaggle公司是由联合创始人兼首席执行官Anthony Goldbloom 2010年在墨尔本创立的,主要是为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台)继续维护。

WordNet是一个由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护的英语字典。开发工作从1985年开始。由于它包含了语义信息,所以有别于通常意义上的字典。WordNet根据词条的意义将它们分组,每一个具有相同意义的字条组称为一个synset(同义词集合)。WordNet为每一个synset提供了简短,概要的定义,并记录不同synset之间的语义关系。WordNet中的每个有意义的概念(concept)(可能由多个单词或单词短语描述)被称为"同义词集(synonym set)“或"synset”。

ImageNet是根据WordNet层次结构组织的图像数据集。在ImageNet中,目标是为了说明每个synset提供平均1000幅图像。 每个concept图像都是质量控制和人为标注的(quality-controlled and human-annotated)。 在完成之后,希望ImageNet能够为WordNet层次结构中的大多数concept提供数千万个干净整理的图像(cleanly sorted images)

ImageNet是一项持续的研究工作,旨在为世界各地的研究人员提供易于访问的图像数据库。目前ImageNet中总共有14197122幅图像,总共分为21841个类别(synsets),大类别包括:amphibian、animal、appliance、bird、covering、device、fabric、fish、flower、food、fruit、fungus、furniture、geological formation、invertebrate、mammal、musical instrument、plant、reptile、sport、structure、tool、tree、utensil、vegetable、vehicle、person。

数据集下载

imagenet的下载方式如下:

本次下载的数据集共3137张。

import osimagenet_path = "./ImageNet"
print(len(os.listdir(imagenet_path)))

3137

import matplotlib.pyplot as plt
import cv2
%matplotlib inlineimage_path = "./ImageNet/n02095314_261.png"img = cv2.imread(image_path)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)

图像大小更正,相同大小

先查看目前的图片尺寸

image_path = "./ImageNet/n02095314_261.png"img = cv2.imread(image_path)
print(img.shape)

(416, 400, 3)

image_path = "./ImageNet/n02095314_73.png"img = cv2.imread(image_path)
print(img.shape)

可以看出目前的图片尺寸不同。

对该目录下所有图片进行修正尺寸。

src_path = "./ImageNet"
dst_path = "./ResizeImageNet/"
img_size = 224for img_name in os.listdir(src_path):img_path = os.path.join(src_path,img_name)img = cv2.imread(img_path)img = cv2.resize(img,(img_size,img_size),interpolation=cv2.INTER_LINEAR )dst_img_path = dst_path + img_namecv2.imwrite(dst_img_path,img)

直方图的图像增强

图像增强主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度级放大到指定的程度,使得图像中的细节看起来增加清晰。对比度增强有几种常用的方法,如线性变换、分段线性变换、伽马变换、直方图正规化、直方图均衡化、局部自适应直方图均衡化等。

在讲解图像增强的方法之前先来认识一下灰度直方图,灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。

# 读取图片
img_path = "./ResizeImageNet/n12985857_5691.png"
import cv2
import matplotlib.pyplot as plt
%matplotlib inline# 绘制图像灰度直方图
def deaw_gray_hist(gray_img):''':param  gray_img大小为[h, w]灰度图像'''# 获取图像大小h, w = gray_img.shapegray_hist = np.zeros([256])for i in range(h):for j in range(w):gray_hist[gray_img[i][j]] += 1x = np.arange(256)# 绘制灰度直方图plt.bar(x, gray_hist)plt.xlabel("gray Label")plt.ylabel("number of pixels")plt.show()img = cv2.imread(img_path) # 这里需要指定一个 img_path
deaw_gray_hist(img[:,:,0])
img =  cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)



# 对图像进行 线性变换
def linear_transform(img, a, b):''':param img: [h, w, 3] 彩色图像:param a:  float  这里需要是浮点数,把图片uint8类型的数据强制转成float64:param b:  float:return: out = a * img + b'''out = a * img + bout[out > 255] = 255out = np.around(out)out = out.astype(np.uint8)return out
# a = 2, b=10
img = cv2.imread(img_path) # 这里需要指定一个 img_path
img = linear_transform(img, 2.0, 10)
deaw_gray_hist(img[:, :, 0])
img =  cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)



选取100张图片进行此数据增强操作。

src_path = "./ResizeImageNet"
dst_path = "./Resize_Linear_ImageNet/"i = 0
for img_name in os.listdir(src_path):img_path = os.path.join(src_path,img_name)img = cv2.imread(img_path)img = linear_transform(img, 2.0, 10)dst_img_path = dst_path + img_namecv2.imwrite(dst_img_path,img)i = i + 1if i == 100:break

# 对图像进行 均衡化
def equalize_transfrom(gray_img):return cv.equalizeHist(gray_img)img = cv2.imread(img_path) # 这里需要指定一个 img_path
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
b_out = equalize_transfrom(b)
g_out = equalize_transfrom(g)
r_out = equalize_transfrom(r)
equa_out = np.stack((b_out, g_out, r_out), axis=-1)
deaw_gray_hist(equa_out[:, :, 0])
img =  cv2.cvtColor(equa_out,cv2.COLOR_BGR2RGB)
plt.imshow(img)



同样选取100张图片对其数据增强

src_path = "./ResizeImageNet"
dst_path = "./Resize_Equalize_ImageNet/"i = 0
for img_name in os.listdir(src_path):img_path = os.path.join(src_path,img_name)img = cv2.imread(img_path)img = cv2.imread(img_path) # 这里需要指定一个 img_pathb = img[:, :, 0]g = img[:, :, 1]r = img[:, :, 2]b_out = equalize_transfrom(b)g_out = equalize_transfrom(g)r_out = equalize_transfrom(r)img = np.stack((b_out, g_out, r_out), axis=-1)dst_img_path = dst_path + img_namecv2.imwrite(dst_img_path,img)i = i + 1if i == 100:break

【人工智能项目】ImageNet数据集介绍以及数字图像处理技术相关推荐

  1. 数字图像处理技术的应 用领域

    数字图像处理技术的应 用领域 图像处理技术的主要应用领域有: 生物医学.遥感技术.工业生产.军事技术. 通信技术.侦缉破案.气象预报.宇宙探索.考 古等,已经遍布国民经济的各个领域. 发展历史 20世 ...

  2. 计算机在航空航天的应用ppt,数字图像处理技术的应用_北京航空航天大学:数字图像处理技术的应用_ppt_大学课件预览_高等教育资讯网...

    数字图像处理技术的应用 北京航空航天大学宇航学院 图象处理中心 第一节 数字图像处理应用 概述 1.1 图像的重要性: 人类离不开图像, 计算机图像技术渗透到 各个科技领域, 百闻不如一见 . 画面比 ...

  3. matlab guide图像处理实例,现代数字图像处理技术提高及应用案例详解 MATLAB版-教科书.pdf...

    数字,图像处理,技术,提高,应用,案例,详解,教科书 [General Information] 书名=现代数字图像处理技术提高及应用案例详解 MATLAB版 作者=赵小川编著 页数=384 SS号 ...

  4. 《数字图像处理技术》期末复习笔记

    数字图像处理技术 第一章 图像处理主要内容:广义上:图像采集.图像编码与传输.图像信息处理.图像显示,狭义上:图像增强.图像恢复.图像分割.图像表示 DI:将一幅画面在空间上分割称离散的像素,各像素点 ...

  5. 深度学习时间序列预测项目案例数据集介绍

    一.数据集介绍

  6. 数字图像处理技术详解程序_大学专业详解系列135——数字媒体技术(工学学士)...

    数字媒体技术(工学学士) 毕业生应具备的知识和能力 (1)系统掌握数字媒体技术专业的基本理论.基础知识和基本技能: (2)掌握数字影视技术.数字影视制作技术的理论与方法,能熟练运用拍摄.编辑.特效制作 ...

  7. 数字图像处理技术在TWaver可视化中的应用

    数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.常用的图像处理方法有图像增强.复原.编码.压缩等,数 ...

  8. 数字图像处理技术及实用 MATLAB实验报告及PS作业

    实验二 图像类型 一.实验目的 1.读取任一图像,将其转换成二值图像,设置二值化图像的阈值,分别为level=0.4,level=0.7 .对结果进行分析. 2.选择不同的阈值,观察阈值对图像二值化的 ...

  9. 计算机在医学应用图片,数字图像处理技术在医学领域的应用

    郭宽 文章编号:2095-6835(2016)13-0106-01 摘 要:医学影像技术涉及到了诸多领域的新兴技术,是多种前沿科技融合而成的产物,也是进行医学研究以及临床阶段的医学实验所必需的一种手段 ...

最新文章

  1. 阿里云前端周刊 - 第 39 期
  2. TCL中关于管脚(Ports)的一些使用方法?
  3. sqlserver中无ldf文件附加数据库
  4. OD 快捷键使用大全。非常详细( 游戏逆向分析必看 )+ OD 断点 使用大全
  5. java开发遇到最大的问题_java开发遇到的问题总结(三)
  6. 微服务化之服务拆分与服务发现
  7. mysql主从复制延迟问题的相关知识与解决方案
  8. hadoop——Map/Reduce中combiner的使用
  9. 深入了解clientXY,offsetXY,pageXY的区别
  10. 微PE装Win10详细教程 手把手教你UEFI+GPT方式安装Win10系统教程
  11. 计算机怎么恢复初始设定模式,电脑的Edge浏览器怎么进行重置使其恢复出厂默认设置...
  12. SpringBoot集成Swagger文档及自定义访问路径
  13. Flink报错:org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
  14. 人工客服真的是真人吗?
  15. python绘制网络拓扑图_python绘制网络拓扑_网络拓扑的python表示
  16. 20220614 笔记
  17. 01、java02-运算符 流程控制 方法
  18. MySQL数据库卸载+MySQL常用的图形化管理工具介绍
  19. RabbitMQ环境的搭建和报错
  20. 3D人物建模需要哪些软件?资深大牛全方位从入门到实战解析

热门文章

  1. python读xml文件生成.h头文件_PYTHON读写xml文件的方法
  2. 怎么用 UDP 实现 TCP?
  3. html div父集子集,怎么让父极元素的宽度自动设为所有子集的宽度之和呢?或者怎么保证子集不换行?不考虑用js!...
  4. pcie转m2装系统win10_M.2接口NVMe SSD固态驱动器安装win10
  5. 让你的爱宠不止于你的爱--宠物领养(寄养)系统
  6. 腾讯员工平均月薪7.5w?我这是又被平均了?
  7. html电视剧网页模板,电视剧列表.html
  8. 多相机拍照系统3D拍照建模,3D真人手办,博物馆模型制作
  9. 数据结构实验+理解1 基于c++的二叉树函数实现
  10. AI顶级专家沈春华回国加盟浙大!