diff --git a/sdk/attack_pp.py b/sdk/attack_pp.py index 74a5cb8..011ff9b 100644 --- a/sdk/attack_pp.py +++ b/sdk/attack_pp.py @@ -62,6 +62,27 @@ def process_img(img_path="",image_shape=[3,224,224]): return img +def tensor2img(tensor): + + mean = [0.485, 0.456, 0.406] + std = [0.229, 0.224, 0.225] + + img_mean = np.array(mean).reshape((3, 1, 1)) + img_std = np.array(std).reshape((3, 1, 1)) + + img=tensor.copy() + + img *= img_std + img += img_mean + + img = np.round(img*255) + img = np.clip(img,0,255) + + img=img[0].astype(np.uint8) + + img = img.transpose(1, 2, 0) + + return img """ Explaining and Harnessing Adversarial Examples, I. Goodfellow et al., ICLR 2015 diff --git a/sdk_demo.ipynb b/sdk_demo.ipynb index 6b0a4fc..886f259 100644 --- a/sdk_demo.ipynb +++ b/sdk_demo.ipynb @@ -46,45 +46,6 @@ "from sdk.attack_pp import *\n" ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\nuse_gpu=False\\n\\nx = fluid.layers.data(name=\"x\", shape=[1] ,dtype=\\'int32\\')\\nx.stop_gradient=False\\ny = x*3\\n\\ng = fluid.backward.gradients(targets=y, inputs=[x])[0]\\n\\nplace = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()\\nexe = fluid.Executor(place)\\nexe.run(fluid.default_startup_program())\\n\\nresult = exe.run(fluid.default_main_program(),\\n fetch_list=[y.name],\\n feed={ \\'x\\':np.array([1]).astype(\\'int32\\') })\\n#result = result[0][0]\\n\\nprint(result)\\n'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"\"\"\n", - "use_gpu=False\n", - "\n", - "x = fluid.layers.data(name=\"x\", shape=[1] ,dtype='int32')\n", - "x.stop_gradient=False\n", - "y = x*3\n", - "\n", - "g = fluid.backward.gradients(targets=y, inputs=[x])[0]\n", - "\n", - "place = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()\n", - "exe = fluid.Executor(place)\n", - "exe.run(fluid.default_startup_program())\n", - "\n", - "result = exe.run(fluid.default_main_program(),\n", - " fetch_list=[y.name],\n", - " feed={ 'x':np.array([1]).astype('int32') })\n", - "#result = result[0][0]\n", - "\n", - "print(result)\n", - "\"\"\"" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -94,15 +55,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#http://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/howto/prepare_data/index_cn.html\n", "\n", - "#fluid.default_startup_program().random_seed = 1\n", - "#fluid.default_main_program().random_seed = 1\n", - "\n", "class_dim=1000\n", "image_shape=[3,224,224]\n", "model_name=\"resnet50\"\n", @@ -112,6 +70,7 @@ "\n", "adv_program=fluid.Program()\n", "\n", + "#完成初始化\n", "with fluid.program_guard(adv_program):\n", " input_layer = fluid.layers.data(name='image', shape=image_shape, dtype='float32')\n", " #设置为可以计算梯度\n", @@ -133,6 +92,7 @@ "#创建测试用评估模式\n", "eval_program = adv_program.clone(for_test=True)\n", "\n", + "#定义梯度\n", "with fluid.program_guard(adv_program):\n", " label = fluid.layers.data(name=\"label\", shape=[1] ,dtype='int64')\n", " loss = fluid.layers.cross_entropy(input=out, label=label)\n", @@ -149,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -178,7 +138,10 @@ "\n", "pred_label = np.argsort(result)[::-1][:TOPK]\n", "print(\"Test-score: {0}, class {1}\".format(result[pred_label], pred_label))\n", - "sys.stdout.flush()" + "sys.stdout.flush()\n", + "\n", + "\n", + "o_img=tensor2img(img)\n" ] }, { @@ -190,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -209,7 +172,8 @@ "#init_prog(fluid.default_main_program())\n", "\n", "#生成对抗样本\n", - "adv=FGSM(adv_program=adv_program,eval_program=eval_program,gradients=gradients,o=img,input_layer=input_layer,output_layer=out,step_size=16.0/256.0,isTarget=False,target_label=0)\n", + "adv=FGSM(adv_program=adv_program,eval_program=eval_program,gradients=gradients,o=img,\n", + " input_layer=input_layer,output_layer=out,step_size=16.0/256.0,isTarget=False,target_label=0)\n", "\n", " \n", "result = exe.run(eval_program,\n", @@ -232,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ {