【深度學習】——2021年FPN特征金字塔

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/4/22 17:06
# @Author  : @linlianqin
# @Site    : 
# @File    : fpn.py
# @Software: PyCharm
# @description:其搭建的基本流程和resnet是一致的,只是將每一層的卷積結果保存了起來import torch
import torch.nn as nn
import torch.nn.functional as F# ResNet的基本Bottleneck類
class Bottleneck(nn.Module):expansion = 4  # 通道倍增數def __init__(self, in_planes, planes, stride=1, downsample=None):super(Bottleneck, self).__init__()self.bottleneck = nn.Sequential(nn.Conv2d(in_planes, planes, (1,1), bias=False),nn.BatchNorm2d(planes),nn.ReLU(inplace=True),nn.Conv2d(planes, planes, (3,3), (stride,stride), (1,1), bias=False),nn.BatchNorm2d(planes),nn.ReLU(inplace=True),nn.Conv2d(planes, self.expansion * planes, (1,1), bias=False),nn.BatchNorm2d(self.expansion * planes),)self.relu = nn.ReLU(inplace=True)self.downsample = downsampledef forward(self, x):identity = xout = self.bottleneck(x)if self.downsample is not None:identity = self.downsample(x)out += identityout = self.relu(out)return out# FNP的類,初始化需要一個list,代表RESNET的每一個階段的Bottleneck的數量
class FPN(nn.Module):def __init__(self, layers):super(FPN, self).__init__()self.inplanes = 64# 處理輸入的C1模塊(C1代表了RestNet的前幾個卷積與池化層)self.conv1 = nn.Conv2d(3, 64, (7,7), (2,2), (3,3), bias=False)self.bn1 = nn.BatchNorm2d(64)self.relu = nn.ReLU(inplace=True)self.maxpool = nn.MaxPool2d(3, 2, 1)# 搭建自下而上的C2,C3,C4,C5self.layer1 = self._make_layer(64, layers[0])self.layer2 = self._make_layer(128, layers[1], 2)self.layer3 = self._make_layer(256, layers[2], 2)self.layer4 = self._make_layer(512, layers[3], 2)# 對C5減少通道數,得到P5self.toplayer = nn.Conv2d(2048, 256, (1,1),(1,1) ,(0,0))# 3x3卷積融合特征self.smooth1 = nn.Conv2d(256, 256, (3,3), (1,1), (1,1))self.smooth2 = nn.Conv2d(256, 256, (3,3), (1,1), (1,1))self.smooth3 = nn.Conv2d(256, 256, (3,3), (1,1), (1,1))# 橫向連接,保證通道數相同self.latlayer1 = nn.Conv2d(1024, 256,  (1,1),(1,1) ,(0,0))self.latlayer2 = nn.Conv2d(512, 256,  (1,1),(1,1) ,(0,0))self.latlayer3 = nn.Conv2d(256, 256,  (1,1),(1,1) ,(0,0))def _make_layer(self, planes, blocks, stride=1):downsample = Noneif stride != 1 or self.inplanes != Bottleneck.expansion * planes:downsample = nn.Sequential(nn.Conv2d(self.inplanes, Bottleneck.expansion * planes, (1,1), (stride,stride), bias=False),nn.BatchNorm2d(Bottleneck.expansion * planes))layers = []layers.append(Bottleneck(self.inplanes, planes, stride, downsample))self.inplanes = planes * Bottleneck.expansionfor i in range(1, blocks):layers.append(Bottleneck(self.inplanes, planes))return nn.Sequential(*layers)# 自上而下的采樣模塊def _upsample_add(self, x, y):_, _, H, W = y.shapereturn F.interpolate(x,size=(H,W),mode='bilinear',align_corners=False) + ydef forward(self, x):# 自下而上c1 = self.maxpool(self.relu(self.bn1(self.conv1(x))))c2 = self.layer1(c1)c3 = self.layer2(c2)c4 = self.layer3(c3)c5 = self.layer4(c4)# 自上而下p5 = self.toplayer(c5)p4 = self._upsample_add(p5, self.latlayer1(c4))p3 = self._upsample_add(p4, self.latlayer2(c3))p2 = self._upsample_add(p3, self.latlayer3(c2))# 卷積的融合,平滑處理p4 = self.smooth1(p4)p3 = self.smooth2(p3)p2 = self.smooth3(p2)return p2, p3, p4, p5if __name__ == '__main__':model = FPN([3,4,6,3]) # FPN網絡模型input = torch.randn(1,3,224,224)out = model(input)print(out[1].shape)

理論參考:https://blog.csdn.net/qq_41251963/article/details/109398699?ops_request_misc=&request_id=&biz_id=102&utm_term=fpn%20pytorch%E6%BA%90%E7%A0%81%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255928.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NoSQL分類及ehcache memcache redis 三大緩存的對比

NoSQL分類 由于NoSQL中沒有像傳統數據庫那樣定義數據的組織方式為關系型的,所以只要內部的數據組織采用了非關系型的方式,就可以稱之為NoSQL數據庫。目前,可以將眾多的NoSQL數據庫按照內部的數據組織形式進行如下分類: Key/Value的…

52.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)

$ apt-cache search php-apc php-apc - APC (Alternative PHP Cache) module for PHP 5$ sudo apt-get install php-apcapc cache 狀態監控 http://pecl.php.net/package/APC 下載解包找到apc.php,放到web服務器上 原文出處:Netkiller 系列 手札 本文作者&#xff1…

樂視云計算基于OpenStack的IaaS實踐

本文作者岳龍廣,現在就職于樂視云計算有限公司,負責IaaS部門的工作。 從開始工作就混在開源世界里,在虛擬化方面做過CloudStack/Ovirt開發,現在是做以OpenStack為基礎的樂視云平臺。所以對虛擬化情有獨鐘,也對虛擬化/云…

【深度學習】——如何提高map值

目錄 代碼獲取 map原理 map提高技巧 技巧總結: 實戰: 1、效果不佳map55.55% 1)單獨調整get_dr_txt.py中的self.iou 0.3 2)單獨調整get_map,py中的minoverlap: 3)同時調整minoverlap和self.iou 本文是在faster_rcnn模型的…

每日站立會議個人博客(沖刺周)-Wednesday

時間未完成不知道如何獲取具體標簽里的內容正在做爬蟲技術之獲取標簽里的內容將要做對運用爬蟲技術獲取的數據進行處理轉載于:https://www.cnblogs.com/andibier/p/8075098.html

數據庫水平切分的實現原理解析——分庫,分表,主從,集群,負載均衡器(轉)...

第1章 引言 隨著互聯網應用的廣泛普及,海量數據的存儲和訪問成為了系統設計的瓶頸問題。對于一個大型的互聯網應用,每天幾十億的PV無疑對數據庫造成了相當高的負載。對于系統的穩定性和擴展性造成了極大的問題。通過數據切分來提高網站性能,橫…

【深度學習】——糾錯error: Unable to find vcvarsall.bat:關于安裝pycocotools

1、安裝包下載 大佬改寫支持 Windows 的 COCO 地址:https://github.com/philferriere/cocoapi 下載后如下: 進入pythonAPI 先后運行: python setup.py build_ext --inplacepython setup.py build_ext install 出現以下標志時&#xff0c…

【小貼士】虛擬鍵盤與fixed帶給移動端的痛!

前言今天來公司的主要目的就是研究虛擬鍵盤與fixed的問題,期間因為同事問起閉包與事件委托(阻止冒泡)相關問題,便穿插了一篇別的:【小貼士】工作中的”閉包“與事件委托的”阻止冒泡“,有興趣的朋友可以去看…

[OJ] Wildcard Matching (Hard)

LintCode 192. Wildcard Matching (Hard)LeetCode 44. Wildcard Matching (Hard) 第二次刷還是被這題虐. 其實就是跪在一個地方, 就是關于mustFail的地方. 當*p && !*s的時候, 說明s已經被用完了, p還沒有被窮盡, 這種情況下要直接退出所有的遞歸返回false, 因為s都匹配…

CSS3 -webkit-transition(屬性漸變)

-webkit-transition:CSS屬性(none|all|屬性) 持續時間 時間函數 延遲時間 CSS屬性(transition-property):要變化的屬性,比如元素變寬則是width,文字顏色要變色這是color;W3C給出了一個可變換屬性的列表:…

vxworks的default boot line說明

boot程序的主要功能是引導vxworks 內核,所以boot程序需要知道vxworks的內核存放在何處,通過什么手段去獲取。在vxworks缺省的boot程序里有一條內建的default boot line,它指明了獲得vxworks內核的途徑,在boot程序啟動時,它先尋找NVRAM里面有無…

【機器視覺】——相機和鏡頭的選擇

目錄 1、相機選擇 2、鏡頭選擇 3、其他計算公式 1)芯片尺寸計算:

React Native中pointerEvent屬性

在React Native界面開發中, 如果使用絕對定位布局,在代碼運行時的某個時刻有可能會遮蓋住它的下方的某個組件。這是因為絕對定位只是說這個組件的位置由它父組件的邊框決定。 絕對定位的組件可以被認為會覆蓋在它前面布局(JSX代碼順序)的組件的上方. 如果…

Rar Java Zip

http://wolfdream.iteye.com/blog/428588轉載于:https://www.cnblogs.com/diyunpeng/p/5218381.html

庫卡機器人CELL程序解析

KUKA機器人 CELL程序 解析及注釋&ACCESS RVP&REL 4&COMMENT HANDLER on external automaticDEF CELL ( );EXT EXAMPLE1 ( );EXT EXAMPLE2 ( );EXT EXAMPLE3 ( ) ;FOLD INITDECL CHAR DMY[3]DMY[]"---";ENDFOLD (INIT);FOLD BASISTECH INIIR_STOPM ( )…

Ubuntu 16.04服務器安裝及軟件配置

1.配置靜態地址 vim /etc/network/interfaces auto enp1s0 iface enp1s0 inet static address 192.168.1.131 netmask 255.255.255.0auto enp2s0 iface enp2s0 inet static address 192.168.2.131 netmask 255.255.255.0auto enp3s0 iface enp3s0 inet static address 192.168.…

[軟件測試airtest軟件安裝]——填坑

目錄 1、安裝Python環境(版本問題) 2、連接手機出現連接上了但是無法進行點擊 airtest官網: https://airtest.doc.io.netease.com/for_newer/ 關于軟件測試剛入門的可以參考進行了解:https://airtest.doc.io.netease.com/tuto…

KUKA 機器人SPS.SUB程序解析

&ACCESS RVO&COMMENT PLC on controlDEF SPS ( );FOLD DECLARATIONS;FOLD BASISTECH DECL;Automatik externDECL STATE_T STAT定義STATE_T類型的變量。該結構為:STRUC STATE_T CMD_STAT RET1, CMD_STAT是枚舉類型數據,組成了STATE_…

jquery validate表單驗證插件

1 表單驗證的準備工作 在開啟長篇大論之前,首先將表單驗證的效果展示給大家。 1.點擊表單項,顯示幫助提示         2.鼠標離開表單項時,開始校驗元素    3.鼠標離開后的正確、錯誤提示及鼠標移入時的幫助提醒 對于初學者而言&…

【Python位運算】——左移操作(<<)右移操作>>

目錄 左移操作 右移操作 其他博主的理解 應用——力扣題目78. 子集 解法 深度優先搜索 位運算 參考文獻 左移操作 # 左移操作&#xff0c;左移一位相當于乘以b&#xff0c;a<<b,a a*(2^b) print(2<<3) # 2*2^3 16&#xff0c;2的二進制10&#xff0c;向…