From 84d87d9609a0bf5dfa5be1c956b4e6f6f4096c00 Mon Sep 17 00:00:00 2001
From: Jules Laplace
')
+ rec.push("
")
+ rec.push(addressString)
+ if (year) {
+ rec.push(" (" + year + ")")
+ }
+ return rec.join("")
+ })
- const addressString = addresses.map(addr => addr.name).join('
')
- message = message.concat([
- "
",
- addressString,
- ])
- if (year) {
- message.push(" (" + year + ")")
- }
- marker.bindPopup(message.join(''))
+ marker.bindPopup(message.join('
'))
return marker
}
@@ -73,7 +79,7 @@ function addArc(map, src, dest, arcStyle) {
export default function append(el, payload) {
const { data } = payload
if (!data) return
- let { paper, addresses, citations } = data
+ let { paper, citations } = data
let source = [0, 0]
let map = L.map(el).setView([25, 0], 2)
@@ -87,30 +93,41 @@ export default function append(el, payload) {
accessToken: 'pk.eyJ1IjoiZmFuc2FsY3kiLCJhIjoiY2pvN3I1czJwMHF5NDNrbWRoMWpteHlrdCJ9.kMpM5syQUhVjKkn1iVx9fg'
}).addTo(map)
- if (addresses && addresses.length) {
- source = [address[0].lat, address[0].lng].map(n => (parseFloat(n) || 0))
+ if (paper.addresses && paper.addresses.length) {
+ source = [paper.addresses[0].lat, paper.addresses[0].lng].map(n => (parseFloat(n) || 0))
} else {
console.error("No address found for root paper")
// console.log(data)
}
// group papers by address
+ let citationsByAddress = {}
citations.forEach(citation => {
- console.log(citation)
if (!citation.addresses) {
console.log(citation)
return
}
- const citationAddress = citation.addresses[0]
+ citation.addresses.forEach(address => {
+ if (!(address.name in citationsByAddress)) {
+ citationsByAddress[address.name] = { address, citations: []}
+ }
+ citationsByAddress[address.name].citations.push(citation)
+ })
+ })
+
+ Object.keys(citationsByAddress).map(name => {
+ const { citations: citationList, address: citationAddress } = citationsByAddress[name]
+ console.log(name, citationsByAddress[name])
+ // console.log(citation)
const latlng = [citationAddress.lat, citationAddress.lng].map(n => parseFloat(n))
if (Number.isNaN(latlng[0]) || Number.isNaN(latlng[1])) return
- addMarker(map, latlng, citation.title, citation.addresses, citation.year, citation.pdf)
+ addMarker(map, latlng, citationList)
addArc(map, source, latlng, arcStyles[citationAddress.type])
})
console.log(paper)
- const rootMarker = addMarker(map, source, paper.title, addresses, paper.year)
+ const rootMarker = addMarker(map, source, [paper])
rootMarker.openPopup()
// a transparent div to cover the map, so normal scroll events will not be eaten by leaflet
--
cgit v1.2.3-70-g09d2
From 9d1915af786379446ac7465215b6f3679f270e19 Mon Sep 17 00:00:00 2001
From: Jules Laplace
')
- rec.push("
")
- rec.push(addressString)
if (year) {
rec.push(" (" + year + ")")
}
+ const addressString = addresses.map(addr => addr.name).join('
')
+ rec.push("
")
+ rec.push(addressString)
return rec.join("")
})
@@ -107,6 +107,7 @@ export default function append(el, payload) {
console.log(citation)
return
}
+ console.log(citation)
citation.addresses.forEach(address => {
if (!(address.name in citationsByAddress)) {
citationsByAddress[address.name] = { address, citations: []}
@@ -122,7 +123,16 @@ export default function append(el, payload) {
const latlng = [citationAddress.lat, citationAddress.lng].map(n => parseFloat(n))
if (Number.isNaN(latlng[0]) || Number.isNaN(latlng[1])) return
addMarker(map, latlng, citationList)
- addArc(map, source, latlng, arcStyles[citationAddress.type])
+ const style = { ...arcStyles[citationAddress.type] }
+ let weight = Math.min(citationList.length, 5)
+ let opacity = 0.5 + Math.min(citationList.length / 5, 0.5)
+ if (citationAddress.type !== 'edu') {
+ weight += 1
+ opacity = 1
+ }
+ style.weight = String(weight)
+ style.opacity = opacity
+ addArc(map, source, latlng, style)
})
console.log(paper)
diff --git a/site/assets/css/applets.css b/site/assets/css/applets.css
index e5c427b2..10c0e786 100644
--- a/site/assets/css/applets.css
+++ b/site/assets/css/applets.css
@@ -168,6 +168,10 @@
.desktop .map_cover:hover {
opacity: 1;
}
+.leaflet-popup-content-wrapper {
+ max-height: 230px;
+ overflow-y: auto;
+}
.leaflet-popup-content a {
color: #0078A8;
border-bottom: 1px solid rgba(0, 128, 160, 0.4);
--
cgit v1.2.3-70-g09d2
From 45bf844c0891098232b2a7ff5458cd2de32acbdf Mon Sep 17 00:00:00 2001
From: adamhrv
MegaPixels is art and research by Adam Harvey about facial recognition datasets that unravels their histories, futures, geographies, and meanings. Throughout 2019 this site this site will publish research reports, visualizations, raw data, and interactive tools to explore how publicly available facial recognition datasets contribute to a global supply chain of biometric data that powers the global facial recognition industry.
- -During the last year, hundreds of these facial analysis datasets created "in the wild" have been collected to understand how they contribute to a global supply chain of biometric data that is powering the global facial recognition industry. - -The MegaPixels website is produced in partnership with [Mozilla](https://mozilla.org). +The MegaPixels site is made possible with support from Mozillais Berlin-based American artist and researcher. His previous projects (CV Dazzle, Stealth Wear, and SkyLift) explore the potential for countersurveillance as artwork. He is the founder of VFRAME (visual forensics software for human rights groups), the recipient of 2 PrototypeFund grants, and is a researcher in residence at Karlsruhe HfG.
-
- ahprojects.com
+
is Berlin-based American artist and researcher. His previous projects (CV Dazzle, Stealth Wear, and SkyLift) explore the potential for counter-surveillance as artwork. He is the founder of VFRAME (visual forensics software for human rights groups) and is a currently researcher in residence at Karlsruhe HfG.
+is an American creative technologist also based in Berlin. He was previously the CTO of a digital agency in NYC and now also works at VFRAME, developing computer vision for human rights groups. Jules also builds creative software for artists and musicians.
-
- asdf.us
+
is an American technologist and artist also based in Berlin. He was previously the CTO of a digital agency in NYC and now also works at VFRAME, developing computer vision and data analysis software for human rights groups. Jules also builds experimental software for artists and musicians.
+[ page under development ]
+(PAGE UNDER DEVELOPMENT)
-Collectively, facial recognition datasets are now gathered "in the wild".
-MegaPixels is art and research by Adam Harvey about facial recognition datasets that unravels their histories, futures, geographies, and meanings. Throughout 2019 this site this site will publish research reports, visualizations, raw data, and interactive tools to explore how publicly available facial recognition datasets contribute to a global supply chain of biometric data that powers the global facial recognition industry.
During the last year, hundreds of these facial analysis datasets created "in the wild" have been collected to understand how they contribute to a global supply chain of biometric data that is powering the global facial recognition industry.
-The MegaPixels website is produced in partnership with Mozilla.
+MegaPixels is an independent art and research project by Adam Harvey and Jules LaPlace investigating the ethics and individual privacy implications of publicly available face recognition datasets, and their role in industry and governmental expansion into biometric surveillance technologies.
+The MegaPixels site is made possible with support from Mozilla
is Berlin-based American artist and researcher. His previous projects (CV Dazzle, Stealth Wear, and SkyLift) explore the potential for countersurveillance as artwork. He is the founder of VFRAME (visual forensics software for human rights groups), the recipient of 2 PrototypeFund grants, and is a researcher in residence at Karlsruhe HfG.
-
- ahprojects.com
+
is Berlin-based American artist and researcher. His previous projects (CV Dazzle, Stealth Wear, and SkyLift) explore the potential for counter-surveillance as artwork. He is the founder of VFRAME (visual forensics software for human rights groups) and is a currently researcher in residence at Karlsruhe HfG.
+is an American creative technologist also based in Berlin. He was previously the CTO of a digital agency in NYC and now also works at VFRAME, developing computer vision for human rights groups. Jules also builds creative software for artists and musicians.
-
- asdf.us
+
is an American technologist and artist also based in Berlin. He was previously the CTO of a digital agency in NYC and now also works at VFRAME, developing computer vision and data analysis software for human rights groups. Jules also builds experimental software for artists and musicians.
+MegaPixels.cc is an independent research project about publicly available face recognition datasets. This website is based, in part, on earlier installations and research project about facial recognition datasets in 2016-2018, in particular the MegaFace dataset. Since then it has evolved into a large-scale survey and analysis of publicly available face and person analysis dataset usage, geographies, and ethics.
+An academic report and presentation on the findings is forthcoming. This site is published to make the research more accessible to a wider audience and to include visualizations and interactive features not possible in PDF publications. Continued research on MegaPixles is supported by a 1 year Researcher-in-Residence grant from Karlsruhe HfG.
+When possible, and once thoroughly verified, data generated for MegaPixels will be made available for download on github.com/adamhrv/megapixels
+Please direct questions, comments, or feedback to mastodon.social/@adamhrv
+