# <center>**基于迁移学习与并联注意力机制的猫和老鼠动画片语义分割**</center>
<font size=6>**目录:**</font>
<font size=4>**一、项目简介**</font>
<font size=4>**二、数据集处理**</font>
<font size=3>  **2.1、数据获取**</font>
<font size=3>  **2.2、数据清洗**</font>
<font size=3>  **2.3、数据标注**</font>
<font size=3>  **2.4、数据增强**</font>
<font size=3>  **2.5、数据集划分**</font>
<font size=4>**三、模型搭建**</font>
<font size=4>**四、模型训练**</font>
<font size=4>**五、模型改进**</font>
<font size=3>  **5.1 添加CBAM注意力机制**</font>
<font size=3>  **5.2 基于CBAM注意力机制的进一步改进——并联注意力机制**</font>
<font size=4>**六、模型对比**</font>
<font size=4>**七、项目总结**</font>
<font size=6 color=red>**亮点:**</font>
![image.png](attachment:368a0298-6c93-4491-9b51-dc0a9e720fc9.png)
# 一、项目简介
基于**Unet模型**和**并联注意力机制**实现猫和老鼠动画片的语义分割,其中并联注意力机制受**CBAM注意力机制**的启发,将**通道注意力机制机制和空间注意力机制并联**,给予不同通道不同空间不同权重。本项目使用的数据集通过**爬虫**获取,清洗后使用**百度平台EasyData**进行标注,共682张,其中545中用来训练,137张用来测试。本项目使用**Visio可视化模型结构图**,并对比了原版Unet、添加CBAM注意力机制和添加本项目提出的并联注意力机制三种模型。在项目的最后,通过进行模型测试,证明模型有较好的语义分割能力。
# 二、数据集处理
## 2.1 数据集获取
使用**爬虫**爬取百度图库中猫和老鼠图片,进行数据清晰和标注。脚本可以根据网页关键词进行爬取,并指定爬取的页数,保存在关键词同名目录下,如果文件夹不存在,那么会创建这个文件夹,图片名从0开始命名。本次项目是猫和老鼠的语义分割任务,因此**关键词指定为猫和老鼠,爬取页数指定为25页**,共爬取900张猫和老鼠的图片。
```python
# 导入相应的库
import os
import re
import requests
# 获取网站源码
def get_html(url, headers, params):
response = requests.get(url, headers=headers, params=params)
# 设置源代码的编码方式
response.encoding = "utf-8"
# return response.text
if response.status_code == 200:
return response.text
else:
print("网站源码获取错误")
def parse_pic_url(html):
result = re.findall('thumbURL":"(.*?)"', html, re.S)
return result
# 获取图片的二进制源码
def get_pic_content(url):
response = requests.get(url)
# 设置源代码的编码方式
return response.content
# 保存图片
def save_pic(fold_name, content, pic_name):
# with open("大熊猫/" + str(pic_name) + ".jpg", "wb") as f:
with open(fold_name + "/" + str(pic_name) + ".jpg", "wb") as f:
f.write(content)
f.close()
# 定义一个新建文件夹程序
def create_fold(fold_name):
# 加异常处理
try:
os.mkdir(fold_name)
except:
print("文件夹已存在")
# 定义main函数调用get_html函数
def get_image():
# 输入文件夹的名字
fold_name = input("请输入您要抓取的图片名字:")
# 输入要抓取的图片页数
page_num = input("请输入要抓取多少页? (0. 1. 2. 3. .....)")
# 调用函数,创建文件夹
create_fold(fold_name)
# 定义图片名字
pic_name = 0
# 构建循环,控制页面
for i in range(int(page_num)):
url = "https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDEsMiw2LDUsNCw4LDcsOQ%3D%3D&word=%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0"
headers = {
"Accept": "text/plain, */*; q=0.01",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Connection": "keep-alive",
"Cookie": "BDqhfp=%E5%A4%A7%E7%86%8A%E7%8C%AB%E5%9B%BE%E7%89%87%26%26NaN-1undefined%26%261632%26%263; BIDUPSID=D076CA87E4CD25BA082EA0E9B5B9C82F; PSTM=1663428044; MAWEBCUID=web_fMcFGAgtkEbzDpinjKvUtGFDInsruypyhIDrXDSpxBBJoXftlZ; BAIDUID=D076CA87E4CD25BA568D2D9EF1AD5F5C:SL=0:NR=10:FG=1; indexPageSugList=%5B%22%E7%8C%AB%22%2C%22%26cl%3D2%26lm%3D-1%26ie%3Dutf-8%26oe%3Dutf-8%26adpicid%3D%26st%3D%26z%3D%26ic%3D%26hd%3D%26latest%3D%26copyright%3D%26word%3D%E5%A4%A7%E8%B1%A1%26s%3D%26se%3D%26tab%3D%26width%3D%26height%3D%26face%3D%26istype%3D%26qc%3D%26nc%3D%26fr%3D%26expermode%3D%26force%3D%26pn%3D30%26rn%3D30%22%2C%22%E6%80%A7%E6%84%9F%E7%BE%8E%E5%A5%B3%22%5D; ZFY=JujkjWiLPjOsSz:Ag1v0hFWlSBt4qjPC4L6bB4MDS6Jo:C; BAIDUID_BFESS=D076CA87E4CD25BA568D2D9EF1AD5F5C:SL=0:NR=10:FG=1; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=null; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; ab_sr=1.0.1_YTc4N2NiNWIyZWM5NTkzYzQ3MmZlNTI3Y2YyM2RiMTE3YmYwMTBiNzQ0YzhlZmJkZDY4YjJhZWU4NjVmMmQxZmJkYTcxODZkYTgwNjhhZDY5ZWZmYjg4Y2FmMGE5YTBmNjc3M2JhZDEwZTU1MTAyMTA1MjUxN2Y2NDNlMTJiNzhjNTIyYTQwNTg5ODNiMzc1MjRlZDdmNTVkMzdkOGJiOQ==",
"Host": "image.baidu.com",
"Referer": "https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%B4%F3%D0%DC%C3%A8%CD%BC%C6%AC&fr=ala&ala=1&alatpl=normal&pos=0&dyTabStr=MTEsMCwxLDMsNiw1LDQsMiw3LDgsOQ%3D%3D",
"Sec-Ch-Ua": '"Microsoft Edge";v="117", "Not;A=Brand";v="8", "Chromium";v="117"',
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": '"Windows"',
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43",
"X-Requested-With": "XMLHttpRequest",
}
params = {
"tn": "resultjson_com",
"logid": "11637882045647848541",
"ipn": "rj",
"ct": "201326592",
"fp": "result",
"fr": "ala",
"word": fold_name,
"queryWord": fold_name,
"cl": "2",
"lm": "-1",
"ie": "utf-8",
"oe": "utf-8",
"pn": str(int(i + 1) * 30),
"rn": "30",
"gsm": "3c",
}
html = get_html(url, headers, params)
# print(html)
result = parse_pic_url(html)
# 使用for循环遍历列表
for item in result:
# print(item)
# 调用函数,获取图片的二进制源码
pic_content = get_pic_content(item)
# 调用函数保存图片
save_pic(fold_name, pic_content, pic_name)
pic_name += 1
# print(pic_content) # 二进制源码
print("正在保存" + str(pic_name) + " 张图片")
get_image()
```
## 2.2数据清洗
由于数据是爬取的,**质量参差不齐**,尤其是分辨率不统一,后续输入模型中的图像要求大小统一,所以要resize,为防止resize对图片造成的失真,这里对**图像的长宽比**进行判断,如果长宽比小于0.5或者大于2,那么就舍弃这张图片,如果在范围之类那么resize成**512x512**大小的图片。并且对通过代码筛选的**图片内容**进行**人工逐一筛查**,如图片中没有出现猫或者老鼠的图片,或者清晰度特别低的脏数据,进行剔除。如下面所示左侧为长宽比不符合要求,右侧为图片内容不符合要求,故都进行剔除!
![image.png](attachment:1e8df6d6-d879-4d73-adeb-3ba9620bd535.png)
![484.jpg](attachment:b780ea95-74e5-417f-b2de-92c225c28d02.jpg)
```python
import shutil
import os
from PIL import Image
# Create a directory for the resized images if it doesn't
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Unet模型和并联注意力机制实现猫和老鼠动画片的语义分割,其中并联注意力机制受CBAM注意力机制的启发,将通道注意力机制机制和空间注意力机制并联,给予不同通道不同空间不同权重。本项目使用的数据集通过爬虫获取,清洗后使用百度平台EasyData进行标注,共682张,其中545中用来训练,137张用来测试。本项目使用Visio可视化模型结构图,并对比了原版Unet、添加CBAM注意力机制和添加本项目提出的并联注意力机制三种模型。在项目的最后,通过进行模型测试,证明模型有较好的语义分割能力。 本项目使用爬虫技术获取数据集,经过数据清洗后使用百度EasyData平台实现数据标注,通过Pytorch框架搭建Unet模型,使用Resnet50作为编码器。使用迁移学习的思想,加载Resnet50在VOC数据集上训练好的预训练模型,从而减少计算量和资源的消耗。通过引入CBAM注意力机制,加强模型对图像中重要信息的捕捉。在此基础上,继续改进,提出了并联注意力机制,通过并联通道注意力机制和空间注意力机制进一步加强模型的对不同信息的关注度。通过实验证明,所提出的并联注意力机制的有效性。
资源推荐
资源详情
资源评论
收起资源包目录
Unet-Tom-Jerry-main.rar (15个子文件)
utils.py 3KB
Myattention.py 2KB
predict.py 9KB
get_miou.py 3KB
utils_metrics.py 9KB
dataloader.py 6KB
dataloader_medical.py 6KB
unet.py 3KB
resnet.py 6KB
vgg.py 3KB
utils_fit.py 11KB
callbacks.py 8KB
train.py 31KB
README.md 45KB
unet_training.py 5KB
共 15 条
- 1
资源评论
十小大
- 粉丝: 9221
- 资源: 2552
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功