Skip to content

Commit 40c4bd4

Browse files
committed
some update
1 parent 20cc8a2 commit 40c4bd4

File tree

5 files changed

+123
-6
lines changed

5 files changed

+123
-6
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

33
plugins {
4-
id 'com.android.application' version '8.9.0' apply false
5-
id 'com.android.library' version '8.9.0' apply false
4+
id 'com.android.application' version '8.9.1' apply false
5+
id 'com.android.library' version '8.9.1' apply false
66
id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
77
id 'com.google.devtools.ksp' version '2.0.10-1.0.24' apply false
88
id 'org.jetbrains.kotlin.plugin.compose' version '2.0.20' apply false

buildSrc/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ dependencies {
99
// implementation localGroovy()
1010
implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.1.0'
1111
// 添加了这个,就可以看 Android Gradle 插件的源码了
12-
implementation 'com.android.tools.build:gradle-api:8.9.0'
12+
implementation 'com.android.tools.build:gradle-api:8.9.1'
1313
// implementation "org.jetbrains.kotlin:kotlin-script-runtime:1.3.40"
1414
implementation 'com.google.code.gson:gson:2.11.0'
1515
implementation 'com.android.tools:common:31.7.3'
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.engineer.ai
2+
3+
import android.os.Bundle
4+
import android.util.Log
5+
import androidx.appcompat.app.AppCompatActivity
6+
import com.engineer.ai.databinding.ActivityGanBinding
7+
import com.engineer.ai.databinding.ActivityTansStyleBinding
8+
import com.engineer.ai.util.AndroidAssetsFileUtil
9+
import com.engineer.ai.util.Utils
10+
import org.pytorch.IValue
11+
import org.pytorch.LiteModuleLoader
12+
import org.pytorch.Module
13+
import org.pytorch.Tensor
14+
import java.util.Random
15+
16+
17+
class FastStyleTransActivity : AppCompatActivity() {
18+
private val TAG = "FastStyleTransActivity"
19+
private lateinit var module: Module
20+
private val modelName = "dcgan.pt"
21+
22+
private lateinit var viewBinding: ActivityTansStyleBinding
23+
override fun onCreate(savedInstanceState: Bundle?) {
24+
super.onCreate(savedInstanceState)
25+
viewBinding = ActivityTansStyleBinding.inflate(layoutInflater)
26+
setContentView(viewBinding.root)
27+
initModel()
28+
viewBinding.gen.setOnClickListener {
29+
genImage()
30+
}
31+
}
32+
33+
private fun genImage() {
34+
val zDim = intArrayOf(1, 100)
35+
val outDims = intArrayOf(64, 64, 3)
36+
Log.d(TAG, zDim.contentToString())
37+
val z = FloatArray(zDim[0] * zDim[1])
38+
Log.d(TAG, "z = ${z.contentToString()}")
39+
val rand = Random()
40+
// 生成高斯随机数
41+
for (c in 0 until zDim[0] * zDim[1]) {
42+
z[c] = rand.nextGaussian().toFloat()
43+
}
44+
Log.d(TAG, "z = ${z.contentToString()}")
45+
val shape = longArrayOf(1, 100)
46+
val tensor = Tensor.fromBlob(z, shape)
47+
Log.d(TAG, tensor.dataAsFloatArray.contentToString())
48+
val resultT = module.forward(IValue.from(tensor)).toTensor()
49+
val resultArray = resultT.dataAsFloatArray
50+
val resultImg = Array(outDims[0]) { Array(outDims[1]) { FloatArray(outDims[2]) { 0.0f } } }
51+
var index = 0
52+
// 根据输出的一维数组,解析生成的卡通图像
53+
for (j in 0 until outDims[2]) {
54+
for (k in 0 until outDims[0]) {
55+
for (m in 0 until outDims[1]) {
56+
resultImg[k][m][j] = resultArray[index] * 127.5f + 127.5f
57+
index++
58+
}
59+
}
60+
}
61+
val bitmap = Utils.getBitmap(resultImg, outDims)
62+
viewBinding.transResult.setImageBitmap(bitmap)
63+
}
64+
65+
private fun initModel() {
66+
module = LiteModuleLoader.load(AndroidAssetsFileUtil.assetFilePath(this, modelName))
67+
}
68+
69+
70+
}

subs/ai/src/main/java/com/engineer/ai/GanActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.engineer.ai
22

33
import android.os.Bundle
4+
import android.util.Log
45
import androidx.appcompat.app.AppCompatActivity
56
import com.engineer.ai.databinding.ActivityGanBinding
67
import com.engineer.ai.util.AndroidAssetsFileUtil
@@ -13,6 +14,7 @@ import java.util.Random
1314

1415

1516
class GanActivity : AppCompatActivity() {
17+
private val TAG = "GanActivity"
1618
private lateinit var module: Module
1719
private val modelName = "dcgan.pt"
1820

@@ -30,17 +32,18 @@ class GanActivity : AppCompatActivity() {
3032
private fun genImage() {
3133
val zDim = intArrayOf(1, 100)
3234
val outDims = intArrayOf(64, 64, 3)
33-
35+
Log.d(TAG, zDim.contentToString())
3436
val z = FloatArray(zDim[0] * zDim[1])
35-
37+
Log.d(TAG,"z = ${z.contentToString()}")
3638
val rand = Random()
3739
// 生成高斯随机数
3840
for (c in 0 until zDim[0] * zDim[1]) {
3941
z[c] = rand.nextGaussian().toFloat()
4042
}
43+
Log.d(TAG,"z = ${z.contentToString()}")
4144
val shape = longArrayOf(1, 100)
4245
val tensor = Tensor.fromBlob(z, shape)
43-
46+
Log.d(TAG, tensor.dataAsFloatArray.contentToString())
4447
val resultT = module.forward(IValue.from(tensor)).toTensor()
4548
val resultArray = resultT.dataAsFloatArray
4649
val resultImg = Array(outDims[0]) { Array(outDims[1]) { FloatArray(outDims[2]) { 0.0f } } }
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent">
6+
7+
8+
<Button
9+
android:id="@+id/pick_img"
10+
android:layout_width="0dp"
11+
android:layout_height="wrap_content"
12+
android:layout_margin="5dp"
13+
android:text="pick_img"
14+
app:layout_constraintBottom_toBottomOf="parent"
15+
app:layout_constraintEnd_toStartOf="@id/gen"
16+
app:layout_constraintStart_toStartOf="parent" />
17+
18+
<Button
19+
android:id="@+id/gen"
20+
android:layout_width="0dp"
21+
android:layout_height="wrap_content"
22+
android:layout_margin="5dp"
23+
android:text="gan_gen"
24+
app:layout_constraintBottom_toBottomOf="parent"
25+
app:layout_constraintEnd_toEndOf="parent"
26+
app:layout_constraintStart_toEndOf="@id/pick_img" />
27+
28+
<ImageView
29+
android:id="@+id/pick_result"
30+
android:layout_width="match_parent"
31+
android:layout_height="0dp"
32+
android:layout_margin="5dp"
33+
app:layout_constraintBottom_toTopOf="@id/trans_result"
34+
app:layout_constraintTop_toTopOf="parent" />
35+
36+
<ImageView
37+
android:id="@+id/trans_result"
38+
android:layout_width="match_parent"
39+
android:layout_height="0dp"
40+
android:layout_margin="5dp"
41+
app:layout_constraintBottom_toTopOf="@id/gen"
42+
app:layout_constraintTop_toBottomOf="@id/pick_result" />
43+
44+
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)