IBM, Microsoft and Linux plan to send patent trolls back under the rickety bridge
Like Billy Goats Gruff of old, they stand united
by Chris MerrimanTHREE OF Big Tech's biggest are joining forces to fight the scourge of the patent troll.
IBM, Microsoft and The Linux Foundation have agreed to become fully paid up members of the Open Invention Network (OIN), which has been battling the trolls for years now on behalf of its 200 member organisations and the community at large.
What this means in real terms is that the big three are bankrolling the OIN's work, giving it far more teeth as it fights against those who try to get rich through nuisance intellectual property (IP) lawsuits.
This will manifest as the new "Open Source Zone" of OIN, aimed at protecting the thousands of programmers who come up against the bad guys every year.
The OIN strategy is pretty straight forward - by doing a forensic analysis of the patents, it can create more rigid defence cases, thus pricing the troll out of court.
This can take a number of forms, most notably a ‘patent bug bounty' that rewards anyone who can find evidence to nullify claims - the trick is to get them to drop the case as unviable.
Wherever possible, OIN uses a strategy of non-aggression, instead, facilitating patent sharing amongst its members, and encouraging them to make their IP available, free of royalties to its members.
Ultimately, by creating an increasingly robust infrastructure of protection for code, OIN aims to stop trolls from mounting legal challenges in the first place.
Like all bullies, Patent Trolls (or Patent Assertion Entities (PAE) to give them their posh title) trade in fear. By banding together, OIN's new ‘zone' hopes that it can remove the element of fear for open-source coders, thus leaving the trolls powerless.
Alas, this news won't affect the biggest patent troll case of them all - Oracle's fight with Google, which has recently been escalated to the US Supreme Court. μ
Further reading
Microsoft is bringing Edge to Linux, for all the Microsoft fans running Linux*
- 05 Nov 2019
Linux driver suggests dual-GPU support for Intel's upcoming Xe graphics
- 24 Oct 2019
Linux kernel patch hints that Intel's 10nm desktop CPUs are coming
- 23 Oct 2019
Disney+ won't work on Linux at launch as the DRM is set too high
- 22 Oct 2019


We live in a world that is full of different types of communications. The need for social skills increases as conversation and technology rapidly evolves around us and influences our behavior. Social Clinic is a public performance/installation project discussing the emerging social issues. We use face recognition, emotion detection technique to discover people’s potential social symptoms and provide medicine and prescription.
Social Clinic proudly presents our Face Ray. Face Ray is a face detection photobooth installation, which can find out people’s potential social symptoms and gives prescription in real-time using clmtrackr.


About
This website is part of the course websoft Software Development for the Web DA377B
Link to: GitHub Course Repo
Lint to: GitHub Forked Course Repo
This website is part of the course websoft Software Development for the Web DA377B
Link to: GitHub Course Repo
Lint to: GitHub Forked Course Repo


import VisualNumerics.math.*;
import java.io.*;
class testCSVD {
public static void main(String args[]) {
int i, j, n=3, rnk, inf;
Complex s[], v[][], u[][], ainv[][];
Complex a[][] = new Complex[n][n];
for(i=0; i <
n; i++){
for(j=0; j <
n; j++){
a[i][j] = new Complex((double)(i+1), (double)(i*j+2));
}
}
try {
ComplexSVD svd = new ComplexSVD(a);
u = svd.U();
v = svd.V();
s = svd.S();
inf = svd.info();
rnk = svd.rank();
ainv = svd.inverse();
... print output ...
} catch (IllegalArgumentException e) {
System.err.println("From testCSVD "+e);
} catch (MathException e) {
System.err.println("From testCSVD "+e);
}
}
}
ComplexSVD
public ComplexSVD(Complex aa[][])
- Create the ComplexSVD of a rectangular matrix with default tolerance.
The tolerance used is 2.2204460492503e-14. This tolerance is used to
determine rank. A singular value is considered negligible if the singular
value is less than or equal to this tolerance.
- Parameters:
- aa - Complex matrix for which the singular value decomposition
is to be computed.
- Throws: IllegalArgumentException
- This exception is issued when the row lengths of
input matrix a are not equal (i.e. the matrix edges are "jagged".)
-
Algorithm:
-
This constructor is based on the LINPACK routine ZSVDC. Let n represent
the number of rows of matrix aa and let p represent the number of columns
of matrix aa.


Copyright © 2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
The Charter of the Web Application Formats Working Group includes a deliverable titled Specification of a declarative format for applications and user interfaces. This document includes the status of this deliverable and a recommendation that the Working Group stop formal work on this deliverable and consider this Note as the one and only publication for this deliverable. This Note also includes some potential options if W3C Members choose to do related work.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is a W3C Working Group Note of the Declarative Formats for Applications and User Interfaces, developed by the Web Application Formats Working Group as part of the Rich Web Clients Activity.
Please send comments about this document to<EMAIL_ADDRESS>(public archive) with a subject that is prefaced with "[dfaui]
".
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
On 15 November 2005 the W3C announced the decision to start the Web Application Formats (WAF) Working Group (WG). This WG's Charter includes a deliverable named Specification of a declarative format for applications and user interfaces (called DFAUI in this document) and it is defined as follows:
This Note includes a recommendation that the Working Group formally stop its work on this deliverable and consider this Note as the one and only document the WG will publish for the DFAUI. The document also includes the status of this deliverable and some options if Members choose to do DFAUI-related work.
The WAF WG consists of individuals from approximately twenty W3C Members plus two Invited Experts. Two of the WG's members are explicitly identified in the group's charter as potential contributors of a DFAUI base language but neither of these members made significant contributions.
The WG reviewed two inputs from its members:
The WG reviewed both of these inputs and created a draft DFAUI: Use Cases and Requirements document [DFAUI-UC] but the W3C never published the document.
The DFAUI was an agenda item on all six of the WG's face-to-face meetings that preceded the publication of this Note. It was also an agenda item on all of the WG's weekly voice conferences in 2006 and several of the group's 2007 voice conferences. Despite the significant time allocated to the DFAUI, progress on the deliverable was very slow, particularly compared to the WG's other specifications in progress: Widgets 1.0 Requirements, Widgets 1.0, Read Access for Web Resources, XML Binding Language (XBL) 2.0, XBL2 Primer.
The slow progress on the DFAUI was first reported to the W3C's Hypertext Coordination Group in the WG's bi-weekly status report on 10 November 2006 [Member-only]. The slow progress was first made Public via an e-mail from the Chair to the WG's Public mail list on 15 November 2006. Additionally, Telefonica's MyMobileWeb project's position presentation at the W3C's June 2007 public Declarative Models of Distributed Web Applications Workshop includes some of the issues related to the DFAUI's slow progress.
For all practical purposes, worked on the DFAUI deliverable stopped after the WG's April 2007 face-to-face meeting.
The primary reasons and factors that contributed to the slow progress on, and low participation in the DFAUI are:
The WG identifies the following options to begin or re-start work on a declarative format for applications and user interfaces or parts thereof:


The ability to detect the presence of a disease causing pathogen is the first step in formulating the treatment and containment strategy. Traditional pathogen detection methods rely upon the identification of agents that are already known to be associated with a particular clinical syndrome. The emerging field of metagenomics has the potential to revolutionize pathogen detection by allowing the simultaneous detection of all microorganisms in a clinical sample through the use of next-generation DNA sequencing. Over the last 20 years, the scientific community has designed individual DNA-based molecular diagnostics tests for most diseases of interest. Often times simple pathogen detection is not possible and scientists have to design test panels to detect different strains/types of a known disease. Every single test in this pathogen screening panel can adversely interact with each other and create inaccurate results. Hundreds of thousands of potential interactions need to be monitored, evaluated, and optimized during the panel design process. In short, the computational expertise needed to design such diagnostic tools is not always found in clinicians tasked with outbreak investigations.
The Fofanov Lab at Northern Arizona University, has designed and implemented a software application that automatically reviews the possible interactions that arise during panel creations, scores the quality of potential panels and generally helps the user design a better diagnostic panel.
This application has been widely used by researchers at NAU, but because of the Command Line Interface the application is not truly appealing to the larger biology community.
To ensure that this software is widely available to users of varying technical expertise, Dr. Fofanov and Dr. Furstenau decided to task our team with the implementation of Graphical User Interface for this application. This GUI will create a more intuitive user interface which will eliminate the challenges faced by non-technical users when using a command line based application.
The Fofanov Lab is part of The School of Informatics, Computing, and Cyber Systems (SICCS) at Northern Arizona University. The lab's primary area of research is in Bioinformatics. To learn more click here .
Compatible with Mac, Linux and Windows
Easy-to-use interface
Fast loading times
Output visualizations for analysis purposes
Ability to go back and forth between analysis stages
Intuitive navigation and smart window design
Images of various stages in the development of Primacy
Northern Arizona University
Flagstaff, AZ 86011
TuranNaimey@nau.edu


takerhat
.com
Eid Mubarak!
May Allah bless us with full of Happiness in every EID!
2021 - Takerhat.com
by
Riaj Mahmud Rasel


--- title: Models API and Pretrained weights keywords: fastai sidebar: home_sidebar nb_path: "nbs/00b_models.ipynb" ---
timm
supports a wide variety of pretrained and non-pretrained models for number of Image based tasks.
To get a complete list of models, use the list_models
function from timm
as below. The list_models
function returns a list of models ordered alphabetically that are supported by timm
. We just look at the top-5 models below.
import timm
timm.list_models()[:5]
In general, you always want to use factory functions inside timm
. Particularly, you want to use create_model
function from timm
to create any model. It is possible to create any of the models listed in timm.list_models()
using the create_model
function. There are also some wonderful extra features that we will look at later. But, let's see a quick example.
import random
import torch
random_model_to_create = random.choice(timm.list_models())
random_model_to_create
model = timm.create_model(random_model_to_create)
x = torch.randn(1, 3, 224, 224)
model(x).shape
In the example above, we randomly select a model name in timm.list_models()
, create it and pass some dummy input data through the model to get some output. In general, you never want to create random models like this, and it's only an example to showcase that all models in timm.list_models()
are supported by timm.create_model()
function. It's really that easy to create a model using timm
.
Of course! timm
wants to make it super easy for researchers and practioners to experiment and supports a whole lot of models with pretrained weights. These pretrained weights are either:
train.py
). The exact commands with hyperparameters to train these individual models are mentioned under Training Scripts
.To list all the models that have pretrained weights, timm
provides a convenience parameter pretrained
that could be passed in list_models
function as below. We only list the top-5 returned models.
timm.list_models(pretrained=True)[:5]
{% include note.html content='Just by listing the top-5 pretrained models, we can see that timm
does not currently have pretrained weights for models such as cspdarknet53_iabn
or cspresnet50d
. This is a great opportunity for new contributors with hardware availability to pretrain the models on Imagenet dataset using the training script and share these weights. ' %}
As you might already know, ImageNet data consists of 3-chanenl RGB images. Therefore, to be able to use pretrained weights in most libraries, the model expects a 3-channel input image.
import torchvision
m = torchvision.models.resnet34(pretrained=True)
# single-channel image (maybe x-ray)
x = torch.randn(1, 1, 224, 224)
# `torchvision` raises error
try: m(x).shape
except Exception as e: print(e)
As can be seen above, these pretrained weights from torchvision
won't work with single channel input images. As a work around most practitioners convert their single channel input images to 3-channel images by copying the single channel pixels accross to create a 3-channel image.
Basically, torchvision
above is complaining that it expects the input to have 3 channels, but got 1 channel instead.
# 25-channel image (maybe satellite image)
x = torch.randn(1, 25, 224, 224)
# `torchvision` raises error
try: m(x).shape
except Exception as e: print(e)
Again, torchvision
raises an error and this time there is no workaround to get past this error apart from just not using pretrained weights and starting with randomly initialized weights.
m = timm.create_model('resnet34', pretrained=True, in_chans=1)
# single channel image
x = torch.randn(1, 1, 224, 224)
m(x).shape
We pass in a parameter in_chans
to the timm.create_model
function and this somehow just magically works! Let's see what happens with the 25-channel image?
m = timm.create_model('resnet34', pretrained=True, in_chans=25)
# 25-channel image
x = torch.randn(1, 25, 224, 224)
m(x).shape
This works again! :)
timm
does all this magic inside the load_pretrained
function that get's called to load the pretrained weights of a model. Let's see how timm
achieves loading of pretrained weights.
from timm.models.resnet import ResNet, BasicBlock, default_cfgs
from timm.models.helpers import load_pretrained
from copy import deepcopy
Below, we create a simple resnet34
model that can take single channel images as input. We make this happen by passing in in_chans=1
to the ResNet
constructor class when creating the model.
resnet34_defaulg_cfg = default_cfgs['resnet34']
resnet34 = ResNet(BasicBlock, layers=[3, 4, 6, 3], in_chans=1)
resnet34.default_cfg = deepcopy(resnet34_defaulg_cfg)
resnet34.conv1
resnet34.conv1.weight.shape
As we can see from the first convolution of resnet34
above, the number of input channels is set to 1. And the conv1
weights are of shape [64, 1, 7, 7]
. This means that the number of input channels is 1, output channels is 64 and kernel size is 7x7
.
But what about the pretrained weights? Because ImageNet consists of 3-channel input images, the pretrained for this conv1
layer would be [64, 3, 7, 7]
.Let's confirm that below:
resnet34_defaulg_cfg
Let's load the pretrained weights from the model and check the number of input channels that conv1
expects.
import torch
state_dict = torch.hub.load_state_dict_from_url(resnet34_defaulg_cfg['url'])
Great, so we have loaded the pretrained weights of resnet-34 from 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/resnet34-43635321.pth'
URL, let's now check the shape of the weights for conv1
below:
state_dict['conv1.weight'].shape
So this layer expects the number of input channels to be 3!
{% include note.html content='We know this because the shape of conv1.weight
is [64, 3, 7, 7]
, this means that the number of input channels is 3
, output channels is 64
and the kernel size is 7x7
. ' %}{% include note.html content='This is why when we try to load pretrained weights, torchvision gives an error because our model’s conv1
layer weights would be of shape [64, 1, 7, 7]
because we set the number of input channels to be 1. I hope that this exception we saw above now makes more sense: Given groups=1, weight of size [64, 3, 7, 7], expected input[1, 1, 224, 224] to have 3 channels, but got 1 channels instead.
' %}
Something very clever happens inside the load_pretrained
function inside timm
. Basically, there's two main cases to consider when the expected number of input channels is not equal to 3. Either the input channels are 1 or not. Let's what happens in either case.
When the number of input channels is not equal to 3, then timm
updates the conv1.weight
of the pretrained weights accordingly to be able to load the pretrained weights.
If the number of input channels is 1, timm
simply sums the 3 channel weights into a single channel to update the shape of conv1.weight
to be [64, 1, 7, 7]
. This can be achieved like so:
conv1_weight = state_dict['conv1.weight']
conv1_weight.sum(dim=1, keepdim=True).shape
>> torch.Size([64, 1, 7, 7])
And thus by updating the shape of the first conv1
layer, we can now safely load these pretrained weights.
In this case, we simply repeat the conv1_weight
as many times as required and then select the required number of input channels weights.
{% include image.html alt="Pretrained Weights" width="500" class="center" max-width="500" file="/timmdocs/images/pretrained_weights.png" %}
As can be seen in the image above, let's say our input images have 8 channels. Therefore, number of input channels is equal to 8.
But, as we know our pretrained weights only have 3 channels. So how could we still make use of the pretrained weights?
Well, what happens in timm
has been shown in the image above. We copy the weights 3 times such that now the total number of channels becomes 9 and then we select the first 8 channels as our weights for conv1
layer.
This is all done inside load_pretrained
function like so:
conv1_name = cfg['first_conv']
conv1_weight = state_dict[conv1_name + '.weight']
conv1_type = conv1_weight.dtype
conv1_weight = conv1_weight.float()
repeat = int(math.ceil(in_chans / 3))
conv1_weight = conv1_weight.repeat(1, repeat, 1, 1)[:, :in_chans, :, :]
conv1_weight *= (3 / float(in_chans))
conv1_weight = conv1_weight.to(conv1_type)
state_dict[conv1_name + '.weight'] = conv1_weight
Thus, as can be seen above, we first repeat the conv1_weight
and then select required number of in_chans
from these copied weights.


{% extends "base.html" %} {% block title %}Pending Suggestions{% endblock %} {% block content %}
{{ suggestion.target_key }} @ {{ event.name }}
No suggestions! Go build more community!


Amir Brakic - Interests
Home
Education
Experience
Interests
Interests & Hobbies
Competitive multiplayer gaming
Casual singleplayer gaming
Playing trumpet in school bands
Researching and keeping up to date with hardware and software development companies, such as AMD, Nvidia and Intel
Amir Brakic


Log Out
Log In
Username:
Username can't be empty!
Password:
Password can't be empty!
Create an account
Email:
Email can't be empty!
Email already taken!
Please write a proper email address!
Password:
Password can't be empty!
Confirm password:
Please make sure passwords match!
You must copy your password!
First name:
First name can't be empty!
Last name:
Last name can't be empty!
Gender:
Male
Female
Please select a gender!
Confirm
Back
to welcome page