Zhuang's Diary

言之有物,持之以恒

https://www.entrupy.com是高价值商品验真的核心技术企业,其论文链接请点击这里 ==>link 此文章发表于2017年,文章内容总结如下:

目前高价值商品验真的技术手段

  1. holograms 全息成像:百度百科链接
  2. barcode and RFID supply integrity

以上技术存在安全缺陷,标签可以被去除、伪造、复制或者被转移至另一件商品上。

  1. taggants 标识剂,例如荧光
  2. PUFs(Physical Unclonable Functions) : 物理不可克隆函数按照实现方法可分为非电子PUF、模拟电路PUF和数字电路PUF。

但是4、5方法都过于昂贵,市场难以接受。

本论文讲述的技术手段

  1. 可便携的、大广角、高倍率的放大镜,并可与手机相结合使用。使用此放大镜为商品拍摄大面积的高清照片。放大倍数为200-300x,精度为1cm*1cm。图片同时配有商品特性的文字说明。

  2. AI算法为商品分类

    2.1 SVM/kNN分类器。此分类器被历史的、有保证的商品数据所训练,也就是真品图片并带有对特性的文字说明作为训练数据。正确率达到95%。

    2.2 CNN网络。作为分类器进一步分类。正确率达到98%。

  3. 经过300万件商品的训练。包括了20类皮革,120类面料,10类纸质材料,10类秋衣。

    1
    2
    3
    4
    5
    6
    7
    (1)皮革:我们从20种类型中捕获了30,000个显微图像皮革。皮革样品来自Restoration
    硬件,纽约的Abea Leather和制革厂Haas来自法国,该皮革供应大部分顶级皮革
    全球品牌。
    (2)面料:我们从120种面料中提取了6,000张图像。织物样品可从Fabric Science套件中获得。
    (3)塑料:我们从15种塑料中提取了2000张图像表面。
    (4)纸张:我们从10种纸张中提取了2000张图像。纸样品来自Neenah纸。
    (5)球衣:我们从2款正品NFL球衣中提取了500张图像。从NFL商店购买;并获得2件假NFL,来自街头小贩。

此技术手段的优点

  1. 无需埋设任何标识,无需改变商品材料和构造,是一种非侵入式的技术手段
  2. 无需对商品一一建立标识。本技术手段可以对复制品进行识别。
  3. 可以对新商品进行检验。
  4. 本技术手段经济适用,容易被市场所接受。

结论

SVM better than kNN CNN
Leather皮革 93.8% 98.1%
Fabric面料 92% 98.3%
Plastic塑料 92.5% 95.3%
paper纸质 94.3% 95.1%
Jersey球衣 94% 98.8%

BTW

经过笔者的尝试,单纯使用类似于opencv之类图像处理的方法可以解决商品是否是同一件商品,例如在出口到港后的检证。

  • 知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。

  • 知识图谱在辅助搜索、辅助智能问答、自然语言理解、大数据分析、推荐计算、物联网设备互联、可解释性人工智能等多个方面展现出应用价值。

  • 目前国内外典型的知识图谱项目

    1) Schema.org

    采用互联网众包的方式生成和手机高质量的知识图谱数据。Schema 提供了一个词语本体,用于描述这些语义标签。目前已经包括600多个类和 900。。 多个关系。超过 31%的网页和 1200 万家网站已经使用了 Schema 发布语义化的链接数据。其他还包括 Siri、Cortana 等。中文 Schema 网址。

    2) Wikidata

    Wikidata 2012 年启动,目标是构建一个免费开放、多语言、任何人或者机器都可以编辑修改的大规模链接知识库。支持以三元组为基础的只是条目自由编辑,例如“<地球,地表面积是,五亿平方公里>”的三元组陈述。截至 2018 年,已经包含超过 5000 万条知识条目。

    3) ConceptNet5

    ConceptNet5版本已经包含有2800万关系描述。与Cyc相比,ConceptNet采用了非形式化、更加接近自然语言的描述,而不是像Cyc那样采用形式化的谓词逻辑。与链接数据和谷歌知识图谱相比,ConceptNet比较侧重于词与词之间的关系。从这个角度看,ConceptNet更加接近于WordNet,但是又比WordNet包含的关系类型多。此外,ConceptNet完全免费开放,并支持多种语言,另附github 开源地址-here

  • 技术方向
    如下图:

使用https://github.com/OpenZeppelin/openzeppelin-contracts 中的

openzeppelin-contracts/contracts/token/ERC20/TokenTimelock.sol,为每个人放置 release 的时间和数量。

使用说明整理文档==>link

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
pragma solidity ^0.5.0;

import "./SafeERC20.sol";

/**
* @dev A token holder contract that will allow a beneficiary to extract the
* tokens after a given release time.
*
* Useful for simple vesting schedules like "advisors get all of their tokens
* after 1 year".
*
* For a more complete vesting schedule, see {TokenVesting}.
*/
contract TokenTimelock {
using SafeERC20 for IERC20;

// ERC20 basic token contract being held
IERC20 private _token;

// beneficiary of tokens after they are released
address private _beneficiary;

// timestamp when token release is enabled
uint256 private _releaseTime;

constructor (IERC20 token, address beneficiary, uint256 releaseTime) public {
// solhint-disable-next-line not-rely-on-time
require(releaseTime > block.timestamp, "TokenTimelock: release time is before current time");
_token = token;
_beneficiary = beneficiary;
_releaseTime = releaseTime;
}

/**
* @return the token being held.
*/
function token() public view returns (IERC20) {
return _token;
}

/**
* @return the beneficiary of the tokens.
*/
function beneficiary() public view returns (address) {
return _beneficiary;
}

/**
* @return the time when the tokens are released.
*/
function releaseTime() public view returns (uint256) {
return _releaseTime;
}

/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function release() public {
// solhint-disable-next-line not-rely-on-time
require(block.timestamp >= _releaseTime, "TokenTimelock: current time is before release time");

uint256 amount = _token.balanceOf(address(this));
require(amount > 0, "TokenTimelock: no tokens to release");

_token.safeTransfer(_beneficiary, amount);
}
}