seg

Extract Image Segmentation Map from Tensorflow DeepLab v3 Demo

匿名 (未验证) 提交于 2019-12-03 01:18:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have set up the Google's DeepLab V3 Demo on my local system and it runs successfully after making some minor changes. It's as: # -*- coding: utf-8 -*- # DeepLab Demo This demo will demostrate the steps to run deeplab semantic segmentation model on sample input images. """ import os from io import BytesIO import tarfile import tempfile from six.moves import urllib from matplotlib import gridspec from matplotlib import pyplot as plt import numpy as np from PIL import Image import tensorflow as tf class DeepLabModel(object): """Class to load

经典网络复现系列(二):SegNet

匿名 (未验证) 提交于 2019-12-03 00:22:01
1、论文简要 和FCN结构相似,只不过编码器使用了VGG16的13个卷积层,在池化过程中,保存了最大池化的索引。上采样到恢复到原本的位置,其他位置的元素为0,然后进行反卷积。 这样做的好处在于 1)改善边界描述 2)减少end2end的训练参数(与FCN相比节约内存) 3)这样的形式可用于多种encoder-decoder架构 有工作将RNN、条件随机场(CRF)引入配合decoder做预测,有助于提高边界描绘能力,并且指出了,CRF-RNN这一套可以附加到包括SegNet在内的任何深度分割模型。 现有的多尺度的深度神经网络架构的应用,常见两种形式: 将输入放缩为多个尺度得到相应的feature map 将一张图送到模型,得到不同层的feature map 这些方法的共同想法都是使用多尺度信息将高层的feature map包含的语义信息与底层的feature map包含的精度信息融合到一起。但是,这样方法参数多,比较难训练。 参考博客https://blog.csdn.net/u011974639/article/details/78916327 2、网络结构 SegNet的正式版有13个卷积层,5个池化层,对应有13个反卷积层,5个上采样层。 我复现了一个basic版,共4个卷积层,4个池化层,对应4个反卷积层和4个上采样层。 [7,7,3,64] [7,7,64,64]

POJ 2376

匿名 (未验证) 提交于 2019-12-03 00:03:02
题意略。 思路: 本题有几个坑: 1.[1,5] , [6,10] 是对 [1,10] 的全覆盖,所以我们要把区间变为[1,6)和[6,11),最后判断连续区间右端是否大于T。 2.牛的工作时间可能会超过T,要及时跳出循环。 3.区间有可能左端没有覆盖到1。 代码如下: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std ; const int maxn = 25005 ; struct seg { int l , r ; seg ( int l = 0 , int r = 0 ){ this -> l = l , this -> r = r ; } }; int N , T ; seg store [ maxn ]; bool cmp ( const seg & s0 , const seg & s1 ){ if ( s0 . l != s1 . l ) return s0 . l < s1 . l ; return s0 . r > s1 . r ; } int main (){ scanf ( "%d%d" ,& N ,& T ); int l , r ; for ( int i = 0 ; i < N ;++ i ){ scanf

树套树-线段树套平衡树

匿名 (未验证) 提交于 2019-12-02 23:55:01
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<cmath> #include<map> #include<bitset> #pragma GCC optimize(2) #define rep(i,a,b) for(int i=(a);i<=(b);++i) #define dwn(i,a,b) for(int i=(a);i>=(b);--i) using namespace std; typedef long long ll; const int N=6000000,inf=2147483647; int n,m,maxn,a[N+10]; int tot,rt[N+10],sz[N+10],rec[N+10],v[N+10],fa[N+10],ch[N+10][2]; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }

回滚线段树+bitset优化01背包――cf981E

匿名 (未验证) 提交于 2019-12-02 23:48:02
/*首先考虑如何计算一个点的可能凑出的值,这就是一个01可行性背包问题那么再拓展到一段区间[1..n]的点上,每个query都可以看做是一段区间上的点[l,r]加上一个体积为x的物品,转换到01背包上就是进行一次更新那么用线段树来维护每个query的区间更新 每个位置(区间)维护一个bitset,每次加入a都进行一次01背包 用线段树来维护区间的bitset,表示一段区间能组成的值 但是没法用lazy,每次区间更新只能停留在一段区间可以把每次停留在区间的数a用vector保存下来,当进行完所有的更新时,从线段树叶子结点开始向上回滚每个区间的可行性是左儿子的可行性|右儿子的可行性|vector里存的每个a提供的可行性贡献 */ #include<bits/stdc++.h> using namespace std; int n,m; #define maxn 10005 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 struct Node{int l,r,x;}p[maxn]; bitset<10005>seg[maxn<<2]; vector<int>v[maxn<<2]; void build(int l,int r,int rt){ seg[rt][0]=1; if(l==r)return; int m=l+r>>1;

python3 jieba分词(windows10 + Anaconda+pycharm)

匿名 (未验证) 提交于 2019-12-02 22:51:30
1.安装jieba 解决方法参考了: Python3.3 - ImportError: No module named 'setuptools' Windons7中安装python的模块出现No module named setuptools错误 ȥ 官网 下载setuptools39.2.0 2.查看是否安装成功 # encoding=utf-8 import jieba seg_list = jieba.cut( " 我来到北京清华大学 " , cut_all=True) print ( "Full Mode: " + "/ " . join # ȫģʽ seg_list = jieba.cut( " 我来到北京清华大学 " , cut_all=False) print ( "Default Mode: " + "/ " . join # 精确模式 seg_list = jieba.cut( " 他来到了网易杭研大厦 " # 默认是精确模式 print ( ", " . join (seg_list)) seg_list = jieba.cut_for_search( " 小明硕士毕业于中国科学院计算所,后在日本京都大学深造 " # 搜索引擎模式 print ( ", " . join (seg_list)) 安装成功,能使用。 3.在pycharm里使用,也可以。 文章来源:

保卫王国

送分小仙女□ 提交于 2019-12-02 19:23:52
洛谷 ddp板子题呢 #include<bits/stdc++.h> #define re return #define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std; template<typename T>inline void rd(T&x) { char c;bool f=0; while((c=getchar())<'0'||c>'9')if(c=='-')f=1; x=c^48; while((c=getchar())>='0'&&c<='9')x=x*10+(c^48); if(f)x=-x; } #define int long long const int maxn=1e5+5; int n,m,hd[maxn],p[maxn]; struct node{ int to,nt; }e[maxn<<1]; int k; inline void add(int x,int y) { e[++k].to=y;e[k].nt=hd[x];hd[x]=k; e[++k].to=x;e[k].nt=hd[y];hd[y]=k; } int siz[maxn],son[maxn],fa[maxn]; inline void dfs1(int x) { siz[x]=1; for(int i=hd[x];i;i=e[i]

数对

百般思念 提交于 2019-12-02 19:00:23
题解 算是历史遗留问题的解决 之前队长快跑看题解很迷糊,觉得似懂非懂的,AC但是很水,最后代码都不是我的,是$王_{drink_{grass}}$的 现在总算会了 首先题目中条件就是$max(a)<=b_i$ 暴力dp就是$f[i][j]$表示考虑了前$i$个位置最大值为$j$时权值最大是多少 于是分情况讨论 1.$a_i>b_i$ 因为要满足$max(a)<=b_i$所以$f[i][a[i]]=max(f[i-1][1],f[i-1][2],,,,,f[i-1][b[i]])+val$这些位置最大值都会改变为$a[i]$ 2.$a_i<b_i$ 因为要满足$max(a)<=b_i$显然在$a_i--b_i$之间$f[i-1][a[i]]--f[i-1][b[i]]$之间最大值不会变直接+val即可 在$1--a_{i-1}$,最大值变为$a[i]$,于是就有了$f[i][a[i]]=max(f[i-1][1],f[i-1][2],,,,,f[i-1][a[i-1]])+val$ 可以用线段树维护 $f[i][a[i]]=max(f[i-1][1],f[i-1][2],,,,,f[i-1][b[i]])+val$ $f[i][a[i]]=max(f[i-1][1],f[i-1][2],,,,,f[i-1][a[i-1]])+val$ 就是区间最大值,单点赋值 $f[i-1][a[i

线段树(标记下传乘法和加法)

时光总嘲笑我的痴心妄想 提交于 2019-12-02 16:21:19
传送门: https://www.luogu.org/problem/P3373 标记下传,这种东西就是在求和和更改的时候进行pushdown把标记(各种标记,类似于寒冰标记、痛苦标记、穹妹标记……)下传,来节省时间。 还是挺简单的,主要问题处在pushdown上但多看看就会了 #include<bits/stdc++.h> using namespace std; long long n,m,p; long long multag[1000009]; long long addtag[1000009]; long long seg[4000009]; long long num[1000009]; inline long long kd() { long long x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+(ch^48);ch=getchar();} return x*f; } inline long long ls(long long x){return x<<1;} inline long long rs(long long x){return x<<1|1;} void build(long

思维+multiset优化——cf1249E

倖福魔咒の 提交于 2019-12-02 11:26:47
正着想很难,但是反着想就容易有思路 /* 将问题转化为 挑选最多的线段,每个点的覆盖次数不超过k次 multiset里存k个右端点,表示第i层当前的最远右端点,每次来一根新线段,能填就填进并更新,不能填就更新右端点, 线段seg 能填进当且仅当multiset的首元素<seg.s, 然后把这个首元素删除,更新为seg.t 反之找到multiset的尾元素,如果>seg.t,那么更新为seg.t */ #include<bits/stdc++.h> #include<set> using namespace std; #define N 200005 struct Seg{int l,r,id;}seg[N]; int cmp(Seg a,Seg b){return a.l<b.l;} multiset<pair<int,int> >s; multiset<pair<int,int> >::iterator it,itt; int n,k,has[N]; int main(){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>seg[i].l>>seg[i].r; seg[i].id=i; } sort(seg+1,seg+1+n,cmp); for(int i=1;i<=k;i++)s.insert(make_pair(0,0)); int ans=0