From 2a1b884e841efe562e0c84885a404819433b3405 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Dec 2018 16:19:50 +0100 Subject: styling images --- builder/builder.py | 4 +- builder/parser.py | 57 +++++++++--- builder/s3.py | 4 +- site/assets/css/css.css | 88 ++++++++++++++++-- site/public/about/credits/index.html | 5 +- site/public/about/disclaimer/index.html | 2 +- site/public/about/index.html | 5 +- site/public/about/press/index.html | 5 +- site/public/about/privacy/index.html | 2 +- site/public/about/style/index.html | 23 ++--- site/public/about/terms/index.html | 2 +- site/public/datasets/lfw/index.html | 56 +++++++++--- site/public/datasets/vgg_faces2/index.html | 5 +- site/public/index.html | 63 +++++++++++++ .../research/01_from_1_to_100_pixels/index.html | 101 +++++++++++++++++++++ site/templates/research.html | 2 +- 16 files changed, 357 insertions(+), 67 deletions(-) create mode 100644 site/public/index.html create mode 100644 site/public/research/01_from_1_to_100_pixels/index.html diff --git a/builder/builder.py b/builder/builder.py index 44fbd1c6..deb9eb68 100644 --- a/builder/builder.py +++ b/builder/builder.py @@ -40,11 +40,9 @@ def build_page(fn, research_posts): s3.sync_directory(dirname, s3_datasets_path, metadata) else: s3_path = "{}/{}/{}{}".format(os.getenv('S3_ENDPOINT'), os.getenv('S3_BUCKET'), s3_site_path, metadata['path']) - if 'index.md' in fn: + if 'index.md' in fn and metadata['url'] != '/': s3.sync_directory(dirname, s3_site_path, metadata) - print(s3_path) - content = parser.parse_markdown(sections, s3_path) html = template.render( diff --git a/builder/parser.py b/builder/parser.py index ea273556..529d21fa 100644 --- a/builder/parser.py +++ b/builder/parser.py @@ -1,4 +1,5 @@ import os +import re import glob import mistune from paths import * @@ -10,19 +11,28 @@ def fix_images(lines, s3_path): real_lines = [] block = "\n\n".join(lines) for line in block.split("\n"): - if "![" in line and "](http" not in line: - line = line.replace('](', '](' + s3_path) + if "![" in line: + print(line) + line = line.replace('![', '') + alt_text, tail = line.split('](', 1) + url, tail = tail.split(')', 1) + if ':' in alt_text: + tail, alt_text = alt_text.split(':', 1) + img_tag = "{}".format(s3_path + url, alt_text.replace("'", "")) + if len(alt_text): + line = "
{}
{}
".format(img_tag, alt_text) + else: + line = "
{}
".format(img_tag, alt_text) real_lines.append(line) return "\n".join(real_lines) -def wide_section(line, s3_path): - lines = fix_images(lines, s3_path) - return "
" + markdown(lines) + "
" - -def normal_section(lines, s3_path): +def format_section(lines, s3_path, type=''): if len(lines): lines = fix_images(lines, s3_path) - return "
" + markdown(lines) + "
" + if type: + return "
{}
".format(type, markdown(lines)) + else: + return "
" + markdown(lines) + "
" return "" def parse_markdown(sections, s3_path): @@ -31,13 +41,17 @@ def parse_markdown(sections, s3_path): for section in sections: if section.startswith('# '): continue - if '![wide]' in section: - groups.append(normal_section(current_group, s3_path)) - groups.append(wide_section([section], s3_path)) + if '![wide:' in section: + groups.append(format_section(current_group, s3_path)) + groups.append(format_section([section], s3_path, type='wide')) + current_group = [] + elif '![' in section: + groups.append(format_section(current_group, s3_path)) + groups.append(format_section([section], s3_path, type='images')) current_group = [] else: current_group.append(section) - groups.append(normal_section(current_group, s3_path)) + groups.append(format_section(current_group, s3_path)) content = "".join(groups) return content @@ -88,16 +102,22 @@ def parse_metadata(fn, sections): for key in default_metadata: if key not in metadata: metadata[key] = default_metadata[key] + + basedir = os.path.dirname(fn.replace(content_path, '')) basename = os.path.basename(fn) - metadata['path'] = os.path.dirname(fn.replace(content_path, '')) + '/' - if basename == 'index.md': + if basedir == '/': + metadata['path'] = '/' + metadata['url'] = '/' + elif basename == 'index.md': + metadata['path'] = basedir + '/' metadata['url'] = metadata['path'] else: + metadata['path'] = basedir + '/' metadata['url'] = metadata['path'] + basename.replace('.md', '') + '/' if metadata['status'] == 'published|draft|private': metadata['status'] = 'published' - metadata['authors'] = '
'.join(metadata['authors'].split(',')) + metadata['author_html'] = '
'.join(metadata['authors'].split(',')) return metadata, valid_sections def read_research_post_index(): @@ -107,5 +127,12 @@ def read_research_post_index(): if metadata is None or metadata['status'] == 'private' or metadata['status'] == 'draft': continue posts.append(metadata) + if not len(posts): + posts.append({ + 'title': 'Placeholder', + 'slug': 'placeholder', + 'date': 'Placeholder', + 'url': '/', + }) return posts diff --git a/builder/s3.py b/builder/s3.py index 7d4d52a0..f3dcce48 100644 --- a/builder/s3.py +++ b/builder/s3.py @@ -32,14 +32,14 @@ def sync_directory(base_fn, s3_path, metadata): del fns[fn] if obj['LastModified'].timestamp() < os.path.getmtime(os.path.join(local_fn)): print("s3 update {}".format(s3_fn)) - client.upload_file( + s3_client.upload_file( local_fn, os.getenv('S3_BUCKET'), s3_fn, ExtraArgs={ 'ACL': 'public-read' }) else: print("s3 delete {}".format(s3_fn)) - response = client.delete_object( + response = s3_client.delete_object( Bucket=os.getenv('S3_BUCKET'), Key=s3_fn, ) diff --git a/site/assets/css/css.css b/site/assets/css/css.css index c9d9b029..1024ffcd 100644 --- a/site/assets/css/css.css +++ b/site/assets/css/css.css @@ -120,14 +120,14 @@ h1 { margin: 75px 0 10px; padding: 0; } -h3 { - margin: 0 0 10px 0; +h2, h3 { + margin: 0 0 20px 0; padding: 0; font-size: 11pt; font-weight: 500; } -th, .gray, h3 { +th, .gray, h2, h3 { font-family: 'Roboto Mono', monospace; font-weight: 400; text-transform: uppercase; @@ -165,13 +165,89 @@ p { color: #fff; } code { - display: block; font-family: 'Roboto Mono', monospace; font-size: 9pt; + padding: 2px 4px; + background: rgba(255,255,255,0.1); +} +pre code { + display: block; max-height: 400px; max-width: 640px; - padding: 2px 5px; - background: rgba(255,255,255,0.1); +} +hr { + height: 1px; + background: #888; + border: 0; + width: 80px; +} +.footnotes hr { + display: none; +} +.footnotes ol:before { + content: 'Footnotes'; + margin: 0 0 10px -40px; + padding-bottom: 0; + display: block; + font-family: 'Roboto Mono', monospace; + font-weight: 400; + text-transform: uppercase; + color: #666; + font-size: 11pt; +} + +/* images */ + +section img { + max-width: 100%; + display: block; + margin: 0 auto; +} +section .image { + margin-bottom: 40px; +} +section.images { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: center; +} +.image:only-child { + width: 100%; +} +.image:first-child { + margin-left: 0; +} +.image:nth-child(2), +.image:nth-child(3) { + margin-left: 40px; +} +.image:first-child:nth-last-child(2), +.image:first-child:nth-last-child(2) ~ .image { + width: 300px; +} +.image:first-child:nth-last-child(3), +.image:first-child:nth-last-child(3) ~ .image { + width: 186px; +} +section.wide { + width: 100%; +} +section.wide .image { + max-width: 100%; +} +.caption { + text-align: center; + font-size: 9pt; + color: #888; + max-width: 620px; + margin: 10px auto 0 auto; +} + +blockquote { + margin-left: 28px; + padding: 0 0 0 10px; + border-left: 2px solid #555; } /* top of post metadata */ diff --git a/site/public/about/credits/index.html b/site/public/about/credits/index.html index 0b3f9db8..9fec7e64 100644 --- a/site/public/about/credits/index.html +++ b/site/public/about/credits/index.html @@ -20,15 +20,14 @@

Credits

-

alt text

-
    +
alt text
alt text
  • MegaPixels by Adam Harvey
  • Made with support from Mozilla
  • Site developed by Jules Laplace
  • diff --git a/site/public/about/disclaimer/index.html b/site/public/about/disclaimer/index.html index 1c14a97c..553bf084 100644 --- a/site/public/about/disclaimer/index.html +++ b/site/public/about/disclaimer/index.html @@ -20,7 +20,7 @@ diff --git a/site/public/about/index.html b/site/public/about/index.html index 8441e317..363e8fc0 100644 --- a/site/public/about/index.html +++ b/site/public/about/index.html @@ -20,14 +20,13 @@
    -

    alt text

    -
      +
      alt text
      alt text
      • MegaPixels by Adam Harvey
      • Made with support from Mozilla
      • Site developed by Jules Laplace
      • diff --git a/site/public/about/press/index.html b/site/public/about/press/index.html index 76ba90e4..aa6e5e13 100644 --- a/site/public/about/press/index.html +++ b/site/public/about/press/index.html @@ -20,15 +20,14 @@

        Press

        -

        alt text

        -
          +
        alt text
        alt text
        • Aug 22, 2018: "Transgender YouTubers had their videos grabbed to train facial recognition software" by James Vincent https://www.theverge.com/2017/8/22/16180080/transgender-youtubers-ai-facial-recognition-dataset
        • Aug 22, 2018: "Transgender YouTubers had their videos grabbed to train facial recognition software" by James Vincent https://www.theverge.com/2017/8/22/16180080/transgender-youtubers-ai-facial-recognition-dataset
        • Aug 22, 2018: "Transgender YouTubers had their videos grabbed to train facial recognition software" by James Vincent https://www.theverge.com/2017/8/22/16180080/transgender-youtubers-ai-facial-recognition-dataset
        • diff --git a/site/public/about/privacy/index.html b/site/public/about/privacy/index.html index 21fd2255..d1ec1c77 100644 --- a/site/public/about/privacy/index.html +++ b/site/public/about/privacy/index.html @@ -20,7 +20,7 @@ diff --git a/site/public/about/style/index.html b/site/public/about/style/index.html index 2e0c80d0..24e6f5be 100644 --- a/site/public/about/style/index.html +++ b/site/public/about/style/index.html @@ -20,21 +20,19 @@
          -

          Alt text here

          -

          Header 1

          -

          Header 2

          +
          Alt text here
          Alt text here

          Header 2

          Header 3

          Header 4

          Header 5
          Header 6

          Bold text, italic text, bold italic text

          -

          At vero eos et et iusto qui blanditiis praesentium voluptatum deleniti atque corrupti1, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non-provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio2. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus3.

          +

          At vero eos et et iusto qui blanditiis praesentium voluptatum deleniti atque corrupti[^1], quos dolores et quas molestias excepturi sint, obcaecati cupiditate non-provident, similique sunt in culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio[^2]. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus[^3].

          • Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium
          • Totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo
          • @@ -42,9 +40,15 @@
          • Odit aut fugit, sed quia consequuntur magni dolores eos
          • Qui ratione voluptatem sequi nesciunt, neque porro quisquam
          -

          est, qui dolorem ipsum, quia dolor sit amet consectetur adipisci[ng] velit, sed quia non-numquam [do] eius modi tempora inci[di]dunt, ut labore et dolore magnam aliquam quaerat voluptatem.

          +

          single image test

          +
          This person is alone
          This person is alone

          double image test

          +
          This person is on the left
          This person is on the left
          +
          This person is on the right
          This person is on the right

          triple image test

          +
          Person 1
          Person 1
          +
          Person 2
          Person 2
          +
          Person 3. Let me tell you about Person 3.  This person has a very long description with text which wraps like crazy
          Person 3. Let me tell you about Person 3. This person has a very long description with text which wraps like crazy

          est, qui dolorem ipsum, quia dolor sit amet consectetur adipisci[ng] velit, sed quia non-numquam [do] eius modi tempora inci[di]dunt, ut labore et dolore magnam aliquam quaerat voluptatem.

          -

          Inline code has back-ticks around it.

          +
          This image is extremely wide and the text beneath it will wrap but thats fine because it can also contain <a href="https://example.com/">hyperlinks</a>! Yes, you read that right—hyperlinks! Lorem ipsum dolor sit amet ad volotesque sic hoc ad nauseam
          This image is extremely wide and the text beneath it will wrap but that's fine because it can also contain hyperlinks! Yes, you read that right—hyperlinks! Lorem ipsum dolor sit amet ad volotesque sic hoc ad nauseam

          Inline code has back-ticks around it.

          var s = "JavaScript syntax highlighting";
           alert(s);
           
          @@ -59,10 +63,7 @@ But let's throw in a <b>tag</b>.

          Citations below here


          -
          1. First source

          2. -
          3. Second source

          4. -
          5. Third source

          6. -
          +
            diff --git a/site/public/about/terms/index.html b/site/public/about/terms/index.html index 73155546..4b9f4445 100644 --- a/site/public/about/terms/index.html +++ b/site/public/about/terms/index.html @@ -20,7 +20,7 @@ diff --git a/site/public/datasets/lfw/index.html b/site/public/datasets/lfw/index.html index 8455bc60..a130c24e 100644 --- a/site/public/datasets/lfw/index.html +++ b/site/public/datasets/lfw/index.html @@ -4,7 +4,7 @@ MegaPixels - + @@ -20,7 +20,7 @@ @@ -31,17 +31,15 @@
          1. Images 13,233
          2. People 5,749
          3. Created From Yahoo News images
          4. -
          5. Search available Searchable
          6. +
          7. Analyzed and searchable
          -

          Labeled Faces in The Wild is amongst the most widely used facial recognition training datasets in the world and is the first dataset of its kind to be created entirely from Internet photos. It includes 13,233 images of 5,749 people downloaded from the Internet, otherwise referred to by researchers as “The Wild”.

          -

          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.

          -

          INTRO

          +

          Labeled Faces in The Wild is amongst the most widely used facial recognition training datasets in the world and is the first dataset of its kind to be created entirely from Internet photos. It includes 13,233 images of 5,749 people downloaded from the Internet, otherwise referred to as “The Wild”.

          +
          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.
          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.

          INTRO

          It began in 2002. Researchers at University of Massachusetts Amherst were developing algorithms for facial recognition and they needed more data. Between 2002-2004 they scraped Yahoo News for images of public figures. Two years later they cleaned up the dataset and repackaged it as Labeled Faces in the Wild (LFW).

          Since then the LFW dataset has become one of the most widely used datasets used for evaluating face recognition algorithms. The associated research paper “Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments” has been cited 996 times reaching 45 different countries throughout the world.

          The faces come from news stories and are mostly celebrities from the entertainment industry, politicians, and villains. It’s a sampling of current affairs and breaking news that has come to pass. The images, detached from their original context now server a new purpose: to train, evaluate, and improve facial recognition.

          As the most widely used facial recognition dataset, it can be said that each individual in LFW has, in a small way, contributed to the current state of the art in facial recognition surveillance. John Cusack, Julianne Moore, Barry Bonds, Osama bin Laden, and even Moby are amongst these biometric pillars, exemplar faces provided the visual dimensions of a new computer vision future.

          -

          From Aaron Eckhart to Zydrunas Ilgauskas. A small sampling of the LFW dataset

          -

          In addition to commercial use as an evaluation tool, alll of the faces in LFW dataset are prepackaged into a popular machine learning code framework called scikit-learn.

          +
          From Aaron Eckhart to Zydrunas Ilgauskas. A small sampling of the LFW dataset
          From Aaron Eckhart to Zydrunas Ilgauskas. A small sampling of the LFW dataset

          In addition to commercial use as an evaluation tool, alll of the faces in LFW dataset are prepackaged into a popular machine learning code framework called scikit-learn.

          Usage

          #!/usr/bin/python
           from matplotlib import plt
          @@ -51,11 +49,39 @@ lfw_person = lfw_people[0]
           plt.imshow(lfw_person)
           

          Commercial Use

          -

          The LFW dataset is used by numerous companies for benchmarking algorithms and in some cases training. According to the benchmarking results page 1 provided by the authors, over 2 dozen companies have contributed their benchmark results

          -

          (Jules: this load the assets/lfw_vendor_results.csv)

          -

          In benchmarking, companies use a dataset to evaluate their algorithms which are typically trained on other data. After training, researchers will use LFW as a benchmark to compare results with other algorithms.

          +

          The LFW dataset is used by numerous companies for benchmarking algorithms and in some cases training. According to the benchmarking results page [^lfw_results] provided by the authors, over 2 dozen companies have contributed their benchmark results

          +
          load file: lfw_commercial_use.csv
          +name_display,company_url,example_url,country,description
          +
          + + + + + + + + + + + + + + + + + + + + + + + + +
          CompanyCountryIndustries
          AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
          AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
          AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
          +

          Add 2-4 screenshots of companies mentioning LFW here

          +
          ReadSense
          ReadSense

          In benchmarking, companies use a dataset to evaluate their algorithms which are typically trained on other data. After training, researchers will use LFW as a benchmark to compare results with other algorithms.

          For example, Baidu (est. net worth $13B) uses LFW to report results for their "Targeting Ultimate Accuracy: Face Recognition via Deep Embedding". According to the three Baidu researchers who produced the paper:

          -

          LFW has been the most popular evaluation benchmark for face recognition, and played a very important role in facilitating the face recognition society to improve algorithm. 2.

          +

          LFW has been the most popular evaluation benchmark for face recognition, and played a very important role in facilitating the face recognition society to improve algorithm. 1.

          Citations

          @@ -84,10 +110,12 @@ plt.imshow(lfw_person)

          Conclusion

          The LFW face recognition training and evaluation dataset is a historically important face dataset as it was the first popular dataset to be created entirely from Internet images, paving the way for a global trend towards downloading anyone’s face from the Internet and adding it to a dataset. As will be evident with other datasets, LFW’s approach has now become the norm.

          For all the 5,000 people in this datasets, their face is forever a part of facial recognition history. It would be impossible to remove anyone from the dataset because it is so ubiquitous. For their rest of the lives and forever after, these 5,000 people will continue to be used for training facial recognition surveillance.

          +

          Notes

          +

          According to BiometricUpdate.com2, LFW is "the most widely used evaluation set in the field of facial recognition, LFW attracts a few dozen teams from around the globe including Google, Facebook, Microsoft Research Asia, Baidu, Tencent, SenseTime, Face++ and Chinese University of Hong Kong."


          -
          1. "LFW Results". Accessed Dec 3, 2018. http://vis-www.cs.umass.edu/lfw/results.html

          2. -
          3. "Chinese tourist town uses face recognition as an entry pass". New Scientist. November 17, 2016. https://www.newscientist.com/article/2113176-chinese-tourist-town-uses-face-recognition-as-an-entry-pass/

          4. +
            1. "Chinese tourist town uses face recognition as an entry pass". New Scientist. November 17, 2016. https://www.newscientist.com/article/2113176-chinese-tourist-town-uses-face-recognition-as-an-entry-pass/

            2. +
            3. "PING AN Tech facial recognition receives high score in latest LFW test results". https://www.biometricupdate.com/201702/ping-an-tech-facial-recognition-receives-high-score-in-latest-lfw-test-results

          diff --git a/site/public/datasets/vgg_faces2/index.html b/site/public/datasets/vgg_faces2/index.html index 19efbbbc..ee353047 100644 --- a/site/public/datasets/vgg_faces2/index.html +++ b/site/public/datasets/vgg_faces2/index.html @@ -20,7 +20,7 @@ @@ -34,8 +34,7 @@
        • Search available Searchable
        • Labeled Faces in The Wild is amongst the most widely used facial recognition training datasets in the world and is the first dataset of its kind to be created entirely from Internet photos. It includes 13,233 images of 5,749 people downloaded from the Internet, otherwise referred to by researchers as “The Wild”.

          -

          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.

          -

          INTRO

          +
          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.
          Eight out of 5,749 people in the Labeled Faces in the Wild dataset. The face recognition training dataset is created entirely from photos downloaded from the Internet.

          INTRO

          It began in 2002. Researchers at University of Massachusetts Amherst were developing algorithms for facial recognition and they needed more data. Between 2002-2004 they scraped Yahoo News for images of public figures. Two years later they cleaned up the dataset and repackaged it as Labeled Faces in the Wild (LFW).

          Since then the LFW dataset has become one of the most widely used datasets used for evaluating face recognition algorithms. The associated research paper “Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments” has been cited 996 times reaching 45 different countries throughout the world.

          The faces come from news stories and are mostly celebrities from the entertainment industry, politicians, and villains. It’s a sampling of current affairs and breaking news that has come to pass. The images, detached from their original context now server a new purpose: to train, evaluate, and improve facial recognition.

          diff --git a/site/public/index.html b/site/public/index.html new file mode 100644 index 00000000..ea3dc24c --- /dev/null +++ b/site/public/index.html @@ -0,0 +1,63 @@ + + + + MegaPixels + + + + + + + + + +
          + + +
          MegaPixels
          + The Darkside of Datasets +
          + +
          +
          + +

          MegaPixels is an art project that explores the dark side of face recognition training data and the future of computer vision

          +

          Made by Adam Harvey in partnership with Mozilla.
          +Read more about MegaPixels

          +

          [Explore Datasets] [Explore Algorithms]

          +

          Facial Recognition Datasets

          +

          Regular Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

          +

          Summary

          +
            +
          • 275 datasets found
          • +
          • Created between the years 1993-2018
          • +
          • Smallest dataset: 20 images
          • +
          • Largest dataset: 10,000,000 images
          • +
          • Highest resolution faces: 450x500 (Unconstrained College Students)
          • +
          • Lowest resolution faces: 16x20 pixels (QMUL SurvFace)
          • +
          +
          + +
          + + + + \ No newline at end of file diff --git a/site/public/research/01_from_1_to_100_pixels/index.html b/site/public/research/01_from_1_to_100_pixels/index.html new file mode 100644 index 00000000..90f142e9 --- /dev/null +++ b/site/public/research/01_from_1_to_100_pixels/index.html @@ -0,0 +1,101 @@ + + + + MegaPixels + + + + + + + + + +
          + + +
          MegaPixels
          + The Darkside of Datasets +
          + +
          +
          + +
          +

          From 1 to 100 Pixels

          +
          +
          +
          Posted
          +
          2018-12-04
          +
          +
          +
          By
          +
          Adam Harvey
          +
          + +
          +
          + +

          High resolution insights from low resolution data

          +

          This post will be about the meaning of "face". How do people define it? How to biometrics researchers define it? How has it changed during the last decade.

          +

          What can you know from a very small amount of information?

          +
            +
          • 1 pixel grayscale
          • +
          • 2x2 pixels grayscale, font example
          • +
          • 4x4 pixels
          • +
          • 8x8 yotta yotta
          • +
          • 5x7 face recognition
          • +
          • 12x16 activity recognition
          • +
          • 6/5 (up to 124/106) pixels in height/width, and the average is 24/20 for QMUL SurvFace
          • +
          • 20x16 tiny faces paper
          • +
          • 20x20 MNIST handwritten images http://yann.lecun.com/exdb/mnist/
          • +
          • 24x24 haarcascade detector idealized images
          • +
          • 32x32 CIFAR image dataset
          • +
          • 40x40 can do emotion detection, face recognition at scale, 3d modeling of the face. include datasets with faces at this resolution including pedestrian.
          • +
          • need more material from 60-100
          • +
          • 60x60 show how texture emerges and pupils, eye color, higher resolution of features and compare to lower resolution faces
          • +
          • 100x100 0.5% of one Instagram photo
          • +
          +

          Find specific cases of facial resolution being used in legal cases, forensic investigations, or military footage

          +

          Research

          +
            +
          • NIST report on sres states several resolutions
          • +
          • "Results show that the tested face recognition systems yielded similar performance for query sets with eye-to-eye distance from 60 pixels to 30 pixels" 1
          • +
          +
          +
          +
          1. NIST 906932. Performance Assessment of Face Recognition Using Super-Resolution. Shuowen Hu, Robert Maschal, S. Susan Young, Tsai Hong Hong, Jonathon P. Phillips

          2. +
          +
          +
          + +
          +

          MORE RESEARCH

          +
          + +
          +
          + +
          + + + + \ No newline at end of file diff --git a/site/templates/research.html b/site/templates/research.html index 4263f204..22e494c2 100644 --- a/site/templates/research.html +++ b/site/templates/research.html @@ -10,7 +10,7 @@
          By
          -
          {{ metadata.authors }}
          +
          {{ metadata.author_html }}
          {% if metadata.datasets %}
          Datasets
          -- cgit v1.2.3-70-g09d2