Tài liệu này cung cấp hướng dẫn chi tiết để sử dụng hệ thống bảo vệ hình ảnh Hope-AD.
# Clone kho mã nguồn
git clone https://github.com/quachdang122-jpg/Hope-AD.git
cd Hope-AD
# Cài đặt các thư viện phụ thuộc
pip install -r requirements.txt
# Kiểm tra các module
cd Hope/Hope
python tests/test_image_hashing.pycd Hope/Hope
dotnet build
dotnet runModule nhiễu đối kháng sử dụng các cuộc tấn công ngữ nghĩa dựa trên CLIP để bảo vệ hình ảnh khỏi sự phát hiện của AI.
from adversarial_perturbations import protect_image
# Bảo vệ một hình ảnh với cài đặt mặc định
protect_image(
input_path="input.jpg",
output_path="protected.jpg",
intensity=0.30, # 0.0 đến 1.0
iterations=150 # Nhiều vòng lặp hơn = bảo vệ mạnh hơn
)from adversarial_perturbations import AdversarialProtector
# Tạo một thể hiện bộ bảo vệ
protector = AdversarialProtector(
intensity=0.25, # Thấp hơn = tinh tế hơn
iterations=100, # Ít hơn = nhanh hơn
verbose=True # Hiển thị tiến trình
)
# Bảo vệ hình ảnh
success = protector.protect_image("input.jpg", "output.jpg")
if success:
print("Image protected successfully!")-
intensity (float, 0.0-1.0): Độ lớn nhiễu tối đa
- 0.1-0.2: Rất tinh tế, tác động thị giác tối thiểu
- 0.25-0.35: Phạm vi khuyến nghị (mặc định: 0.30)
- 0.4+: Bảo vệ mạnh, có thể nhìn thấy
-
iterations (int): Số lần lặp tối ưu hóa
- 50-100: Nhanh, bảo vệ vừa phải
- 150: Khuyến nghị (mặc định)
- 200+: Bảo vệ mạnh nhất, chậm hơn
-
verbose (bool): Hiển thị thông báo tiến trình (mặc định: True)
# Sử dụng engine.py
python engine.py \
--input image.jpg \
--output protected.jpg \
--intensity 0.30 \
--iterations 150
# Với mô tả mục tiêu
python engine.py \
--input image.jpg \
--output protected.jpg \
--target "artistic portrait" \
--intensity 0.30 \
--iterations 150
# Sử dụng file mục tiêu (cho văn bản UTF-8)
python engine.py \
--input image.jpg \
--output protected.jpg \
--target-file target.txt \
--intensity 0.30 \
--iterations 150- Sử Dụng GPU: GPU hỗ trợ CUDA tăng tốc độ 10-20 lần
- Xử Lý Hàng Loạt (Batch Processing): Tái sử dụng thể hiện
AdversarialProtector - Cân Bằng: Cường độ/số vòng lặp cao hơn = bảo vệ mạnh hơn nhưng xử lý lâu hơn
Module băm hình ảnh cung cấp băm nhận thức (perceptual hashing) để phát hiện sửa đổi và xác minh tính xác thực.
from image_hashing import ImageHasher, compare_hashes
# Tạo bộ băm
hasher = ImageHasher()
# Tính toán mã băm
hash1 = hasher.perceptual_hash("image1.jpg")
hash2 = hasher.perceptual_hash("image2.jpg")
# So sánh
similarity = compare_hashes(hash1, hash2)
print(f"Similarity: {similarity:.2%}")from image_hashing import ImageHasher
hasher = ImageHasher()
# Average Hash (nhanh nhất)
ahash = hasher.average_hash("image.jpg")
# Difference Hash (dựa trên gradient)
dhash = hasher.difference_hash("image.jpg")
# Perceptual Hash (mạnh mẽ nhất, khuyến nghị)
phash = hasher.perceptual_hash("image.jpg")
# Hoặc sử dụng phương pháp chung
hash_value = hasher.compute_hash("image.jpg", method="phash")from image_hashing import save_hash_to_file, verify_image
# Lưu mã băm vào file
save_hash_to_file("original.jpg", "original_hash.json", method="phash")
# Sau đó, xác minh một hình ảnh khác
is_match, similarity = verify_image("test.jpg", "original_hash.json", threshold=0.9)
if is_match:
print(f"Images match! Similarity: {similarity:.2%}")
else:
print(f"Images different. Similarity: {similarity:.2%}")from image_hashing import ImageHasher, is_similar
hasher = ImageHasher()
images = ["img1.jpg", "img2.jpg", "img3.jpg", "img4.jpg"]
# Tính toán mã băm
hashes = {img: hasher.perceptual_hash(img) for img in images}
# Tìm các bản sao
for img1 in images:
for img2 in images:
if img1 < img2: # Tránh so sánh trùng lặp
if is_similar(hashes[img1], hashes[img2], threshold=0.95):
print(f"Duplicates found: {img1} and {img2}")# Tính toán mã băm
python image_hashing.py --input image.jpg --output hash.json --method phash
# So sánh hai hình ảnh
python image_hashing.py --input image1.jpg --compare image2.jpg --method phash
# Xác minh với mã băm đã lưu trữ
python image_hashing.py --input test.jpg --verify original_hash.json --threshold 0.9| Phương Pháp | Tốc Độ | Độ Bền Vững | Trường Hợp Sử Dụng |
|---|---|---|---|
| aHash | Nhanh nhất | Thấp | So sánh nhanh |
| dHash | Nhanh | Trung bình | Phát hiện cạnh |
| pHash | Chậm hơn | Cao | Sử dụng trong sản xuất (khuyến nghị) |
Thêm hình mờ động, tùy chỉnh vào hình ảnh.
using ArtShield;
// Hình mờ mặc định
var config = ImageWatermarking.CreateDefaultConfig();
ImageWatermarking.AddWatermark("input.jpg", "watermarked.jpg", config);using ArtShield;
using System.Windows.Media;
var config = new ImageWatermarking.WatermarkConfig
{
Text = "© 2024 My Company",
FontSize = 48,
FontFamily = "Arial",
Opacity = 0.4,
Position = ImageWatermarking.WatermarkPosition.BottomRight,
Color = Colors.Yellow,
RotationAngle = 0,
Tiled = false
};
ImageWatermarking.AddWatermark("input.jpg", "watermarked.jpg", config);// Tạo hình mờ lặp lại để bảo vệ tối đa
var config = ImageWatermarking.CreateTiledConfig("CONFIDENTIAL");
ImageWatermarking.AddWatermark("input.jpg", "protected.jpg", config);// Mặc định: Giữa, chéo, bán trong suốt
var defaultConfig = ImageWatermarking.CreateDefaultConfig();
// Lặp lại (Tiled): Mẫu lặp lại trên toàn bộ hình ảnh
var tiledConfig = ImageWatermarking.CreateTiledConfig("PROTECTED");
// Góc: Hình mờ nhỏ, tinh tế ở góc
var cornerConfig = ImageWatermarking.CreateCornerConfig("© 2024");- TopLeft (Trên Trái), TopCenter (Trên Giữa), TopRight (Trên Phải)
- CenterLeft (Giữa Trái), Center (Giữa), CenterRight (Giữa Phải)
- BottomLeft (Dưới Trái), BottomCenter (Dưới Giữa), BottomRight (Dưới Phải)
var config = new ImageWatermarking.WatermarkConfig
{
Text = "Your Text", // Văn bản hình mờ
FontSize = 36, // Kích thước font chữ theo điểm (points)
FontFamily = "Arial", // Tên họ font chữ
Opacity = 0.3, // 0.0 (trong suốt) đến 1.0 (mờ đục)
Color = Colors.White, // Màu văn bản
RotationAngle = -45, // Góc xoay theo độ
Tiled = false, // Đơn lẻ hoặc lặp lại
TileSpacing = 0.25, // Khoảng cách cho dạng lặp (0.0-1.0)
Position = WatermarkPosition.Center
};Triển khai băm hình ảnh nhận thức bằng C#.
using ArtShield;
var hasher = new ImageHashing();
// Tính toán mã băm
string hash1 = hasher.ComputeHash("image1.jpg", ImageHashing.HashMethod.PerceptualHash);
string hash2 = hasher.ComputeHash("image2.jpg", ImageHashing.HashMethod.PerceptualHash);
// So sánh
double similarity = ImageHashing.CompareHashes(hash1, hash2);
Console.WriteLine($"Similarity: {similarity:P}");var hasher = new ImageHashing();
// Lưu mã băm
hasher.SaveHashToFile("original.jpg", "hash.json", ImageHashing.HashMethod.PerceptualHash);
// Xác minh sau này
var (isMatch, similarity) = hasher.VerifyImage("test.jpg", "hash.json", threshold: 0.9);
Console.WriteLine($"Match: {isMatch}, Similarity: {similarity:P}");var hasher = new ImageHashing();
// Average Hash
string ahash = hasher.ComputeHash("image.jpg", ImageHashing.HashMethod.AverageHash);
// Difference Hash
string dhash = hasher.ComputeHash("image.jpg", ImageHashing.HashMethod.DifferenceHash);
// Perceptual Hash (khuyến nghị)
string phash = hasher.ComputeHash("image.jpg", ImageHashing.HashMethod.PerceptualHash);Ứng dụng Hope-AD WPF cung cấp giao diện người dùng đồ họa (GUI) thân thiện để bảo vệ hình ảnh.
- Chọn Hình Ảnh: Duyệt và chọn hình ảnh
- Cài Đặt Bảo Vệ:
- Mô tả mục tiêu (tùy chọn)
- Thanh trượt Cường độ (0.0 - 1.0)
- Thanh trượt Vòng lặp (50 - 300)
- Xem Trước (Preview): Xem hình ảnh gốc và hình ảnh đã bảo vệ
- Theo Dõi Tiến Trình: Cập nhật trạng thái theo thời gian thực
- Khởi chạy ứng dụng:
dotnet run - Nhấp vào "Select Image" để chọn một hình ảnh
- (Tùy chọn) Nhập mô tả mục tiêu
- Điều chỉnh thanh trượt cường độ và số vòng lặp
- Nhấp vào "Run Protection"
- Chờ quá trình xử lý (2-4 phút trên CPU, 10-30 giây trên GPU)
- Xem hình ảnh đã bảo vệ trong phần xem trước
- Hình ảnh đã bảo vệ được lưu với hậu tố
_protected
Biến môi trường:
ENGINE_PYTHON: Đường dẫn đến trình thông dịch Python (mặc định:python)
-
Bảo Vệ Đa Lớp: Kết hợp nhiều kỹ thuật
Original → Adversarial Perturbations → Watermark → Hash -
Lựa Chọn Cường Độ:
- Hình ảnh công khai: 0.25-0.30 (tinh tế)
- Hình ảnh nhạy cảm: 0.30-0.35 (cân bằng)
- Hình ảnh giá trị cao: 0.35-0.40 (mạnh)
-
Chiến Lược Hình Mờ (Watermark):
- Hình mờ lặp lại (Tiled watermarks): Bảo vệ tối đa, dễ nhìn thấy hơn
- Hình mờ đơn lẻ: Ít xâm lấn hơn, dễ bị cắt hơn
- Kết hợp: Hình mờ lặp lại tinh tế + hình mờ đơn lẻ nổi bật
-
Lưu Trữ Mã Băm (Hash Storage):
- Lưu trữ mã băm riêng biệt với hình ảnh
- Sử dụng băm nhận thức (pHash) để có kết quả tốt nhất
- Đặt ngưỡng dựa trên trường hợp sử dụng (0.85-0.95)
-
Xử Lý Hàng Loạt (Batch Processing):
protector = AdversarialProtector(intensity=0.30, iterations=150) for image in image_list: protector.protect_image(image, f"protected_{image}")
-
Tăng Tốc GPU:
- Cài đặt bộ công cụ CUDA
- Cài đặt PyTorch với hỗ trợ CUDA
- Xử lý nhanh hơn 10-20 lần
-
Xử Lý Song Song:
from concurrent.futures import ThreadPoolExecutor def protect(img): protector = AdversarialProtector() return protector.protect_image(img, f"protected_{img}") with ThreadPoolExecutor(max_workers=4) as executor: results = executor.map(protect, images)
- Không Tuyệt Đối: Không có biện pháp bảo vệ nào hiệu quả 100%
- Cập Nhật Thường Xuyên: Các mô hình AI phát triển; cập nhật các phương pháp bảo vệ
- Theo Dõi Sử Dụng: Theo dõi nơi các hình ảnh được bảo vệ được sử dụng
- Bảo Vệ Pháp Lý: Sử dụng hình mờ như bằng chứng pháp lý
- Nhiều Lớp: Không dựa vào một phương pháp bảo vệ duy nhất
Lỗi: ERROR: CLIP required!
Giải Pháp:
pip install git+[https://github.com/openai/CLIP.git](https://github.com/openai/CLIP.git)Lỗi: CUDA out of memory
Giải Pháp:
- Giảm kích thước hình ảnh trước khi xử lý
- Sử dụng CPU thay thế: Đặt
CUDA_VISIBLE_DEVICES=-1 - Đóng các ứng dụng GPU khác
Vấn Đề: Xử lý mất hơn 5 phút mỗi hình ảnh
Giải Pháp:
- Giảm số vòng lặp (100 thay vì 150)
- Giảm cường độ một chút
- Cân nhắc tăng tốc GPU
- Sử dụng hình ảnh nhỏ hơn (thay đổi kích thước trước khi bảo vệ)
Lỗi: To build a project targeting Windows...
Giải Pháp: Điều này là bình thường. Ứng dụng WPF yêu cầu Windows. Sử dụng module Python trên Linux/Mac.
Vấn Đề: Hình mờ quá tinh tế hoặc không hiển thị
Giải Pháp:
- Tăng độ mờ (0.3 → 0.5)
- Sử dụng màu tối hơn/sáng hơn để tạo độ tương phản
- Tăng kích thước font chữ
- Thử hình mờ lặp lại (tiled watermark)
Vấn Đề: Hình ảnh tương tự có điểm tương đồng thấp
Giải Pháp:
- Sử dụng băm nhận thức (pHash) thay vì aHash/dHash
- Kiểm tra xem hình ảnh có khác biệt đáng kể không
- Điều chỉnh ngưỡng (giảm xuống 0.85 hoặc 0.80)
- Xác minh hình ảnh ở định dạng chính xác (RGB, không phải RGBA)
- Kiểm tra
README.mdđể biết thông tin cơ bản - Xem lại mã ví dụ trong thư mục
examples/ - Chạy bộ kiểm thử:
python tests/test_image_hashing.py - Kiểm tra các vấn đề tương tự trên GitHub issues
- Tạo một issue mới với thông báo lỗi chi tiết
- README.md: Tổng quan và bắt đầu nhanh
- examples/: Các script và mã ví dụ
- tests/: Các script kiểm thử để xác thực
- requirements.txt: Các thư viện phụ thuộc Python
- Python: 3.8+
- .NET: 10.0+
- PyTorch: 2.0+
- CLIP: Phiên bản mới nhất từ GitHub
Cập Nhật Lần Cuối: 2024-12-11